본문 바로가기
웹프로그램

PHP와 MYSQL 데이타 연결과 쿼리 주기

by 세이박스 2008. 10. 19.
반응형
 
PHP를 이용한 MYSQL 데이타 연결과 쿼리 주기
 * MYSQL과 ORACLE 는 별도 접속함수를 이용
 *  PHP ; server side script-x 서버에서 처리후 크라이언트
              결과 전송
 * 에디터, vi 편집기로 작성후  ***.php (ex, bbs.php)
    서버에 업로드후 실행.
* PHP는 HTML과 병행하여 작성할수 있다.
-----------------------------------------------------------------------------------------
<br>한줄 뛰기
<?php   //php시작
 $name="hban" ;
 echo "일반텍스트문 ";
 echo "<font size=3 color=red>HTML 문  $name </font> ";
 echo "<img src=이미지경로>";
 echo "<table>.....";
?> 
************************************************************************
 MySQL함수 (PHP와 MYSQL연결)
 mysql_connect ("host명","유저명","비밀번호")
* Mysql에 연결한다.
 ex) <?php
 $db=mysql_connect("localhost","korea","0000") or
 die ("접속실패");
 echo "MYSQL에 접속되었습니다.";
 mysql_close($db);
//오라클의 경우(Oracle 사용시 8i, 9i 인지 ID/Pass)
OCILOGON ("localhost","korea","0000") 의 형태이다.
 ?>
*mysql_pconnect :  영구히 데이터베이스접속
   --> 접속이 많은 DB에 효율적이다.
<?php
 $db=mysql_pconnect("localhost","korea","0000") or
 die ("접속실패");
if ($db) {
echo "데이터베이스 접속이 되속되고 있습니다. ";
}
?>
******************************************************************
MYSQL 데이터베이스 선택하기
mysql_select_db ("DB명");
ex)mysql_select_db ("korea");
MYSQL 쿼리(질의)문 전달하기
mysql_query ( "질의문");
ex) mysql_query ("select * from zip ");
*******************************************************************
MYSQL 데이터베이스를 생성
  mysql_create_db()
ex) mysql_create_db ("my_db")
MYSQL 데이터베이스 삭제
  mysql_drop_db()
ex) mysql_drop_db ("my_db")
*********************************************************************
MYSQL질의 결과로 부터 열의 개수를 반환
 mysql_num_rows ( )
ex) <?php
 $db=mysql_connect ("localhost","korea","0000");
 $query="select * from zipcode";
 $result =mysql_db_query("zip", $query, $db);
 $num=mysql_num_fields($result);
 echo "총 $num 개의 컴럼이 있습니다.";
 -----------------------------------------------------------------------
 $db=mysql_connect ("localhost","korea","0000");
 mysql_select_db("zip",$db);
$result=mysql_query("select * from zipcode", $db);
$total_num=mysql_num_rows($result);
echo "총 $total_num 이 검색 결과로 되었습니다.";
?>
-------------------------------------------------------------------------
결과를 필드 이름 혹은 숫자색인으로 배열 반환
 mysql_fetch_array( )
 ex) mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip");
      $result=mysql_query("select sido,gugun, dong from zip where
       ");
      $gesu=mysql_num_rows($result);
  echo "총 검색된 수는 $gesu 입니다.";
$si="$row[sido]";
역삼동이며  
while ($row=mysql_fetch_array($result))
  {
    echo "<table width=600 border=1  bgcolor=#fofofo>
<tr><td> $row[sido]</td>
<td>  $row[gugun] </td>
<td> $row[dong] </td>
</tr></table>
 <br>";
}
    echo " $row[0]  $row[1]  $row[2]";
************************************************************************
MYSQL 작업의 결과로 처리된 행(row)의 개수를 얻는다.
mysql_affected_rows ( )
--> insert, update, delete 질의로 처리된행의 갯수
--> where 절이 있어야 된다.
 ex) $db=mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip,$db");
       $result=mysql_query("delete * from zip where ......", $db);
      $total_num=mysql_affected_rows($result);
     echo "총 $total_num 개의 데이터가 삭제되었습니다.";
   ?>
  만약,where 절이 없다면 mysql_num_rows 를 사용
  
}
   mysql_free_result ($result);
  ?>
 
 
 
 
 
--------------------------------------------------------------------------------
 
 
 
 
 
* 문자열 함수 *
 MYSQL DB 에서 쿼리로 자료를 추출하다.=> $변수
 echo "<html><body><font size=2>Hellow</font>";
 echo "<font size=2> $name </font>";
   홍길동   2004-10-7    전자/유아/도서/      경리-회계-인사
 (1) addslashe($변수)  슬래쉬 문자를 인용한다.
      디비 쿼리와 같이 인용된 부분에 백슬러쉬 붙여 반환
       예) ' , " , \ , NULL
      <?php
      $st="select * from member where id='test'";
      echo addslashes($st);  ==> .... id=\'test\'
      ?>
      stripslashes ($변수)
      백슬러쉬가 있는것을 제거하여 반환한다.
      $ss="/'test/'";
      echo stripslashes($ss);
*************************************************
echo 출력한다.
 = 변수를 포함하여 출력할수 있다.
  
 ex)<?php
      echo "<font size=2>Hellow
       World
       $num 와 $bbs 입니다.</font>";   ?>
  ----------------------------------------------------------
 <html>
 <body>
 <form><input  type="hidden" name="cooki"  vale="123 12">
 <font size="2" color="red">Hellow
       World  <?php echo "$num"; ?> 와
      <?php echo "$bbs"; ?> 입니다.</font>
  ----------------------------------------------------------------
 (2) explode  (매우중요)
       문자열을 주어진 문자열을 기준으로 분리한다.
       문자열을 separator 경계로 나누어 반환
      $pizza = "piece1-piece2-piece3";
      $pieces = explode ("-",$pizza);
      echo $pieces[1];
     예) 새로운 화일 class.conf 를 만들자
           여기에 도서분류카데고리를 만든다.
           $book_class="교양/여성/유아/과학/원서/컴퓨터/건축';
          위의 explode 가 작동할 php 문을 편집한다.
     예) 옵션컬럼 $option='빨강-노랑-은색-검정";
                           $size="200cm/350cm/750cm";    
        
    require "class.conf";   
     ==> 변수, 함수, 페이지를 호출할수 있다.   
     global $book_class, $member, $welcome;
     ==> GLOBAL은 전역변수 선언으로 페이지 루틴 모두 적용
     $book_category = explode ("/",$book_class);
   
      echo "<font> 도서분류 : $book_category[0]<br>";
      echo "<font> 도서분류 : $book_category[1]<br>";   
      echo "<font> 도서분류 : $book_category[2]<br>";
      echo "<font> 도서분류 : $book_category[5]<br>";
      echo "<font size=5 color=red>
      $member 님 안녕하세요 $welcom</font>";
  ***********************************************************
    implode ()
    배열의 내용을 하나로 묶는다.
    (explode와 반대 개념, join과 기능 동일)
   ex) $book = array("과학","여성","컴퓨터");
          $class = implode (" ", $book);
         echo $class;
  ***********************************************************
   nl2br
   뉴라인을 HTML 라인 브레이크(BR)로 변환
  <?php             <br>
  $st = "hellow \n Wlecome to\n PHP world";
  echo nl2br($st);
  /*  PHP주석   */  <!--  HTML주석 -->
  echo "<html><body><!-- 회원비밀정보출력 -->";
  ?>
 ****************************************************************
  strlen ($변수) 문자열의 길이를 반환
  $st = "hellow Linux Mysql";
  echo strlen($st);
  문자열의 길이를 알수 있다.
 
  strstr ($변수, '기준자') => 기준자부터 문자열 반환
  ex) $email = 'korea@samsung.com';
      
         $domain = strstr ($email, '@');
         echo "현재 회원님의 도메인은 $domain 입니다.";
 strrev ($변수)  => 문자열을 역순으로 반환
   $url = 'www.oi.co.kr';
   echo stttev($url);
 
 str_repeat  ("반복할문자", 반복수)
  <?php
    echo str_repeat("--", 20);
   ?>
 substr ("값", 수1, 수2 );
 주어진 문자의 일부분을 반환
 echo substr("abcdef", 1)   ==> bcdef
 echo substr("abcdef", 1,3)   ==> bcd
 echo substr("abcdef", -1)   ==> f
 echo substr("abcdef", -2)   ==> ef
 echo substr("abcdef", -3,1)   ==> d
 ..("나의이상형은전지현입니다",  6,3)  => 전지현
***************************************************
   mysql table 상품 테이블을 등록한다.
   상품코드           
   상품명  CHAR   전지현                             소나타3   
   가격  INT            1000                               2000000
   제조사  CHAR    한국                                 현대
   옵션 CHAR         /미팅/친구/애인/부인       오토/수동/CDP
   마일리지 INT      0                                       2000
   설명 TEXT           국내 최고 여인                2004년 최신형
 ****************************************************
  table에 레코드를 기록
 ******************************************************
  sangpum.php
mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip");
 $result=mysql_query("select sido,gugun, dong from zip ");
      $gesu=mysql_num_rows($result);
  echo "총 검색된 수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "<table width=600 border=1  bgcolor=#fofofo>
  <tr><td> $row[sido]</td>
  <td>  $row[gugun] </td>
  <td> $row[dong] </td>
  </tr></table>
  <br>";
}
  * HTML <select name=option>
    <option value=nn>nnn</option>  형태이다.
    /친구/부인/애인..옵션을 나누어 아래 스크롤로 만든다.
   if($row["option"]) {
       echo "<select name=option>";
       $sizes = expolde("/",$row["option"]);
       $tot = sizeof($sizes);
       for($i=0;$i<$tot;$i++)
       {
        echo "<option value='$sizes[$i]'>$sizes[$i]</option>";
        }
         echo "</select>";
         }
***********************************************************
*** 이메일 보내기 ****************************************** 
$titles="$title";    
$subject="$title";  //제목
$mail_txt="$name님 안녕하세요 $id 입니다.....";
$admin_mail="nnn@nnn.com";  //보내는이메일주소
$mailto = $mail;
$mailheaders = "Return-Path: $admin_mail\r\n";
$mailheaders = "From: $title<$admin_mail>\r\n";
$mailheaders .= "Content-Type: text/html;charset=euc-kr\r\n";
//mail("보내는사람","제목","본문","메일헤더");
 mail("$admin_mail", "$titles",
            "$mail_txt", "$mailheaders");
 echo " 성공적으로 메일이 발송되었습니다. 감사합니다.";
 echo "<img src= rrrr.gif >";
 
 
 
 
-----------------------------------------------------------------------------
 
 
 
 
 
***************************************************
   mysql table 상품 테이블을 등록한다.
   상품코드           
   상품명  CHAR   전지현                             소나타3   
   가격  INT            1000                               2000000
   제조사  CHAR    한국                                 현대
   옵션 CHAR         /미팅/친구/애인/부인       오토/수동/CDP
   마일리지 INT      0                                       2000
   설명 TEXT           국내 최고 여인                2004년 최신형
 ****************************************************
  table에 레코드를 기록
 ******************************************************
  sangpum.php
mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip");
 $result=mysql_query("select sido,gugun, dong from zip ");
      $gesu=mysql_num_rows($result);
  echo "총 검색된 수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "<table width=600 border=1  bgcolor=#fofofo>
  <tr><td> $row[sido]</td>
  <td>  $row[gugun] </td>
  <td> $row[dong] </td>
  </tr></table>
  <br>";
}
  * HTML <select name=option>
    <option value=nn>nnn</option>  형태이다.
    /친구/부인/애인..옵션을 나누어 아래 스크롤로 만든다.
   if($row["option"]) {
       echo "<select name=option>";
       $sizes = expolde("/",$row["option"]);
       $tot = sizeof($sizes);
       for($i=0;$i<$tot;$i++)
       {
        echo "<option value='$sizes[$i]'>$sizes[$i]</option>";
        }
         echo "</select>";
         }
***********************************************************
*** 이메일 보내기 mail.php ******************************************    
global $subject, $email,$color,$message;
$subject="$subject";  //제목
$mail_txt="$message";
$admin_mail="email";  //보내는이메일주소
//$mailto = $mail;
$mailheaders = "Return-Path: $admin_mail\r\n";
$mailheaders = "From: $title<$admin_mail>\r\n";
$mailheaders .= "Content-Type: text/html;charset=euc-kr\r\n";
//mail("보내는사람","제목","본문","메일헤더");
 mail("$admin_mail", "$subject",
            "$mail_txt", "$mailheaders");
 echo " 발송된 메일의 확인입니다..";
 echo "제목: $subject <br>이메일 $email <br> $color,$message";
echo "<img src= rrrr.gif >";

***************************************************
<html><body>
<form action=mail.php method=post>
<input type=text name=subject size=30><br>
<input type=text name=email size=30><br>
<input type=text name=color size=30><br>
<textarea  rows=10  cols=30  name=message></textarea>
 <input type=submit name="[[[[ 확   인 ]]]">
 
 
 
 
-----------------------------------------------------------------------------
 
 
 
 
 
PHP 의 제어 구조
(1) if-else 구문 (가장 많이 쓰이는 구문)
    ex) if (조건) { 조건에 따른 처리; }
          if ( $point > 90 ) { echo " 잘했습니다."; }
   ex) if (조건) { 조건에 다른 처리; }
         elseif (조건) { 조건에 따른 처리; }
         else { 조건에 따른 처리; }
     <?php
     $oracle=85;
     $linux=75;
     $jumsu = ($oracle+$linux)/2;
     if ($jumsu >= 90)  {
        echo "<table>...전지현";
     }
     elseif ($jumsu >=80 && $jumsu <90 )
      {
       echo "<img src=essay.gif>";
      }
     else {  echo "book3.gif";  }   ?>
 **********************************************
  while (조건)  { ~~동안 조건에 따른 처리 }
    ( = while (조건): 조건에 따른처리; endwhile; )
  <?php
  $a=1;
  while ($a <=10) {
  echo "<font size=5 color=red>$a</font><br>";
  $a++;   (1씩 증가하여 반환한다)
  }
 ***************************************************
  do while 구문
  do {  조건에 따른 처리 }
  while (조건);
 ****************************************************
 for (초기값; 끝나는조건; 반복처리)
  { 조건에 따른 처리 }
 echo "<table width=500 border=1>";
 for ($a=1; $a <=10; $a++)
        { echo "
     <tr><td bgcolor=yellow>
     <font size=3 color=red> $a 번 자료 입니다. </font>
     </td></tr>";
  }
 echo "</table>";
**********************************************************
 foreach (배열변수 as 로컬변수) { 처리구문 }
   ex) <?php
    $odd_num = array (1,3,5,7,9);
    foreach ($odd_num as $value) {
    echo "$value 입니다.<br>";
    } ?>
**********************************************************
 break, continue 구문
 break ==> for, while, switch 에서 해당 구문 빠져 나감
 continue ==> for, while 에서 현재 루프의 처음으로 돌아감
 <?php
 for ($a=1; $a<=10; $a++) {
 $value=$a;
 if ($value >30) { echo "$value";  
      break;
 }
***********************************************************
   require (파일명) - 지정파일의 함수,변수사용 (config..)
   include(파일명) - 지정파일의 읽기 실행
************************************************************
 함수(function) :
 특정 기능을 모아서 필요할때마다 불러서 사용
 중복된 기능을 피하고 동일 기능을 여러번 수행시 필요
****함수 설정하는법 ***********
 function  함수명($변수) {
  수행할 구문 
  return;   }
*****함수를 호출하여 이용하는 방법********
 함수명($변수);
*************************************************************
ex) <?php
 functin test($value) {
 echo "$value";
  return; }        test(1234); ?>
 
 function  squre($num) {
 return; }
 echo square(10); 
 function 
*********************************************
함수를 이용하여 구구단을 2단부터 9단까지 출력하는
프로그램을 만들어 보자.
(각 단 하나의 테이블로 출력하게하자)
.
*************************************************
<?php
echo "[구구단 출력 프로그램]<br>";
// 2부터 9까지 함수를 반복 호출
for ($i=2; $i<=9; $i++)
{
 show_gugudan($i);
}
 
// 숫자를 넘겨받아서 구구단을 출력
function show_gugudan($num)
{
echo "<table border=1 width=120>\n";
echo "<tr><th>$num 단</th></tr>\n";
 
for ($i=1; $i<=9; $i++)
{
echo "<tr><td align=center>$num X $i = ";
echo $num * $i;
echo "</td></tr>\n";
}
return;
}
?>
*******************************************************
변수의 사용 범위
전역변수(Global) 프로그램전체에서 사용 가능
  global $변수,$변수;
지역변수(Local) 선언된 지역(함수)에서만 사용 가능
정적 변수(static) 함수가 종료되어도 유지 사용 가능
$변수=숫자;
    -> 숫자등 정수인경우 " " 불필요
$변수="문자열";  
   -> 문자열 또한 변수 입력 $nnn등 문자열 인경우 ' " 로 처리한다.
**********************************************************
<?php
$message="구매를 합니다.";
golbal $message,$nnnn,$kkkk;

function test() {
global $message;
echo "귀하의 전달 사항은 $message 입니다.";
}
test();
?>
***********************************************************
1. FROM 변수
 폼값 ---> 서버 --->  크라이언트
 <HTML>의 형태로 만들어져 서버에 전달된다.
 FORM은 프로그램언어의 처음과 끝이다.==>폼생폼사
<HTML>
<form action="웹경로" method="get 혹은 post">
웹경로 : form value(폼값)을 받는 cgi,php,jsp경로
method
(1) get : 브라우져상단에 폼값 인수가 전달
   ex) action=mail.php
     전달방법 :..mail.php?id=korea&code=333&name=ho
 (2) post : 데이터가 표준입력 방식으로 전달
                  외부에 보이지 않는다.
-----------------------------------------------------------------
DATA를 보내는 방법---> server
한줄로 입력칸이 출력
<input type="text" name="korea" size="10"
  maxlenght="20">
name=korea 서버에 전달시 변수명(name)
size= 입력칸의 크기
maxlenght = 입력칸의 최대입력수제한
----------------------------------------------------------------
<input type=password name=ppp...>
비밀번호 입력으로 입력값이 보이지 않는다.->******
<input type=hidden name=cooki value=04010>
<input type=hidden name=id value=골뱅이>
출력되지 않지만 전달될 폼의 값
-----------------------------------------------------------------
<input type=checkbox name=취미 value=독서  checked>
<input type=checkbox name=취미 value=운전>
=>여러개의중에 다수 선택 가능
<input type=radio name=성별 value=남자>
=>한개만 선택
</form>
******************************************************
<select name=option>
<option value=노랑 checked>노랑색 우산</option>
<option value=빨강>빨강색 중간 우산</option>
<option value=파랑>파랑색 큰 우산</option>
</select>
********************************************************
내용이 긴 문장을 쓰는 입력칸
<textarea name=변수명 rows=행의길이   cols=열의길이
  wrap=virtual or physical or off>
</textarea>
wrap=virtual  화면에 맞게 자동 줄바꿈, 전송시는 입력대로 전송
wrap=physical 화면에 자동 줄바꿈 및 전송시에도 줄바꿈
wrap=off 기본적으로 자동 줄바꿈 하지 않는다.
 
*********************************************************
입력한 내용을 전달하는 버튼을 만들기
*이 버튼 위에 </form>이 있으면 전달 불능
<input type=submit  name=보내기 value="[[[[보내기]]]]">
</form>
**********************************************************
 
 
 
-----------------------------------------------------------------------------
 
 
 
 
 
php.ini -> register_global=On -> apachectl restart
 (웹상에서 POST,GET 받게함)  

 <?php
   echo "$name";
모든 전송 변수를 반는것을 선언
      extract($_GET); extract($_POST);
      echo "$name<br>";
      echo "$id"
    
전송된 변수를 받을수 있도록 설정(개별)
       echo "$_GET[name]";
       echo "$_POST[name]";
******************************************************************
MYSQL에 데이타 입력하기
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$query= "insert into goods(id,name,number)
             values(''id,'$name','$number")";
mysql_query($query);
****************************************************
데이타 출력하기
member.php
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$result=mysql_query("select id,name, address from zip ");
$gesu=mysql_num_rows($result);
echo "총 검색된 회원수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "
<form action=mem_modify.php method=get>
<table width=600 border=1  bgcolor=#fofofo>
<input type=hidden name=act value=modify>
  <tr><td>아이디: <input type=text name=id value='$row[id]'></td>
  <td> <input type=text name=id value='row[name]'> </td>
  <td> $row[address] </td>
********************************************************
   checkbox  나 select 박스의 처리는
if ($habby == 도박) {  $check1="checked"; $check2=""; }
elseif ($habby == 독서 ) {$check1=""; $check2="checked";}
echo "<input type=checkbox name=도박 $check1>
           <input type=checkbox name=독서  $check2>";}
수정된 정보는 업데이트 쿼리를 이용한다.
mysql_query("update member  set  id='newid',address='주소' 
             where  name='홍길동';
************************************************************
<input type=submit name=kkk value="확실히보냅니다.">
  </tr></table>
  <br>";   }
*************************************************************
*******************************************************************
폼값을 넘기는 버튼에 대해
-- 확인버튼
(이미지버튼)
<input type=image src=aaa.gif></form>
(기본 버튼)
<input type=submit  value="[[[ 확인 ]]]" name=aaa >
-- 뒤로 가는 버튼
 <a href=JavaScript-x:clickOn=history.go(-1)><img src=back.gif></a>
--웹 링크 설정
 <a href=경로>버튼</a>
--메타 리다이렉션 자동 이동하기
<meta http-equiv='Refresh' content='0; URL=index.php'>
 
 
 
-----------------------------------------------------------------------------------
 
 
 
 
 
php.ini -> register_global=On -> apachectl restart
 (웹상에서 POST,GET 받게함)  

 <?php
   echo "$name";
모든 전송 변수를 반는것을 선언
      extract($_GET); extract($_POST);
      echo "$name<br>";
      echo "$id"
    
전송된 변수를 받을수 있도록 설정(개별)
       echo "$_GET[name]";
       echo "$_POST[name]";
******************************************************************
MYSQL에 데이타 입력하기
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$query= "insert into goods(id,name,number)
             values(''id,'$name','$number")";
mysql_query($query);
****************************************************
데이타 출력하기
member.php
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$result=mysql_query("select id,name, address from zip ");
$gesu=mysql_num_rows($result);
echo "총 검색된 회원수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "
<form action=mem_modify.php method=get>
<table width=600 border=1  bgcolor=#fofofo>
<input type=hidden name=act value=modify>
  <tr><td>아이디: <input type=text name=id value='$row[id]'></td>
  <td> <input type=text name=id value='row[name]'> </td>
  <td> $row[address] </td>
********************************************************
   checkbox  나 select 박스의 처리는
if ($habby == 도박) {  $check1="checked"; $check2=""; }
elseif ($habby == 독서 ) {$check1=""; $check2="checked";}
echo "<input type=checkbox name=도박 $check1>
           <input type=checkbox name=독서  $check2>";}
수정된 정보는 업데이트 쿼리를 이용한다.
mysql_query("update member  set  id='newid',address='주소' 
             where  name='홍길동';
************************************************************
<input type=submit name=kkk value="확실히보냅니다.">
  </tr></table>
  <br>";   }
*************************************************************
*******************************************************************
폼값을 넘기는 버튼에 대해
-- 확인버튼
(이미지버튼)
<input type=image src=aaa.gif></form>
(기본 버튼)
<input type=submit  value="[[[ 확인 ]]]" name=aaa >
-- 뒤로 가는 버튼
 <a href=JavaScript-x:clickOn=history.go(-1)><img src=back.gif></a>
--웹 링크 설정
 <a href=경로>버튼</a>
--메타 리다이렉션 자동 이동하기
<meta http-equiv='Refresh' content='0; URL=index.php'>
**************************************************
  04.10.12
  PHP 파일 조작 함수 및 FILE UPLOAD 처리
  (FORM 을 이용한 mysql 연동 처리)
  PHP를 이용한 방명록 만들기
(1)파일 함수
   fopen("경로명","속성")
   : 파일이나 URL를 연다.
   r :읽기전용 r+ :읽기쓰기 
   w: 쓰기전용(없으면새파일생성)
   W+ : 읽기쓰기가능(없으면새파일생성)
   a : 쓰기전용 (파일포인터맨끝,없으면 만듬), a+
-----------------------------------------
  <?php
  fopen("http://www.naver.com/","r");
  fopen("/home/text.txt", "w+");
  ?>
------------------------------------------
 <?php
  $file=fopen("http://www.yahoo.co.kr/","r");
  if (!$file) {
   echo "존재하지 않는 파일이거나 경로입니다.";
   exit;
  }
  while (!feof($file))
  {  $line = fgets($file,1024);
     echo $line;
   
   }
 fclose($file)  ?>
 
 fclose ($열린파일) :열려있는 파일 포인터를 닫는다.
 fgets (파일명,길이) :파일로 부터 하나의 줄 읽어옴
   ex) $buffer=fgets($file,4096);
        echo $buffer;
       --> $file의 파일에서 4096바이트씩 출력
 fgetc() : 파일로 부터 하나의 문자를 읽어 온다.
 ex) $fp = fopen("user.txt","r");
      while ($chr = fgetc($fp))
      {   echo $chr;  }
      fclose($fp);   
 ------------------------------------------
  fputs(파일명,길이); 파일포인터에 문자열 저장
  file () 파일 전체를 읽어서 배열로 반환
ex)
<?php
$fcontent=file('http://www.naver.com/');
    //배열로 웹 페이지를 가져오고 저장
while (list($line_num,$line)=each($fcontents))
   //each는 각각배열을 가져오고 list는배열변수로 할당
{
 echo "줄수: $line_num"
        .htmlspecialchars($line). "</br>"; }
?>  //특수문자를HTML로전환htmlspecialchars()
********************************************
 file_exists 파일이 있는지 확인
 if (file_exists("img1001.jpg"))
 { echo "<font size=3>화일이 존재합니다. 크기는</font>"
    .filesize("img1001.jpg");
    }
-------------------------------------------
 filesize () 파일의 사이즈를 구한다.
  $size=filesize($img);
   if ($size > 10000 ) { echo "용량초과화일";}
********************************************
  chmod ("php.htm", 0755);
  화일의 권한을 변경한다.
   <?php chmod("php.htm",0755); ?>
  copy(화일명,경로) :  파일을 복사한다.
  <?php copy("php.htm","/home/img/");
    echo "파일복사가 성공적으로 완료되었습니다."; ?>
  unlink(파일명); 파일을 삭제한다.
  <?php
   $file="php.htm";
   if (file_exists($file)) {
   if (unlink($file))
    {  echo "$file 이 삭제되었습니다."; }
   else { echo "파일 삭제하지 못했습니다."; }
   }
   else { echo "$file 이 존재하지 않습니다."; }
   ?>  
  exec(chmod 707 ./picture) ;
-------------------------------------------
  mkdir 경로를 만든다.
  mkdir("/tmp/dir", 0700)
  rmdir 경로를 삭제한다.
  rename(oldname, newname)
         파일 이름을 변경한다.
*******************************************
 기타함수
 mail 함수
 ex) mail("info@naver.com", "제목입니다.",
      "본문내용입니다.", "$header");
     
     *MAIL헤더는 상단에 정의하여 준다.
  $header .="X-mailer:l/n";
  $header .="content-type:text/html...";
-----------------------------------------
  sleep 지정한 시간만큼 실행을 지연
  <?php
   echo "5초후 실행됩니다.";
   flush();  //버퍼를 비운다
   sleep(5);
   echo "모든 처리가 완료되어습니다";
   ?>
  system() 명령어 실행및 출력
   <?php echo system('ls');
     exec('chmod 707 php.htm'); ?>
   * 보안상 문제가 유발될수 있다.
*****************************************
  * 문자열 암호화하기 (%와 16진수 코드,공백은 +)
    (웹에서 노출을 피하려는 문자에 이용
     ex) GET 방식 혹은 정보등)
 
   urlencode($문자변수) : 문자열이 알파벳이아닌
     문자를 인코딩(encoding)한다.
   <?php
   $myurl = "id=korea&name=홍길동";
   echo urlencode($myurl);
   echo urldecode($myurl);
   $origin='urldecode($myurl)';
    echo "<font size=5>현재 번역된 값은 $origin 입니다.";
   ?> 
  
  urldecode($문자변수) : 인코딩값을 원래문자로 변환
*************************************************************
   parse_url :
   URL를 파싱해서 각 항목을 연상 배열로 반환
   sheme, host, port,user,pass,path,query
   <?php
   $url=
parse_url(
'http://dnshop.net/gg/Category?CID=D5191');
//위의 줄은 한줄로 입력한다.
  echo "scheme : $url[scheme]<br>";
  echo "host : $url[host]<br>";
  echo "path : $url[path]<br>";
  echo "query : $url[query]<br>";
?>
***************************************************************
 
 
---------------------------------------------------------------------------------
 
 
 
 
 
*gb_write.php  ->쓴글의 변수를 받아서 DB연동및 처리
<?php
extract($_GET); extract($_POST);
//함수정의
function popup_msg($msg) {
 echo("<script-x language=\"javascript-x\">
                    <!--
                            alert('$msg');
                               history.back();
                                  //-->
                          </script-x>");
}  //함수정의끝
if (!$gb_name) { echo popup_msg('이름를 기입하세요'); }
if (!$gb_email) { echo popup_msg('e-mail 기입하세요'); }
//////////////////////////////////데이터베이스접속함수
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
mysql_query("insert into guestbook
(gb_date,gb_ip,gb_name,gb_email,gb_location,bg_url, gb_note)
value( sysdate(),'$REMOTE_ADDR','$gb_name','$bg_location',
         '$gb_url','$gb_note')";
/////////////////////////////////////////////////////////
//// 등록후 결과 알려주기
echo "<table width=500><tr><td>
        <font size=5>등록이 완료되었습니다. 당신의 IP는 $REMOTE_ADDR</font>
        </td></tr>
         <tr><td><a href=gb_list.php>
        <font size=5>[목록 리스트] 돌아가기</font></a>
        </td></tr>
       </table>";
echo "<meta http-equiv='Refresh' content='0; URL=gb_list.php'>";
     ?>
*********************************************************************************
gb_list.php
mysql_connect ("localhost","korea","0000");
mysql_select_db("guestbook");
$result=mysql_query("select * from guestbook");
$gesu=mysql_num_rows($result);
echo "총 검색된 방문록는 $gesu 입니다.<br>";
while ($row=mysql_fetch_array($result))
  {
echo "<table width=600 border=1 bgcolor=yellow>
<tr><td>이름</td><td> $row[gb_name] 이메일; $row[gb_email] </td></tr>
<tr><td>날짜</td><td> $row[gb_date] $row[gb_ip] </td></tr>
<tr><td>주소</td><td> $row[gb_location] </td></tr>
<tr><td>홈페이지</td><td> $row[gb_url]
<a href=delete.php?idx=gb_index> [삭제] </a> </td></tr>
<tr><td>한마디</td><td> $row[gb_note] </td></tr>
</table>  ";
}
echo "<a href=gb_write_form.php>[글쓰기]</a> | [삭제] | [목록] ";
?>
**************************************************************************
delete.php
global $idx;
echo "<center><table width=600 bgcolor=fofofo>
      <tr><td align=center>
      <form action=delete_process.php method=post>
      <input type=hidden name=idx value=$idx>
      관리자 ID  <input type=text name=admin_id><br>
      비밀번호  <input type=password name=admin_pass>
     </td></tr></table></center>";
****************************************************************************
delete_process.php
global $idx, $admin_id, $admin_pass;
//관리자비밀번호설정
$admin="korea';
$passwd="0000";
//비밀번호 및 아이디 비교하기
if ( $admin_id == $admin && $admin_pass == $passwd )
{ 쿼리문으로 삭제 실행 ;
echo "<meta http-equiv='Refresh' content='0; URL=gb_list.php'>";
}
else { echo "<font size=4 color=red> 관리자만 삭제할수 있습니다.!!
      </font>";
echo "<a href=JavaScript-x:clickOn=history.go(-1)>뒤로 가기</a> <br>
        <meta http-equiv='Refresh' content='2; URL=gb_list.php'>";
}
 
 
--------------------------------------------------------------------------------
 
 
 
 
 
2004.10.13
이론) PHP 시간함수, 비교연산자 알기
실습) PHP를 이용한 설문조사
******************************************************************
touch date.php
date(형식);  => 주어진 포멧의 날자 표시
 Y : 년도 1999  y  : 2자리년도 99
 A : AM or PM  a : am or pm
 d : 2자리 숫자 날짜 (01-31)
 g : 12시간(1-12) G :24 시간(0-23)
 i : 분 (00-59) 
 m : 월 (01-12)
 s 초 : 2자리 (00-59)
 T : 시스템의 타임존
 w : 요일숫자 (0 -sun~6-sat)
$yoil=date(w);
if ($yoil=0) { $yo=일;}
  회원님 입찰은  년  월  일 (요일) 시  분 초 입니다.
 오늘은  **8월 8일 8일 (금요일)
ex) echo date();
     echo date("Y : m : d");
     $date=date();
*********************************************************
getdate() 날짜/시간 정보를 연상배열 반환
<?php
$today=getdate();
second : 초  minutes : 분
hours : 시     mday :날짜
wday :요일   mon 월(숫자)
year : 년   weekday :요일(문자)
-----------------------------------------
$month=$today['mon'];
$mday=$today['mday'];
$year=$today['year'];
echo "회원님 가입일은 $month $mday $year 입니다";
-------------------------------------------
time () : UNIX의 기준시간부터 지금까지 시간을
            초단위로 반환(Jan 1 1970 00:00:00)
ex) $time=time();
      echo "현재시간 $time";
*****************************************************************
 환경변수
 : PHP는 실행시 미리 정의된 변수를 제공한다.
  버젼에 따라 다르지만 기본적인 변수가 있다.
  (apache와 PHP 환경변수)
  <?php
  phpinfo();
  ?>
  HTTP_USER_AGENT :사용자의 브라우져 정보
   ex) echo "$HTTP_USER_AGENT";
  REMOTE_ADDR : 사용자 IP
  SERVER_ADDR : 서버의 주소
  SERVER_PORT : 웹서버에 접속하는 포트번호
  SCRIPT-x_FILENAME : 현재 실행된 스크립 절대 경로
  SERVER_SOFTWARE : 서버에 설치된 웹 서버명과 모듈
********************************************************************
 예) 회원님은 현재 _________에 시간에 접속하였고
     사용하신 브라우져는 ________이고
    ______________IP에서 접속하였고, 우리 서버의 __포트
    로 접속하였습니다. 본사 서버는 ________입니다.
 
 
 
-----------------------------------------------------------------------------------
 
 
 
 
 
<?php
extract($_GET); extract($_POST);
//userfile 넘어오면서 파일명은 _name를 붙여 생성한다.
echo "$userfile_name";
copy ("$userfile","/upload/$userfile_name");
?>
---------------------------------------------------------------------------  
$file_name = substr( strrchr($userfile_name,"."),1);
$filea_name = substr( strrchr($userfilea_name,"."),1);
if ($file_name!="gif" && $file_name!="jpg" &&
   $file_name != "asf")
  { error('자기사진 확장자는 gif, jpg, asf 이어야함');}
  if ($filea_name!="gif" && $filea_name!="jpg")
 { error('앨범그림의 확장자는 gif 또는 jpg 이어야함');}
$img_file = "$id"."."."$file_name";
$simg_file = "s-"."$id"."."."$filea_name";
copy($userfile, "/upload/$img_file");
       unlink($userfile);
copy($userfilea, "/upload/$simg_file");
       unlink($userfilea);
논리연산자
----------------------------------------------------
a and b   a와 b가 모두 참
a or b   a 와 b 중 하나가 참인경우
! a   a 가 참이 아니면
a && b   a 와 b 가 모두 참
a || b  a 와 b중 하나가 참일때
ex) if ($a && $b)  {  실행 }
     => a 와 b 의 값이 모두 있다면...
      if ($a > 10 && $b < 20 )
      if ($a || $b ) {실행}
     => a 와 b 의 값이 하나라도 있다면...
      if (!$a) { }
     => a의 값이 없다면...
--------------------------------------------------
비교연산자
a == b    a 와 b 가 같다면
a != b    a와 b가 같지 않다면
a < b , a > b , a <= b, a >=b
--------------------------------------------------
if ( $ a == $price ) { 실행 }
 ==> a 의 값이 price 와 같다면
if ( $a != $price ) {실행}
 ==> a 의 값이 price 와 같지 않다면
--------------------------------------------------
<?php
$sonnim=20000;
if ( $sonnim == $bonus )
 { echo "<font size=3 color=red>손님은 보너스해당자입니다.
    </font>"; }
else { echo "아직 보너스에 해당되지 않습니다."; }
?>
<?php
echo "<table width=500 border=1>";
for ( $a=1; $a <=20; $a++ )  {
  skin1.php   skin2.php
gb_list.php
 
if ($hit >100 ) { $icon="hot.gif";
 if ( $a%2 == 0 ) { $color="fofofo";  $icon="crown.gif";}
 else { $color="white";  $icon="gift.gif"; }
echo "<tr><td  gbcolor=$color><img src=/img/$icon>  </td></tr>";
 }
echo "</table>";
?>
********************************************************
$a=12;
$b=6.7;
$tot=$a + $b;
$tot=$a - $b;
$tot=$a * $b;
$tot=$a / $b;
$tot=$a % $b;
echo "$tot";
************************************************************
ARRAY (배열)
$data = array ( "사원"=>"홍길동",
"대리"=>"박진영", "과장"=>"춘삼이",
"대표"=>"코코넛" );
while ( list($jikgub,$name) = each($date) )
{
 echo $jikgub ."님은" .$name ."입니다.<br>";
}
?>
------------------------------------------------------------------
SWITCH 구문
$price=200;
switch ($price) {
 case (100) :
echo "옥션에서 입찰은 불가능합니다. ";
 break;
 case (200) :
echo "입찰 가능한 금액입니다.";
 break;
 case (300) :
echo "금액이 높은 입찰은 매우 환영 반갑습니다.";
 break;
default;  echo "옥션에 참여하고 있습니다.";
}
____________________________________
require "error.php";
if (!$name) { error("name");  exit;}
if (!$name) { error("id");  exit;}
if (!$name) { error("password");  exit;}
PHP출력및 디비 연동 프로그램 페이지
____________________________________
<?php
function popup_msg($msg) {
   echo("<script-x language=\"javascript-x\">
   <!--
   alert('$msg');
   history.back();
   //-->
   </script-x>");
}
********************************************************
function error($errcode) {
   switch ($errcode) {
      case ("name") :
         popup_msg("이름을 입력하세요.");
         break;
      case ("id") :
         popup_msg("아이디를 입력하세요.");
         break;
      case ("password") :
         popup_msg("비번을 입력하세요");
         break;
  default ;
}
 
---------------------------------------------------------------------------------
 
 
 
 
[[[[[ 에러출력페이지 만들기 ]]]]]
____________________________________
require "error.php";
if (!$name) { error("name");  exit;}
if (!$id) { error("id");  exit;}
if (!$password) { error("password");  exit;}
*위의 $변수들은 정규 패턴을 검사하면 좋다.
PHP출력및 디비 연동 프로그램 페이지
____________________________________
error.php 의 핵심 스크립
<?php
function popup_msg($msg) {
   echo("<script-x language=\"javascript-x\">
   <!--+
   alert('$msg');
   history.back();
   //-->
   </script-x>");
}
********************************************************
function error($errcode) {
   switch ($errcode) {
      case ("name") :
         popup_msg("이름을 입력하세요.");
         break;
      case ("id") :
         popup_msg("아이디를 입력하세요.");
         break;
      case ("password") :
         popup_msg("비번을 입력하세요");
         break;
  default ;
}
<?php
//공용 라이브러리에서 설정한다. (ex, lib.php)
$dburl = "localhost";  //db URL
$dbuser = "korea";  //DB 사용자 ID
$dbpasswd = "0000";  //비밀번호
$dbname = "korea";  //DB이름
$dbconn = mysql_connect("$dburl","$dbuser","$dbpasswd");
  mysql_select_db("$dbname",$dbconn);
---------------------------------------------------------------
   book.php
ex) require "lib.php";
      global $dbconn;
       $dbresult = mysql_query
               ("select * from member where id='$id' ",$dbconn);
        $row=mysql_fetch_array($dbresult);
        각 변수로 받아옴 ex) $row[name];
       echo "$row[name]";
       $dbresult = mysql_query
               ("select * from order where oid='$oid' ",$dbconn);
        $row2=mysql_fetch_array($dbresult);
        echo "$row2[name];
------------------------------------------------------------------
전송된 폼 값을 받아 화일을 작성하는 핵심PHP 코드
lib.php를 만드는 admin_processing.php
----------------------------------------------------------
<?
global $ntitle,$url,$dbname;
//기존화일을 연다
$fp = fopen("/lib/lib.php","w");
fwrite($fp," <?php
\$title = \"$ntitle\"; //사이트 이름
.....
");
fclose($fp);
<name type="text" name="title" value="<?php echo "$title"; ?> ">
 
 $url="http://211.254.138.191/gb/gb_write_form.php";
           $title="????????????";
           $id="root";
           $passwd="rlagmlwns";
           $listwidth="600";
           $bgcolor="green";
           $listbg="gray";
           $imgwidth="400";
           $dbname="guestbook_hj";
           $dbuser="root";
           $usedb="guestbook_hj";

 echo "
<script-x language = javascript-x>
        function imgopen(){
        winstate =
window.open('large_view.php?image=$row[id]','image','width=600,height=500,resizable=yes,scrollbars=yes');
        }
</script-x>";
 <a href=javascript-x:imgopen()><img src=ala.gif border=0></a>

<\>
 
반응형