웹마스터 팁

http://nzeo.com/bbs/zboard.php?id=p_study&page=5&&no=233&_____________설명:上편입니다...먼저 클릭해서 읽어보세여!험험...오랜만에 글쓸려니까;;


근 4개월만이네여...제가 글쓴지도...4개월전에 약속을 지키러 돌아왔습니다;;


http://nzeo.com/bbs/zboard.php?id=p_study&page=5&&no=233


위 강의부터 읽어주시구여..읽어보셨어도 다 잊어버릴 쯤 됐으니 다시 읽어봐 주세여;;정말 작심삼일이 되엇네여;;


반년은 묵은 낡은 소스를 가지고 PHP를 배워보는 겁니다;;전편에서 이어지구여...


초보분들 위주로 만들어졌으니 고수분들은 답답하실겝니다;;


자자...풀소스부터 다시 볼까여...싫다구..?^ㅡ_-


<?
global $dbid, $dbpw, $dbname

$dbid = "디비 아디";
$dbpw="비번";
$dbname = "디비 이름";

function mics_msg($mics_msg_message) {
    //에러메시지
    echo("<script>window.alert('$mics_msg_messagennjukiyo.net');history.back();</script>");
    exit;
}

function mics_dbconn() {
/* 디비에
    접속
        합니다~
    */
    global $connect;
    if(!$connect) {
        $connect = mysql_connect("localhost",$dbid,$dbpw) or mics_msg("MySQL 접속 실패");
        @mysql_select_db($dbname,$connect);
    }
}



=======================
지난번에 여기까지 했었죠
=======================




if(!$keyword) echo("검색할 자료를 입력해주십시오 : <form name='find' method='get' action='$PHP_SELF'><input type='text' name='keyword' size='20' maxlenght='20'> <input type='submit' value=' -> '><br> - 와일드 카드 검색: %와 _를 사용할 수 있습니다.(% : 모든 문자열, _ : 1개의 문자)</form><a href='http://jukiyo.net/sitemap.php'>사이트맵</a></center>");
elseif(eregi("GO ","",$keyword)) {
    eregi_replace("GO ","",$keyword);
    echo "<meta http-equiv='refresh' content='0;url=go.php?keyword=${keyword}'>";
} else {
    $keyword = strtolower($keyword);
    mics_dbconn();
    $result = mysql_query("select * from mics_find where keyword like '%$keyword%'");
    if(!mysql_num_rows($result)) {
        echo("키워드 ${keyword}에 대한 자료가 없습니다. 검색할 자료를 입력해주십시오 : <form name='find' method='get' action='$PHP_SELF'><input type='text' name='keyword' size='20' maxlenght='20'> <input type='submit' value=' -> '><br> - 와일드 카드 검색: %와 _를 사용할 수 있습니다.(% : 모든 문자열, _ : 1개의 문자)</form><a href='http://jukiyo.net/sitemap.php'>사이트맵</a>");
    } else {
        $total = mysql_num_rows($result);
        echo("키워드 ${keyword}에 대한 자료가 ${total}개 검색되었습니다.<p> <p>");
        for($i = 0;$i < $total;$i++) {
            $vno = $i + 1;
            $keyword = mysql_result($result,$i,1);
            $title = mysql_result($result,$i,2);
            $url = mysql_result($result,$i,3);
            echo("<b> [$vno] <a href='$url'>$title</a></b><br>   키워드: $keyword<br>");
        }
        echo("<p><form name='find' method='get' action='$PHP_SELF'>다른 자료 검색: <input type='text' name='keyword' size='20' maxlenght='20'> <input type='submit' value=' -> '></form><p><a href='http://jukiyo.net/sitemap.php'>사이트맵</a>");
    }
}
?>


이 소스의 개념은 기초적인 검색입니다..mysql을 이용한 간단한 단어검색이져(엔지오 게시판 검색을 생각하시면)...페이지나누기도 없고 자연어검색은 더더욱 안됩니다ㅡㅡ;;;


이제 계속 설명드리겟습니다...


if(!$keyword) echo("검색할 자료를 입력해주십시오 : <form name='find' method='get' action='$PHP_SELF'><input type='text'+ ' name='keyword' size='20' maxlenght='20'> <input type='submit' value=' -> '><br> - 와일드 카드 검색: %와 _를 사용할 수 있습니다.(% : 모든 문자열, _ : 1개의 문자)</form><a href='http://jukiyo.net/sitemap.php'>사이트맵</a></center>");

▷이건 좀 기네여...나눠볼까여...

if(!$keyword)

▷if문입니다...조건식이라는건 설명 드렷구여...변수 앞에 !가 붙어 잇는데 이것은 '$keyword변수에 값이 없다면'이란 뜻이 됩니다..!가 없다면 '$keyword변수에 값이 있다면'이 되겟져...그니까 !는 NOT,부정의 뜻입니다.

▷여기에는 if문에 {}가 없네여...조건문 다음에 실행문이 1줄이면 중괄호가 필요없이 한줄에 스면 됩니다.
예)
if($a) {
     echo("가");
}
if($a) { echo("가"); }
if($a) echo("가");
는 모두 같고 작동됩니다.하지만
if($a) echo("가"); echo("나");
처럼 2줄은 안됩니다.


echo("검색할 자료를 입력해주십시오 : <form name='find' method='get' action='$PHP_SELF'>
<input type='text' name='keyword' size='20' maxlenght='20'>
<input type='submit' value=' -> '><br>
- 와일드 카드 검색: %와 _를 사용할 수 있습니다.(% : 모든 문자열, _ : 1개의 문자)</form>
<a href='http://jukiyo.net/sitemap.php'>사이트맵</a></center>");

▷좀 기니까 줄을 나눳습니다...echo문 안에 폼이 들어가 잇습니다. 이것은 HTML로 따로 배우셔야 되겠구여;;;echo문 안에서는 위처럼 작은따옴표를 쓰셔야 합니다.따옴표를 안써도 되구여...

▷와일드 카드란 말이 나왔는데 이게 뭘까요? 와일드카드는 문자들을 대체하는 만능문자입니다.윈도우에서 파일을 검색할때 *과 ?를 쓰듯이 말이죠(참고로 *은 모든 문자,?는 한 글자를 뜻합니다).mysql에서 %는 모든 문자,_는 한 단어를 뜻합니다.이것도 예를 들어보죠.

아래 파일들이 있습니다.                               이걸 검색해보죠.
abc                                                           a%를 검색하면 -> abc,addf,aook검색
addf                                                           a%f를 검색하면 -> addf
dsfj                                                            a_f를 검색하면 -> ayf
aok                                                           _o%를 검색하면 -> aok
ayf                                                            d___를 검색하면 ->dsfj
tyol
dek

이런 식입니다.원래 이런 검색을 구현할 때는 저런 특수 문자 앞에 를 붙여줘 일반 문자로 인식하게 해야 정석입니다. 그렇게 해야만 검색 문장에 특수문자를 넣을 수 있죠. 하지만 이번에는 그냥 와일드카드로 사용하도록 하였습니다.

▷나머지 구문들은 모두 HTML입니다.


elseif(eregi("GO ",$keyword)) {
    eregi_replace("GO ","",$keyword);
    echo "<meta http-equiv='refresh' content='0;url=go.php?keyword=${keyword}'>";
} else {

▷아까 if문이 있었으니 elseif문이 가능합니다.아,elseif문이 뭔지 설명을 해야겠군요.그보다 먼저 else문이 뭔지를 아는게 좋습니다. else문은 앞의 if문의 조건이 거짓일 경우 실행하게 됩니다. elseif문은 if문이 거짓일때 실행하는 것은 같지만 if문이 거짓임은 물론이고 따로 스스로의 조건을 만족시켜야 실행됩니다. 여기서는 앞의 if문이 거짓($keyword가 존재)이고 eregi("GO ","",$keyword)가 참이어야 하겠죠.

▷eregi라는 함수가 나왔습니다. 이 함수는 문자열을 체크하는 함수로, 정규표현식과 관련이 있습니다. 정규표현식에 대하서는 다른 강의를 보시구여;;간단한 설명만 하겠습니다. eregi함수는 변수 내에 특정 문자열이 잇으면 참,없으면 거짓을 반환합니다.사용번은 eregi("검사할 문자열",$변수);입니다. 대소문자는 가리지 않고, 대소문자를 구분하려면 ereg함수를 씁니다.

▷다시 elseif문을 보면 elseif문 안에 함수가 들어있습니다. 함수 안에 함수가 들어가는것은 가능하구여, 그 함수의 리턴값을 변수에 저장해 쓰는 것과 같습니다.예를 들면
if(eregi("GO ",$keyword)) {

$a = eregi("GO ",$keyword);
if($a) {
는 같은 결과를 냅니다. 이 방법은 당연히 리턴값이 있는 함수만 사용 가능하고, 이렇게 쓸 때에는 ;를 붙이지 않습니다.

▷eregi_replace함수는 변수의 값은 바꿔줍니다.eregi함수와 비슷하게 eregi_replace("원래 문자열","바꿀 문자열",$변수);로 씁니다.멱시 대소문자를 가리려면 ereg_replace함수를 씁니다.

▷그 다음줄은 값을 넘겨주는 것입니다. 다른 PHP파일에 변수를 넘겨주려면 원래는 히든폼을 이용해 JS로 전송하는게 원칙이지만, 간단하게 URL로 값을 넘겼습니다. 히든폼에 대해서는 설명하기 난해하니 넘어가고;;URL로 값을 넘기다니 무슨 소리일까요? PHP에서는 파일 뒤에 ?172=abc처럼 넘어오는 것 모두가 변수가 됩니다. 예를 들어 a.php?abc=123이라는 주소를 치면 a.php안에서는 저절로 $abc = 123;이 수행됩니다.제로보드 게시판 뒤에 길게 있는 것도 이것이며, 폼에서 get방식으로 전송해도 이렇게 됩니다.





오는 中편은 여기까지구여, 이번에는 진짜로 빠른 시일 내에 하편 올리겟습니다. 이만여~
제목 글쓴이 날짜
echo를 처음사용하시는 초보들에게... [10] ZipShin 2002.07.06
배경그림과 글자색상,배경색상을 지정해주는 php스크립트 [2] ZipShin 2002.07.07
php소스를 윈도우 실행파일로 만드는 컴파일러 있나요? [2] 소우리 2002.07.08
[PHP]간단한 로그인페이지 만들기 [15] ZipShin 2002.07.09
[추천 팁] 웹 브라우저가 한글인지 영문인지(다른 언어인지) 자동 인식하기... [1] 박용구 2002.07.10
PHP 와 Flash 를 이용해 즉석복권을 만들어 보자. [2] 다솜아빠 2002.07.10
[추천 팁] 파일의 최종접근시간과 파일의 수정시간을 알려주는 함수 [2] ssukai 2002.07.10
[추천 팁] 폴더내의 파일중에서 특정정보만 뽑아오기. [2] M2Vis 2002.07.12
PHP를 리눅스 셸 프로그래밍할때 PHP파일 의 경로.. [2] 실버 2002.07.18
원격침입과 도스공격이 가능한 PHP 취약점 [11] JunYa™ 2002.07.24
(삽질완료) 다중도메인, 접속도메인따라 경로결정 [1] nrhythm 2002.07.25
[초보자] 자기 계정에 APM,Perl,PHP이 지원하는지 알아보기. [5] ZipShin 2002.08.01
[Header 이용하기 #1] No-cache [1] )OsE= 2002.08.01
[Header 이용하기 #2] 파일 다운로드 )OsE= 2002.08.01
[Header 이용하기 #3] 페이지 이동 [2] )OsE= 2002.08.01
[초간단 팁] 프로그래밍 스타일, 절대 경로 [8] )OsE= 2002.08.02
Apache나 IIS등 웹서버 설치 않하고도 PHP 실행해보는 방법 [9] 차카게살자 2002.08.02
TheMics의 예제와 함께하는 PHP기초(中) [1] TheMics 2002.08.05
[클래스] 클래스 #1 [8] file )OsE= 2002.08.07
쓸모있는 PHP Tip (다 알구 있을런지 모르겠네여..^^) [1] 이삐아이(체리) 2002.08.09