웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
공지사항|일기장 3장 write_ok.php //간단한 입력쿼리문//수정
2003.10.08 23:28
안녕하세요, 오랜만에 다음진도군요-_-;
시험기간이라 많이 바빴습니다, 죄송합니다.;;
지난 시간까지- 글쓰기폼인 write.php 에 대해 설명하고 코딩까지 해 보았습니다
이번 시간에는- 글쓰기 폼에서 데이터를 받아서 직접적으로 mysql DB 에 입력하는 write_ok.php 를 만들어보겠습니다.
\ write_ok.php ///////////
mysql 쿼리문을 통하여 write.php 에서 받아온 데이터들을 db에 저장해 보도록 합시다.
사용될 쿼리문은
mysql_query("insert into 테이블명(필드1,필드2,,,) values(필드1내용,필드2내용,,,)") or die(mysql_error());
이거랍니다.
필드명에는 우리가 먼저번에 만든 number , name , password , subject , memo , writetime 필드입니다
password 필드에는 mysql 내의 password 함수를 사용하여 암호화합시다
(password 함수를 사용하게되면 역암호화가 불가능해지므로, 같은 문자를 암호화하여 일치하게하는 방법으로 글의 수정,삭제권한을 부여할 수 있습니다)
password('$변수명')
위와같이 사용되고 우리는
password('$password')
라고 하면되겠습니다.
그러므로, 쿼리를 꾸며보면
mysql_query("insert into nd_$db(number,name,password,subject,memo,writetime) values('','$name',password('$password'),'$subject','$memo','$writetime') or die(mysql_error());
이것입니다.; nd_$db 는 브라우져 주소에서
*.php?db='디비명' 형식으로 써줬을때 '디비명' 을 $db 에 대입하여 nd_ '디비명' 이 되는것이랍니다.
(복잡하죠-ㅁ-;)
아 그리고, php 는 위에서 아래로 읽어오기때문에, 같은이름으로 변수를 정의했을때, 아랫쪽에있는 함수를 쓰게됩니다
(블록 ({}) 사이의 문장이 아닐때,)
쿼리문에서 오류가 있었던것 같습니다. password() 부분에 작은 따옴표가 씌여져있네요, 쿼리를 따와서 수정하는 과정에서 오류가 있었나봅니다. 수정을 하였습니다. 위의 쿼리로하면 정상적으로 동작할 것입니다. values 에 값을 입력할때, [함수,숫자] 에는 작은 따옴표를 붙히지 않습니다. 문자값을 입력할때만 작은 따옴표(') 를 입력하세요.
시간을 구하는것에 대해서 말씀드리겠습니다
시간을 구하는것은 서버로부터 알려진 시간을 변수 $writetime에 저장하도록하겠습니다.
시간을 불러오는 함수는
time();입니다.
date() 안에 Y,M,D 등을 사용하여 년-월-날짜등의 표현도 가능하지만, 아무런 옵션도 주어지지 않을때, 난해한 숫자로 저장이됩니다, 물론 이렇게 저장된 숫자는 나중에 Y,M,D 형으로 고칠 수 있습니다.
이제는 php 를 코딩해봅시다.
우선적으로 php 의 모든내용은 '< ?' 과 '? >' 사이에 들어가야한다는것을 아시죠?
시작합시다.
P.S>> php 코딩을할때는 나모같은 위지윅 에디터말고, 에디트플러스라던가 메모장을 이용하세요.;
-------------------------------------------------------------------------------------------------------
<?
include "dbconn.php"; //DB정보가 들어있는 파일을 인클루드 합시다. 그래야 DB 에 프로그램이 접속할수있어요.
//자자.-_-편법글쓰기를 막읍시다. write.php 파일을 거치지 않을경우 에러납니다~
if(getenv("REQUEST_METHOD") == 'GET' ) {
error("정상적인 방법으로 글을 작성하세요");
exit;
}
/**********************************************************
이제 write.php 파일에서 받아온 데이터들을 변수에 저장시킵니다. addslashes 라는것을 사용해야되요,
addslashes는 ',", 등의 앞에 백슬래쉬()를 붙혀 이건 PHP에 쓰이는 문자들이 아닙니다, 를 알려주는거죠
***********************************************************/
$name = addslashes($name);
$password = addslashes($password);
$subject = addslashes($subject);
$memo = addslashes($memo);
//시간을 구합시다
$writetime=time();
//이제 mysql DB 에 입력해 볼까요
mysql_query("INSERT INTO `nd_$db` ( `number` , `name` , `subject` , `memo` , `password` , `writetime` )
VALUES ('', '$name', '$subject', '$memo', PASSWORD( '$password' ) , '$writetime');") or die (mysql_error());
//만약 정상적으로 입력되었다면, 메시지 띄웁니다.
echo "정상적으로 입력되었습니다";
?>
-----------------------------------------------------------------------------------------------------------
주소창으로
http://주소/경로/write.php?db=디비명
하고 들어가셔서
글을 쓰고 입력하기 를 눌러보세요
만약에 "정상적으로 입력되었습니다" 라는 메시지가 나오면, 입력완료~
아, 혹시 멀티기능을 쓰지않고 한곳에만 사용하고싶을때는 대부분의 문서에 인클루드되는
dbconn.php 파일에다가
$db="디비명";
이라는 구문을 추가해주면 된답니다!
이 프로젝트는 http://secre.vip.sh 에서 진행되고,
http://nzeo.com 에서 2회분 늦게 연재됩니다.
본내용들의 모든 완성 파일들은 http://secre.vip.sh 의 work-더 나은 프로젝트를 위해! 에 올려져 있습니다.
시험기간이라 많이 바빴습니다, 죄송합니다.;;
지난 시간까지- 글쓰기폼인 write.php 에 대해 설명하고 코딩까지 해 보았습니다
이번 시간에는- 글쓰기 폼에서 데이터를 받아서 직접적으로 mysql DB 에 입력하는 write_ok.php 를 만들어보겠습니다.
\ write_ok.php ///////////
mysql 쿼리문을 통하여 write.php 에서 받아온 데이터들을 db에 저장해 보도록 합시다.
사용될 쿼리문은
mysql_query("insert into 테이블명(필드1,필드2,,,) values(필드1내용,필드2내용,,,)") or die(mysql_error());
이거랍니다.
필드명에는 우리가 먼저번에 만든 number , name , password , subject , memo , writetime 필드입니다
password 필드에는 mysql 내의 password 함수를 사용하여 암호화합시다
(password 함수를 사용하게되면 역암호화가 불가능해지므로, 같은 문자를 암호화하여 일치하게하는 방법으로 글의 수정,삭제권한을 부여할 수 있습니다)
password('$변수명')
위와같이 사용되고 우리는
password('$password')
라고 하면되겠습니다.
그러므로, 쿼리를 꾸며보면
mysql_query("insert into nd_$db(number,name,password,subject,memo,writetime) values('','$name',password('$password'),'$subject','$memo','$writetime') or die(mysql_error());
이것입니다.; nd_$db 는 브라우져 주소에서
*.php?db='디비명' 형식으로 써줬을때 '디비명' 을 $db 에 대입하여 nd_ '디비명' 이 되는것이랍니다.
(복잡하죠-ㅁ-;)
아 그리고, php 는 위에서 아래로 읽어오기때문에, 같은이름으로 변수를 정의했을때, 아랫쪽에있는 함수를 쓰게됩니다
(블록 ({}) 사이의 문장이 아닐때,)
쿼리문에서 오류가 있었던것 같습니다. password() 부분에 작은 따옴표가 씌여져있네요, 쿼리를 따와서 수정하는 과정에서 오류가 있었나봅니다. 수정을 하였습니다. 위의 쿼리로하면 정상적으로 동작할 것입니다. values 에 값을 입력할때, [함수,숫자] 에는 작은 따옴표를 붙히지 않습니다. 문자값을 입력할때만 작은 따옴표(') 를 입력하세요.
시간을 구하는것에 대해서 말씀드리겠습니다
시간을 구하는것은 서버로부터 알려진 시간을 변수 $writetime에 저장하도록하겠습니다.
시간을 불러오는 함수는
time();입니다.
date() 안에 Y,M,D 등을 사용하여 년-월-날짜등의 표현도 가능하지만, 아무런 옵션도 주어지지 않을때, 난해한 숫자로 저장이됩니다, 물론 이렇게 저장된 숫자는 나중에 Y,M,D 형으로 고칠 수 있습니다.
이제는 php 를 코딩해봅시다.
우선적으로 php 의 모든내용은 '< ?' 과 '? >' 사이에 들어가야한다는것을 아시죠?
시작합시다.
P.S>> php 코딩을할때는 나모같은 위지윅 에디터말고, 에디트플러스라던가 메모장을 이용하세요.;
-------------------------------------------------------------------------------------------------------
<?
include "dbconn.php"; //DB정보가 들어있는 파일을 인클루드 합시다. 그래야 DB 에 프로그램이 접속할수있어요.
//자자.-_-편법글쓰기를 막읍시다. write.php 파일을 거치지 않을경우 에러납니다~
if(getenv("REQUEST_METHOD") == 'GET' ) {
error("정상적인 방법으로 글을 작성하세요");
exit;
}
/**********************************************************
이제 write.php 파일에서 받아온 데이터들을 변수에 저장시킵니다. addslashes 라는것을 사용해야되요,
addslashes는 ',", 등의 앞에 백슬래쉬()를 붙혀 이건 PHP에 쓰이는 문자들이 아닙니다, 를 알려주는거죠
***********************************************************/
$name = addslashes($name);
$password = addslashes($password);
$subject = addslashes($subject);
$memo = addslashes($memo);
//시간을 구합시다
$writetime=time();
//이제 mysql DB 에 입력해 볼까요
mysql_query("INSERT INTO `nd_$db` ( `number` , `name` , `subject` , `memo` , `password` , `writetime` )
VALUES ('', '$name', '$subject', '$memo', PASSWORD( '$password' ) , '$writetime');") or die (mysql_error());
//만약 정상적으로 입력되었다면, 메시지 띄웁니다.
echo "정상적으로 입력되었습니다";
?>
-----------------------------------------------------------------------------------------------------------
주소창으로
http://주소/경로/write.php?db=디비명
하고 들어가셔서
글을 쓰고 입력하기 를 눌러보세요
만약에 "정상적으로 입력되었습니다" 라는 메시지가 나오면, 입력완료~
아, 혹시 멀티기능을 쓰지않고 한곳에만 사용하고싶을때는 대부분의 문서에 인클루드되는
dbconn.php 파일에다가
$db="디비명";
이라는 구문을 추가해주면 된답니다!
이 프로젝트는 http://secre.vip.sh 에서 진행되고,
http://nzeo.com 에서 2회분 늦게 연재됩니다.
본내용들의 모든 완성 파일들은 http://secre.vip.sh 의 work-더 나은 프로젝트를 위해! 에 올려져 있습니다.
댓글 5
-
버찌소년
2003.10.09 11:35
시루바님, 좋은 강좌 잘 봤습니다. 다음 강좌가 기대됩니다 ^^ -
씨파개
2003.10.12 19:33
암호화를 할때에는 MD5 방식이나 crypt 방식이 좋다고 합니다.
그리고 제가 입주한 호스팅업체에는 password(); 함수가 먹히지 않습니다.;;;ㅡㅡ; -
TheMics
2003.10.12 21:44
어차피 손실암호화로 복호 불가능인만큼 어떤게 낫다고 하기는...
password가 안먹히는 mysql이면 도대체 버전이 몇인지;
http://www.mysql.com/doc/en/Miscellaneous_functions.html -
impre
2003.10.20 05:10
mysql_query("insert into nd_$db(number,name,password,subject,memo,writetime) values('','$name','password('$password')','$subject','$memo','$writetime') or die(mysql_error());
password() 함수가 안 먹는다기 보다..
위에서처럼 하면 에러날껄요..아마...
'password('+ '$password')'
양끝쪽의 작은 따음표 없애줘야 할겁니다. password('$password') 로요..
mysql_query("insert into nd_$db(number,name,password,subject,memo,writetime) values('','$name',password('$password'),'+ '$subject','$memo','$writetime') or die(mysql_error()); -
시루바
2003.10.21 17:12
죄송합니다;; 타이핑중에 오류가 있었네요.
(아래에 소스에는 정확하게 쓰여져있던...)
수정하였습니다.
계속 많은 지적 부탁드립니다 (__);;