PHPのクッキーとセッションプログラミング

34435 ワード


    PHPを使ってユーザ認証を行う方法は、HTTp認証、セッション使用、クッキー使用の三つがあります.
  
    phpを使ってhttp認証を行います.
             header()関数と$PHP_を結合することによりAUTH_US ER、$PHP_AUTH_pwグローバル変数の方法で作成された基本認証機構.
         簡単なPHPスクリプトは、適切なHTTPヘッダを送信することにより、クライアント画面にユーザ名/パスワードダイアログを自動的に表示し、HTTP認証要求/応答システムをシミュレートすることができる.
           
 1 <?php
2 if((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW)))
3 {
4 header('WWW-Authenticate:Basic reallm="My Private Stuff"');
5 header('HTTP/1.0 401 Unauthorized');
6 echo 'Authorization Required.';
7 exit;
8 }
9 else if((isset($PHP_AUTH_USET)) && (isset($PHP_AUTH_PW)))
10 {
11 if(($PHP_AUTH_USER!="validname") || ($PHP_AUTH_PW!="goodpassword"))
12 {
13 header('WWW-Authenticate:Basic reallm="My Private Stuff"');
14 header('HTTP/1.0 401 Unauthorized');
15 echo 'Authorization Required.';
16 exit;
17 }
18 else if(($PHP_AUTH_USE=="validname") || ($PHP_AUTH_PW=="goodpassword"))
19 {
20 echo 'YOu are authorized';
21 }
22 }
23 ?>
  
運転結果は以下の通りです.
 
PHP中cookie和会话编程
    クッキーは、サーバがユーザのマシンに情報を格納する方法である.このようにして、局は、アクセス中にユーザを記憶または追跡することができる.
      
    Cookieの構成と応用:
  
       クッキーはHTTPを通じて  Headersはサーバ端からブラウザに戻り、まずサーバ端はレスポンスの中でSet-cookie headerを利用してクッキーを作成し、その後、ブラウザはその要求の中でクッキーheader(これはすでに作成されたクッキーを含む)を通じてサーバに戻り、ブラウザの検証を完了する.
     
    
Setcookie(string name, string value, int expire,string path, string domain, int secure);
 
      nameはcookie変数名の識別であり、phpでは彼がクッキー変数を参照するのと同じように一般変数名を使用することができます.valueはcookie変数の初期値であり、expireはcookie変数の有効時間を表します.pathはこのクッキー変数の関連経路である.domainはcookie変数のウェブサイトを表します.secureはhttpsの安全な伝送に有効です.
 
PHP中cookie和会话编程
 
 
 
Cookieの受信と処理
PHPはCookieの受信と処理に対するサポートが非常に良く、完全に自動的であり、FORM変数の原則と同じで、特に簡単である.
例えばMyCookierというCookieを設定すると、PHPは自動的にWEBサーバから受信したHTTPヘッダからそれを分析して、普通の変数と同じ変数を形成します.myCookieという変数の値はCookieの値です.配列も同じです.もう一つの方法はPHPのグローバル変数$HTTP_を参照することです.COOKIE_VRS配列
それぞれの例は以下の通りです.
1 echo $MyCookie;
2 echo $CookieArray[0];
3 echo $_COOKIE["MyCookie"];
4 echo $HTTP_COOKIE_VARS["MyCookie"]; 
 
Cookieを削除
既存のCookieを削除するには、2つの方法があります.
1 SetCookie("Cookie", "");
2 SetCookie("Cookie", "value" , time()-1 / time() );
  
Cookieを使用する制限
1、HTMLファイルのコンテンツ出力前に必ず設定してください.
2、異なるブラウザではCookieの処理が不一致で、エラーの結果が発生することがあります.
3、制限はクライアントにあります.一つのブラウザで作成できるCookieの数は最大30個で、各ブラウザは4 KBを超えてはいけません.各WEBサイトで設定できるCookieの総数は20個を超えてはいけません.
 
 
 1 <?php
2 if($_GET[out])
3 {
4 setcookie('id','');
5 setcookie('pass','');
6 echo '<script>location.href="cook.php"</script>';
7 }
8 if($_POST['name'] && $_POST['password'])
9 {
10 setcookie('id',$_POST['name'],time()+3600);
11 setcookie('pass',$_POST['password'],time()+3600);
12 echo '<script>location.href="cook.php"</script>';
13 }
14 else
15 {
16 echo $_POST['name'];
17 }
18 if($_COOKIE[id] && $_COOKIE[pass])
19 {
20 echo " <br> :".$_COOKIE[id]."<br> :".$_COOKIE[pass];
21 echo '<br><a href="cook.php?out=out"> </a>';
22 }
23 ?>
24 <form action="" method="post">
25 <input type="text" name="name"><br>
26 <input type="password" name="password"><br>
27 <input type="submit" value=" ">
28 </form>
  
 
Sessionの構成と応用:
            
 1 session_start();                    //   session.      
2 $_SESSION[name]=value; // Seeeion
3 echo $_SESSION[name]; // session
4 isset($_SESSION[name]); //
5 unset($_SESSION[name]); //
6 session_destroy(); // session
7 session_name(): session
8 session_module_name(): session
9 session_save_path(): session
10 session_id(): session
11 session_register():
12 session_is_registered():
13 session_decode():session
14 session_encode():session
 
あるウェブサイトを閲覧する時、ブラウザが閉じられていない場合、WEBアプリケーションの開始と終了.一つのsessionは数回のhttpの要求と返答ができます.作成されたsessionには一つの固有のマーク列があります.sessionIDといいます.この列はクライアントに送信されます.サーバー端にも同じ固有のマーク列の入り口が生成されます.この記号列はテキストに入れますか?データベースに入れます.そしてプログラムはこのsession IDの下でいくつかのセッション変数を登録することができます.これらの変数は、一般的な変数のようにテキストまたは数値情報を保存し、セッションによって読み出しまたは書き込みができます.sessionの一意の識別は、一般にシステム内部で唯一のsession IDである.
 
 
 1 <?php
2 session_start();
3 if($_GET[out])
4 {
5 unset($_SESSION[id]);
6 unset($_SESSION[pass]);
7 }
8 if($_POST['name'] && $_POST['password'])
9 {
10 $_SESSION[id]=$_POST['name'];
11 $_SESSION[pass]=$_POST['password'];
12 }
13
14 if($_SESSION[id] && $_SESSION[pass])
15 {
16 echo " <br> :".$_SESSION[id]."<br> :".$_SESSION[pass];
17 echo '<br><a href="session.php?out=out"> </a>';
18 }
19 ?>
20 <form action="" method="post">
21 <input type="text" name="name"><br>
22 <input type="password" name="password"><br>
23 <input type="submit" value=" ">
24 </form>