6. Php

6.1. 노프레임 만드는법

머리단과 바닥에 들어갈 화일을 작성하고 나서 본 화일에서 불러서 사용하면 된다.

main.php
 
<?php 

include("include/header.ph"); 

print_html("main_htm/top.htm"); 

echo("<br><br>본문 내용이 들어가는 곳입니다.<br>"); 
echo("내용은 별거 없습니다.<br>"); 
echo("프레임을 나누지 않고, 본문 내용을 사용하는 것입니다.<br>"); 
echo("본문내용을 서브 함수를 이용해서 만들면 됩니다.<br>"); 
echo("다음 작업을 위해 쉬운 내용을 아주 어렵게 했습니다.<br>"); 
echo("이내용을 잘 이해하면 여러면에서 도움이 될것입니다.<br>"); 

print_html("main_htm/bottom.htm"); 

?> 
  

include/header.ph
 
<? 
/* 한라인 출력해주는 함수 */ 
function print_html($filename)
{ 
	$fp = fopen( $filename, "r" ); 

	while(!feof($fp)) 
	{ 
		$contents .= fgets($fp, 100); 
	} 
           
  fclose($fp); 
  echo "$contents"; 
} 
?> 

	

main_htm/top.htm
<html> 
<head> 
<title>나라비의 방</title> 
<style TYPE="TEXT/CSS"> 
  A:link {color: blue; text-decoration:none} 
  A:visited {color: navy; text-decoration:none} 
  A:hover {color: red; text-decoration:underline;} 
</style> 
</head> 

<body> 
  <table border="0" width = "600" cellpadding="0" cellspacing="0"> 
    <tr><td width="589" colspan="2" bgcolor="#f9cd8a">나라비의 방을 찾아주셔서 대단히 감사합니다.</td></tr> 
    <tr> 
      <tr> 
        <td width = "120" valign="top" colspan="0"> 
          <table width = "120" border="0"> 
            <tr><td width="120" bgcolor="#b5d490"><p> <b><br>홈으로</b></font></td></tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">나라비 소개</font></td></tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">나리비 소식</font></td></tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">Windows NT</font></td></tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">시(김소월)</font></td> </tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">시(기타)</font></td> </tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">질문과답변</font></td> </tr> 
            <tr><td width="120" bgcolor="#c3f298"><p> <font size="2">다른곳</font></td> </tr> 
          </table> 
       <td valign="top" align="center" width = "480">  
	

main_htm/bottom.htm
       </td> 
     </tr> 
   <tr> 
     <td colspan="2" align="center" valign="top">Copyright ⓒ 1999 nalabi.Mail to<a href="mailto:nalabi@hananet.net">webmaster</a></td> 
   </tr> 
  </table> 
</body> 
</html>

  

6.2. 이름을 입력받아 mysql에 저장하고 출력하기

  1. 테이블 작성 (mysql DBNAME < test.tbl)
    create table test ( 
      no int default '0' not null auto_increment, 
      name char(10), 
      regdate date, 
      PRIMARY KEY(no) 
    );
           

  2. name_input.php 작성
    <html> 
    <body> 
    
    <form name="form" method="get" action="write_db.php3"> 
    <inputtype="text" name="name" size="10"> 
    <input type="submit" name="ok" value="보내기">
    </form> 
    
    </body>
    </html>
           

  3. write_db.php 작성
    <? 
    // MySQL 서버에 연결한다 
    $connect=mysql_connect( "localhost", "root", "") or die( "SQL server에 연결 할수 없습니다."); 
    
    $tbl_list = mysql_list_tables("kedu"); //데이타 베이스를 설정합니다. 
       
    $result = mysql_query("insert into test (name) values ('$name')"); 
    $result=mysql_query($result, $connect ); 
    
    $tbl_name="select * from test" ; 
    $result=mysql_query($tbl_name, $connect ); 
    
    $print=mysql_fetch_array($result); //테이블의 내용을 가져옴 
       
    $rows = mysql_num_rows($result); 
    
    echo("입력 되었습니다..<br>"); 
    
    for($i=0; $i< $rows;$i++) 
    { 
      echo("$print[name]<br>"); 
      $print=mysql_fetch_array($result); 
    } 
    ?> 
           

6.3. 이름을 입력받아 체크하고 mysql에 저장하고 출력하기

  1. 테이블 작성 ( mysql DBNAME < test.tbl )
    create table test ( 
      no int default '0' not null auto_increment, 
      id char(10), 
      name char(10), 
      pw char(8), 
      regdate date, 
      regtime time, 
      PRIMARY KEY(no) 
    ); 
           

  2. check_input.php 작성
    <html> 
    <body> 
    
    <table> 
    <form name="form" method="post" action=access_db.php3> 
        
       <tr> 
         <td>아이디 </td> 
         <td><INPUT name=id size=10> <br></td></tr> 
       <tr> 
         <td>이 름 </td> 
         <td><INPUT name=name size=10> <br></td></tr> 
       <tr> 
         <td>비밀번호</td> 
         <td><INPUT name=pw size=10 type=password> <br></td></tr> 
       <tr> 
         <td>비밀번호확인</td> 
         <td><INPUT name=pw2 size=10 type=password> </td></tr></table> 
    
       <input type="submit" value="보내기"> 
    
    </form> 
    </table> 
    
    </body> 
    </html> 
           

  3. access_db.php 작성
    <? 
    // MySQL 서버에 연결한다 
    $connect=mysql_connect( "localhost", "root", "") or die( "SQL server에 연결 할수 없습니다."); 
    $tbl_list= mysql_list_tables("kedu"); //데이타 베이스를 설정합니다. 
    
    if($id == "") { 
      echo "아이디를 입력 하지 않았습니다."; 
    } 
    elseif($name == ""){ 
      echo "이름을 입력 하지 않았습니다."; 
    } 
    elseif($pw == ""){ 
      print "비밀번호를 입력하지않았습니다.<br>"; 
      print "비밀번호를 입력 해주세요.<br>"; 
    } 
    elseif($pw2 == ""){ 
      print "비밀번호확인을 입력하지 않았습니다.<br>"; 
      print "비밀번호확인을 입력 해주세요.<br>"; 
    } 
    elseif($pw != $pw2) { 
      print "비밀번호가 같지 않습니다. <br>"; 
      print "비밀번호를 다시 입력 해주세요. <br>"; 
    } 
    else { 
      echo "$id가 입력 되었습니다..<br>"; 
    
      $date = date("y-m-d", time()); 
    
      $result = mysql_query("insert into test values ('','$id','$name','$pw','$date','$time')"); 
      $result=mysql_query($result, $connect); 
    
      $tbl_name="select *from test" ; 
      $result=mysql_query($tbl_name, $connect ); 
    
      $print=mysql_fetch_array($result); //테이블의 내용을 가져옴 
      
      $rows = mysql_num_rows($result); 
    
      for($i=0; $i< $rows;$i++) 
      { 
        echo("$print[id] $print[name] $print[pw] $print[regdate]<br>"); 
        $print=mysql_fetch_array($result); 
      } 
    } 
    ?> 
           

6.4. 테이블 출력 프로그램

테이블 출력 프로그램
<? 
// MySQL 서버에 연결한다 
$connect=mysql_connect( "localhost", "username", "") or die( "Unabletoconnect to SQL server"); 
//-------------------------------------------------------------------------- 
// 사용가능한 DB 목록을 검색 
//-------------------------------------------------------------------------- 
$dblist = mysql_listdbs(); //데이타 베이스 목록을 인식한다. 
$dbnum=mysql_num_rows($dblist); //데이타 베이스 갯수를 변수에 저장한다. 

for($i=0; $i < $dbnum; $i++) //데이타 베이스 갯수 만큼 
{ 
  $dbname[$i] = mysql_dbname($dblist, $i) ; //데이타 베이스 목록 이름을 변수에 저장한다. 
} 
echo "데이타 베이스 검색 내용 <br>"; 
for($i=0; $i < count($dbname); $i++)
{ //데이타 베이스 갯수 만큼 
  echo "$dbname[$i] <br>"; // 데이타 베이스 이름을 웹에 나타내준다. 
} 

//-------------------------------------------------------- 
// 사용가능한 테이블 목록을 검색 
//-------------------------------------------------------- 

$tbl_list = mysql_list_tables("board"); //데이타 베이스를 설정합니다. 
$tbl_num=mysql_num_rows($tbl_list); // 테이블 갯수를 변수에 저장합니다. 

echo "<br>데이타 테이블 검색 내용--> 테이블명,레코드수<br>"; 
for($i=0; $i < $tbl_num; $i++) //테이블 갯수 만큼 
{ 
  $tbl_name[$i] = mysql_tablename($tbl_list,$i) ; // 테이블 이름을 변수에 저장 
  $result[$i] = mysql_query( "SELECT * FROM $tbl_name[$i]"); //테이블의 내용을 변수에 저장 
  $rows[$i] = mysql_num_rows($result[$i]); // 테이블의 레코드 수를변수에 저장 
  echo "$tbl_name[$i], $rows[$i], $name <br>"; //테이블의 이름과, 레코드수를 웹에 출력 해줍니다. 
} 

//-------------------------------------------------------------------- 
// 사용가능한 테이블 내용을 출력
//-------------------------------------------------------------------- 

$tbl_name="select * from test" ; 

$result=mysql_query($tbl_name, $connect ); 
$print=mysql_fetch_array($result); //테이블의 내용을 가져옴 

echo("<br>테이블 내용을 화면에 출력 시켜 줍니다.<br>"); 
echo("이름, 나이, 전화번호부, 주소<br>"); 
echo("$print[name], $print[age], $print[tel], $print[addr]<br>"); 
   

//------------------------------------------------------------------------------- 
// 사용가능한 테이블 내용을 전체 출력
//------------------------------------------------------------------------------- 
$que_bbs="select * from test" ; 

$result=mysql_query($que_bbs,$connect ); 
$print=mysql_fetch_array($result); 
$rows = mysql_num_rows($result); 
echo("<br>테이블 내용 전체를 출력 시켜 줍니다.<br>"); 
echo("이름, 나이, 전화번호부, 주소<br>"); 
for($i=0; $i < $rows; $i++) 
{ 
  echo("$print[name], $print[age], $print[tel], $print[addr]<br>"); 
  $print=mysql_fetch_array($result); 
} 
?>
  

6.5. mysql_fetch_array 예제

mysql_free_result 를 해서 메모리를 풀어 준다.
<?

mysql_connect($db_server, $db_user, $db_pass);

$result = mysql_db_query("$db_name","select * from $table_name");

while($row = mysql_fetch_array($result)) 
{
  echo $row["no"];
  echo $row["name"];
  echo " ";
}

mysql_free_result($result);
?>
    

6.6. 이미지 화일 출력

<?
Header("Content-type: image/gif");

$file = "test.gif";

$size = 4096;
if (!($fp = fopen($file, "r"))) 
{ 
  die("could not open input"); 
  exit; 
} 

while ($data = fread($fp,$size)) 
{ 
  print($data); 
}	
?>
    

6.7. 달력 예제

달력 예제
<?

// 변수값 설정
$date=01; 
$day=01; 
$off=0; 

//년도 달 설정
$year = '2000'; 
$month = '01'; 


/*  Figure out how many days are in this month  */ 
while (checkdate($month,$date,$year)): 
    $date++; 
endwhile; 

// 메뉴 표시하기
echo "<table width='420' ><tr><td align = center>$year 년 $month 월</td></tr></table>";
echo "<table border='1'  width='420'><tr>"; 
echo "<td><b><font face='돋음'>월</font></b></td>"; 
echo "<td><b><font face='돋음'>화</font></b></td>"; 
echo "<td><b><font face='돋음'>수</font></b></td>"; 
echo "<td><b><font face='돋음'>목</font></b></td>"; 
echo "<td><b><font face='돋음'>금</font></b></td>"; 
echo "<td><b><font face='돋음'>토</font></b></td>"; 
echo "<td><b><font face='돋음'>일</font></b></td>"; 
echo "<tr>"; 

//루프 돌리기
while ($day<$date): 

/*  Figure what day of the week the first falls on and set the number of preceding and trailing cells accordingly  */ 
if ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Sunday') 
{ 
    echo "<td>$day</td>"; 
    $off = '01'; 
}  
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) ==  'Monday') 
{ 
    echo "<td></td><td>$day</td>"; 
    $off= '02'; 
}  
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) ==  'Tuesday') 
{ 
    echo "<td></td><td></td><td>$day</td>";
    $off= '03'; 
}  
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) ==  'Wednesday') 
{ 
    echo "<td></td><td></td><td></td><td>$day</td>"; 
    $off= '04'; 
}  
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) ==  'Thursday') 
{ 
    echo "<td></td><td></td><td></td><td></td><td>$day</td>"; 
    $off= '05'; 
}  
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) ==  'Friday') 
{ 
    echo "<td></td><td></td><td></td><td></td><td></td><td>$day</td>"; 
    $off= '06'; 
}  
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) ==  'Saturday') 
{ 
    echo "<td></td><td></td><td></td><td></td><td></td><td></td><td>$day</td>"; 
    $off= '07'; 
}  
else 
{ 
    echo "<td>$day</td>"; 
} 

//일 증가 시키기
$day++; 
$off++; 

if ($off>7) 
{ 
    echo "</tr><tr>"; 
    $off='01'; 
} else 
{ 
    echo ""; 
} 

endwhile; 

echo "</table>"; 

?>
    

6.8. 원하는 문자열 검색(ereg)

어떤 문자열 중에서 000 이라는 문자열의 레코드를 찾아 내기

표현 :

int ereg(string pattern, string string, array [regs]);

사용법 :

ereg(찾을 패턴, 검사할 문자열, 결과 배열);

예제 :

ereg("([0]{3})", $hash[code], $regs)

각각의 패턴은 ()로 정의를 합니다.

([0]{3})는 0의갯수가 3개로 나와야한다는 의미이다.

([0]{2, 3}) 0의 갯수가 2개 혹은 3개를 의미

([0-9]{2, 3}) 0에서 9까지의 숫자가 2자리 혹은 3자리를 의미

    
<?

$sth = mysql_query("select * from kangsa_type order by code");

while($hash = mysql_fetch_array($sth)) 
{ 
  if(ereg("([0]{3})", $hash[code], $regs)) 
  {
    print "$hash[typename]";
  }
}

?>
    

6.9. 인증 예제

  1. auth.sql 을 먼저 작성을한다.
    # MySQL dump 6.6
    #
    # Host: localhost    Database: myhome
    #--------------------------------------------------------
    # Server version    3.23.8-alpha
    
    #
    # Table structure for table 'auth'
    #
    CREATE TABLE auth (
      id char(10) DEFAULT '' NOT NULL,
      passwd char(10),
      name char(10),
      level int(11),
      PRIMARY KEY (id)
    );
    
    #
    # Dumping data for table 'auth'
    #
    
    INSERT INTO auth VALUES ('nalabi','xxxx','김용일',1);
            

  2. auth.ph 인증하는 부분을 작성한다.
    <?php 
    
    cfunction authenticate() 
    {
      Header( "HTTP/1.0 401 Unauthorized"); 
      $title= "Invalid Login";
    ?> 
      아이디와 암호가 필요합니다! 
    <?php  exit;
    } 
    
    if(!isset($PHP_AUTH_USER)) 
    { 
      authenticate(); 
    } else 
    { 
      mysql_pconnect( 'localhost', 'root', '') or die( "Unable to connect to SQL server");  // MySQL 서버 접속 
            
      mysql_select_db( "test") or die( "Unable to select database");              // DB 선택 
            
      $result = mysql_query( "select name , level from auth where id='$PHP_AUTH_USER'  and passwd='$PHP_AUTH_PW' ");
            
      if(!mysql_num_rows($result)) 
      {  
        authenticate(); 
      } 
      else  
      { 
        $userinfo = mysql_fetch_array($result); 
      } 
    } 
    ?> 
            

  3. test.php 프로그램 하는데서 인증하는 부분을 적용한다.
    <?
    
    include ("auth.ph");
    
    echo("어서 오십시요.");
    
    ?>
            

6.10. 커널 버전 나타내주는 함수

kernel.php
<?
function kernel() 
{
  $label = array("안정버전","개발버전","알파버전");
  $cmd = "/usr/bin/finger @ftp.kernel.org| cut -c59-66 | sed -e '/^$/d'";
  exec($cmd,$array,$rtn);

  for($i=0; $i < count($array); $i++) 
  {
    list($v1, $v2, $v3)  = split('[/.-]' , $array[$i]);
    $version = "v".$v1.".".$v2."/linux-".$array[$i].".tar.gz";
		
    $label[$i] = "<a href = ftp://ftp.kernel.org/pub/linux/kernel/".$version.">".$label[$i]." : ".$array[$i]."</a>";
  }

  return $label;
}

$label = kernel();

echo("$label[0] <br> $label[1] <br> $label[2]");
	
?>
    

6.11. 도메인 표시 함수

whois 프로그램이 깔려 있어야 합니다.

rpm -qa | grep whois
 
    whois-1.0.10-1
    

프로그램
 
<?
function domain($string) 
{
  $cmd = "whois $string";
  exec($cmd,$array,$rtn);

  for ($i=0; $i < count($array); $i++) 
  { 
    $rstring .= "$array[$i]";
  }
  return $rstring;
}

print domain("formail.org");

?>
    

6.12. 문자열 체크 함수 예제(ereg)

문자열에 영어 대소문자, 숫자만 오도록 하게 하는 함수입니다
<?
function check_id($string)
{
  $error_msg = "error";

  if (ereg("[^a-zA-Z0-9]", $string)) 
  {
    $error_msg = $error_msg;
    return $error_msg;
  }
  else 
  {
    return $string;
  }
}

$id1 = "abcd";
$id2 = "ZabCA";
$id3 = "9Zab01";
$id4 = "#ab.c.%";
$id5 = "한글";

$msg = check_id($id1);
print "id1 : $msg";

$msg = check_id($id2);
print "id2 : $msg";

$msg = check_id($id3);
print "id3 : $msg";

$msg = check_id($id4);
print "id4 : $msg";

$msg = check_id($id5);
print "id5 : $msg";
?>
    

6.13. ID체크 해주는 프로그램

  1. sql 문
    # MySQL dump 7.2
    #
    # Host: localhost    Database: test
    #--------------------------------------------------------
    # Server version	3.23.11-alpha
    
    #
    # Table structure for table 'login3'
    #
    CREATE TABLE login3 (
      nick char(10)
    );
    
    #
    # Dumping data for table 'login3'
    #
    
    INSERT INTO login3 VALUES ('나라비');
            

  2. test.php
    <?
    function add_error($why, $reason, $nick) 
    {
      print "$reason<br>";
    }
    
    $nick= "나라비";
    
    if (ereg ("[~!@#$%^&*()~|"/'+=-_:;,.<>]", $nick)) 
    { 
      $why="닉네임"; 
      $reason="닉네임에 특수문자가 있습니다."; 
      add_error($why,$reason,$nick); 
      exit; 
    } 
                         
    if(ereg(" ", $nick)) 
    { 
      $why="닉네임"; 
      $reason="닉네임에 공백이 있습니다."; 
      add_error($why,$reason,$nick); 
      exit; 
    } 
                         
    if($nick=="") 
    { 
      $head = "닉네임"; 
      $mesg = "닉네임이 없습니다."; 
      add_error($head,$mesg,$nick); 
    } 
    
    if(strlen($nick) < 2) 
    { 
      $head = "닉네임"; 
      $mesg = "닉네임은 특수문자를 제외한 2자이상으로 넣어주세요."; 
      add_error($head,$mesg,$nick); 
    } 
    
    $server = "localhost";
    $name = "root";
    $passwd = "";
    $dbname = "test";
    
    mysql_connect($server, $name, $passwd);
    mysql_select_db($dbname);
    
    
    $que1 = "select nick from login3 where nick='$nick'"; 
    $result= mysql_query($que1); 
    $current_row = mysql_fetch_row($result); 
                         
    if($current_row[0] == $nick) 
    { 
      $head = "닉네임"; 
      $reason = $nick."님이  이미 등록되어 있습니다."; 
      add_error($why,$reason,$nick); 
    } 
    else 
    {
    	print $nick;
    }
    ?>
            

6.14. 게시물 페이지 변경 예제

  1. sql 문
    # MySQL dump 6.4
    #
    # Host: localhost    Database: test
    #--------------------------------------------------------
    # Server version	3.23.5-alpha
    
    #
    # Table structure for table 'login'
    #
    CREATE TABLE login (
      id char(10) DEFAULT '' NOT NULL,
      reg_date char(10),
      nick char(10),
      passwd char(10),
      name char(10),
      user_num int(11),
      address char(10),
      phone char(10),
      email char(10),
      job char(10),
      PRIMARY KEY (id)
    );
    
    #
    # Dumping data for table 'login'
    #
    
    INSERT INTO login VALUES ('nalab1','','aaaa','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab2','','bbbb','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab3','','cccc','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab4','','dddd','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab5','','eeee','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab6','','ffff','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab7','','gggg','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab8','','hhhh','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nalab9','','iiii','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nala10','','jjjj','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nala11','','kkkk','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nala12','','llll','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nala13','','mmmm','bbbb','1111',0,'1','cccc','dddd','eeee');
    INSERT INTO login VALUES ('nala14','','nnnn','bbbb','1111',0,'1','cccc','dddd','eeee');
            

  2. test.php
    <?
    
    $server = "localhost";
    $name = "root";
    $passwd = "";
    $dbname = "test";
    
    mysql_connect($server, $name, $passwd);
    mysql_select_db($dbname);
    
    
    $page_scale=3; //한페쥐당 보여줄 숫자 번호[1][2][3] 
    $scale=2; // 한페이쥐 당 보여줄 라인 개수(레코드)  
        
    if(!$star){ $star= 0 ;}  // 시작할 레코드 번호 - 1
        
    $page=floor($star/($scale*$page_scale));  // 페이지 수 얻기
    
    $que1="select DATE_FORMAT(reg_date,'Y.m.d'), id,nick, passwd ,name , user_num, address, phone,  email, job from login order by reg_date DESC " ; 
    
    $result = mysql_query($que1);
        
    $total = mysql_affected_rows(); //게시물 총 수
        
    $last=floor($total/$scale); //마지막 번호
        
    echo "<font size=-1>전체 등록자 : $total 명 입니다."; 
        
    echo "<html><title>회원관리</title><body bgcolor=ffffff><center><font size=4>회원관리 페이지</font>
            <table border=1><tr bgcolor=336699>
              <td align=center><font color=ffffff size=-1>등록일</font><td align=center><font color=ffffff size=-1>ID</font></td>
              <td align=center><font color=ffffff size=-1>닉네임</font></td>
              <td align=center><font color=ffffff size=-1>비밀번호</font></td>
              <td align=center><font color=ffffff size=-1>이름</font></td>
              <td align=center><font color=ffffff size=-1>주민등록번호</font></td>
              <td align=center><font color=ffffff size=-1>주소</font></td>
              <td align=center><font color=ffffff size=-1>연락처</font></td>
              <td align=center><font color=ffffff size=-1>E-Mail</font></td>
              <td align=center><font color=ffffff size=-1>직업</font></td>
              <td align=center><font color=ffffff size=-1>관리</font></td></tr>";
    
    if($star) 
    {  
      $n=$total-$star;  
    }
    else  
    {      
      $n=$total;  
    }
    
    for($i=$star ; $i< $star+$scale ; $i++)  //  star 에서 scale 까지 만
    {
      if($i< $total ) // 전체 자료 개수까지만 출력 
      { 
        mysql_data_seek($result,$i);
        $row=mysql_fetch_array($result);
                 
        $imsi=$row[5];
                 
        echo"<tr><td align=center><font size=-1>$row[0]</font></td>
               <td align=center><font size=-1>$row[1]</font></td>
               <td align=center><font size=-1>$row[2]</font></td>
               <td align=center><font size=-1>$row[3]</font></td>
               <td align=center><font size=-1>$row[4]</font></td>
               <td align=center><font size=-1>$row[5]</font></td>
               <td align=center><font size=-1>$row[6]</font></td>
               <td align=center><font size=-1>$row[7]</font></td>
               <td align=center><font size=-1><a href=mailto:$row[8]>$row[8]</font></a></td>
               <td align=center><font size=-1>$row[9]</font></td>
               <td align=center><font size=-1><a href=$admin_url?action=erase&num=$row[5]&start=$start>삭제</a></font></td></tr> ";
      }
            
      $n--;
    }
        
    echo "</table><br><br>";
         
    if($total>$scale)  
    {
      if($star+1>$scale*$page_scale)   
      {
        $pre_star=$star-$scale;
        echo"<a href='$PHP_SELF?star=$pre_star'> 이전</a>";
      }
              
      for($vj=0; $vj < $page_scale ; $vj++) 
      {
        $ln=($page*$page_scale+$vj)*$scale;
                  
        $vk=$page*$page_scale+$vj+1;
                  
        if($ln < $total) 
        {
          if($ln!=$star)   
          {
            echo"<a href='$PHP_SELF?star=$ln'><font size=2>[$vk]</a></font>";
          }
          else    
          {
            echo"<font size-2><b>$vk</b></font>";
          }
        }
      }
              
      if($total>(($page+1)*$scale*$page_scale)) 
      {
        $n_star=($page+1)*$scale*$page_scale;
                  
        echo"<a href='$PHP_SELF?star=$n_star'>다음</a>";
      }
    }
                    
    ?>
    
            

6.15. 정규표현식

  1. 정규식 표현
    a(b*) : a, ab, abb, a와 임의의 갯수들로 된 문자열
    a(b+) : ab, abb, abbb, ab와 임의의 갯수들로 된 문자열
    a(b?) : a or ab, a 다음에 b가 있어도 되고, 없어도 된다.
    a(b{3}) : abbb 
    a(b{2,}) : abb, abbb, abbbb, a 와 두개 이상의 b들로 된 문자열
    a(b{2.4}) : abb, abbb, abbbb, a 와 두개 이상, 네 개 이하의 b들로 된 문자열
    
    [a-z] : a-z 까지 문자열
    [a-zA-Z0-9] : 임의 영숫자
            

  2. 공백 문자
    [^0-9] : 임의 숫자가 아닌문자
    [~a-zA-Z0-9]: 임이의 영숫자가 아닌 문자
            

  3. 임의의 공백문자가 아닌 문자
    a.c : aac, abc, acc, a 와 c에 임의의 문자 하나가 끼어 있는 문자열
    ^a.* : a로 시작하는 임의의 문자열
    [a-c]*x$ : x, ax, bx, abax, abcx, a에서 c사이의 임의의 문자들로이루어지며, 마지막 문자가 x인 문자열
    b[ao]y : bay 또는 boy에인 문자열
    [^Zz]{5} : Z or z 가 포함되지 않은 길이가 5인 임의의 문자열
    [[:digit:]] : 임의의 숫자 , [0-9]
    [[:<:]a.* : a로 시작하는 임의의 문자열
    
    예) ^([0-9]{2,4})(-[0-9]{3,4})(-[0-9]{3,4}) : 전화번호(xxxx-xxxx-xxxx)
            
    임의의 공백문자가 아닌 문자

6.16. 영어 단어 검색

  1. engdic 프로그램이있나 확인하고 없으면 설치한다.

    which engdic

  2. test.php, exec 를 사용해서 engdic 프로그램을 실행한다.
    <?
    
    // 영한/ 사전 입니다.
    function engdic($string) 
    {
      $cmd = "engdic $string";
      exec($cmd,$array,$rtn);
    
      for ($i=0; $i < count($array); $i++) 
      {
        $rstring .= "$array[$i]";
      }
      return $rstring;
    }
    
    print engdic("hello");
    
    ?>
            

6.17. IP 소속기관,회사 알아보기

  1. fwhois 프로그램이있나 확인하고 없으면 설치한다.

    which fwhois

  2. test.php, exec 를 사용해서 engdic 프로그램을 실행한다.
    <?
    
    //아이피 소속 회사, 기관 알아내는 함수
    function ip($string) 
    {
     $cmd = "fwhois $string"."@whois.nic.or.kr";
     exec($cmd,$array,$rtn);
    
     for ($i=0; $i < count($array); $i++) 
     {
       $rstring .= "$array[$i]";
      }
      return $rstring;
    }
    
    print ip("210.180.116.238");
    
    ?>
            

6.18. 현재의 년/월/일 구하기

<?
function date_selector($name, $date) 
{
  $monthname = array(1=>"1월", "2월", "3월", "4월","5월","6월","7월","8월","9월","10월", "11월","12월");

  if($date == "") 
  {
    $date = time();
  }

  //년
  print "<select name = ".$year." year > ";

  $start_year = date("Y", $date);

  for($current_year = $start_year - 5; $current_year <= $start_year + 5; $current_year++) 
  {
    print "<option value = $current_year";

    if(date("Y", $date) == $current_year) 
    {
      print " selected ";
    }

    print " > $current_year ";
  }
	
  print "</select>";
	
  //월
  print "<select name = ".$month." month >";
  for($current_month = 1; $current_month <= 12; $current_month++) 
  {
    print "<option value = $current_month ";
		
    if(date("m", $date) == $current_month) 
    {
      print " selected ";
      print ">";
      print $monthname[$current_month];
			
    }
    else 
    {
      print ">";
      print $monthname[$current_month];
    }
		
    print " ";
  }

  print "</select>";

  //일
  print "<select name = ".$day." day >";
	
  for($current_day = 1; $current_day <= 31; $current_day++) 
  {
    print "<option value = $current_day ";
    if(date("d", $date) == $current_day ) 
    {
      echo " selected ";
    }
    echo " > $current_day 일";
  }
	
  print "</select>";
}

echo "<html>
<head>
<title>연습</title>
<body>";

if(isset($month)) 
{
  //$use_date = mktime(0, 0, 0, $sample_month, $sample_day, $sample_year);
  $use_date = mktime(0, 0, 0, $month, $day, $year);
}
else 
{
	$use_date = time();
}

print "<form action = cal.php method = post>";
print date_selector("cal", $use_date);

echo "<input type = submit value = 입력>
</form>
</body>
</html>";

?>