ホームページ  >  記事  >  バックエンド開発  >  phpの基礎知識(4)-cookieの使い方

phpの基礎知識(4)-cookieの使い方

WBOY
WBOYオリジナル
2016-06-13 13:11:35956ブラウズ

PHPの基礎知識(4)〜Cookieの使い方
PHPの基礎知識 - Cookieの使い方

サンプルコードダウンロードページ http://xieye.iteye.com/blog/1336095 (添付ファイル内)

Cookieの簡単な定義: ブラウザが送信するときサーバーへのリクエスト 追加の送信データ。

Cookie の原理: Web プロトコルでは、サーバーがリクエストを返すと、次回ブラウザが同じドメイン ネーム サーバーに情報をリクエストするときに、データの一部をブラウザ クライアントに保存できると規定されています。
同時にこのセクションが自動的に保存され、情報はサーバーに送信されるため、ユーザーはこれらのことを理解する必要がなく、通常どおりインターネットを閲覧できます。
Cookie の機能の 1 つは、サーバーが時間パラメータを使用してクライアントを保存できることです。ブラウザはこのパラメータを使用して、Cookie の有効期限が切れているかどうかを判断します。有効期限が切れると、Cookie は
サーバーに届きません。
サーバーが Cookie を処理しない場合、ブラウザはサーバーにリクエストを送信するたびに、同じ内容の Cookie を自動的に送信します。
Cookie のもう 1 つの特徴は、複数の名前と値の組み合わせです。

例: 自動ログイン。
ホームページとログイン ページが 1 つの 3 つのページがあります

最初にユーザーを追加する必要があります
test.member(username,password)values('admin', md5('1' ) );

9.php、10.php、11quit.php は自動ログインなしの例です。

19.php、20.php、21quit.php は自動ログインの例です。

デモ
最初は一般的なログイン例です
http://localhost/command/peixun/cookie/9.php、ログインのプロンプト
10.phpと入力し、adminと入力します。 1 次に、9.php にジャンプします。現在のユーザー名が表示されます。必要に応じて終了できます。
「終了」ボタンをクリックしない場合は、ブラウザを直接閉じてから、ブラウザを開いて http://localhost/command/peixun/cookie/9.php と入力すると、ログインしていないことがわかります。


次に、Cookie を使用した自動ログインの例を示します。
http://localhost/command/peixun/cookie/19.php、ログインを求めるプロンプト
10.php と入力すると、追加のチェックボックスがあることがわかります。チェックされていない場合、その効果はまったく同じです。上記の例と同様に「admin」と入力すると、「1」と入力すると 19.php にジャンプし、現在のユーザー名が表示されます。必要に応じて終了します。
チェックを入れてadminと入力すると、19.phpにジャンプします。このとき、「終了」リンクをクリックしてブラウザを直接閉じることはできません。
デスクトップ上のブラウザ アイコンをダブルクリックすると、ブラウザが再度開き、ログインしていることがわかります。これは Cookie の効果です。

重要な注意事項: この例は Cookie の使用法を示すためにのみ使用されており、実際のアプリケーションではセキュリティ上の理由から、Cookie フィールドの意味を隠すことが最善であり、プログラムを変更する必要があります。それに応じて。

コードはダウンロードできます。2 番目の例のコードのみが表示されています

19.php

<?php
//会话的第2个例子,首页

//9.php,简单例子,首页
//10.php,简单例子,登录页
//11quit.php,简单例子,退出页
//19.php,     复杂例子,首页
//20.php,    复杂例子,登录页
//21quit.php, 复杂例子,退出页

require_once('../Public/CommandLine.php');

session_start();

//逻辑是如果未登录,则显示“请登录”,如果已登录,显示欢迎某某某
$html = '';
if (isset($_SESSION['islogin']) &&  $_SESSION['islogin'] == 1  ) { //已登录
    $html .= '欢迎您,' . $_SESSION['username'] .
            "    <a href='11quit.php'>退出</a>";
    
} else { //未登录分:有cookie的记住我,且为1
    if (isset($_COOKIE['rememberme']) &&  $_COOKIE['rememberme']==1 ) {
        $username = strval($_COOKIE['username']);
        $password = strval($_COOKIE['password']);
        $db = Sys::getdb();
        $select = $db->select();
        $select->from('test.member', 'count(*)'   )
               ->where('username=?', $username)
               ->where('password=?', $password);
        $result = $db->fetchOne($select);
        if ($result) { //如果是对的
            $_SESSION['islogin'] = 1;
            $_SESSION['username'] = $username;
            
            $html .= '欢迎您,' . $_SESSION['username'] .
            "    <a href='21quit.php'>退出</a>";
            
        }
    }
}

if(!( isset($_SESSION['islogin']) &&  $_SESSION['islogin'] == 1 ) ){
    $html .= '<a href="20.php">请登录</a>';
} 

$html .= "<br><h1>这是首页<h1>";
echo $html;




20.php
<?php
//自动登录的登录页
require_once('../Public/CommandLine.php');

session_start();

$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
    $html = <<<longs
<html>    
<body>
  <form method="post">
    请输入用户名:<input type="text" name="username" value=''><br>
    请输入密码:<input type="text" name="password" value=''><br>
    <input type="checkbox" name="rememberme" value="1" />下次自动登录<br>
    <input type="submit" value="登录" >
  </form>
</body>  
</html>  
longs;
    echo $html;
    
} else {
    //echo $_POST['name1'];
    $username = $_POST['username'];
    $password  = $_POST['password'];
    $db = Sys::getdb();
    $select = $db->select();
    $select->from('test.member', 'count(*)'   )
           ->where('username=?', $username)
           ->where('password=?', md5($password));
    $result = $db->fetchOne($select);
    if ($result) {
        $_SESSION['islogin'] = 1;
        $_SESSION['username'] = $username;
        
        
        $time = time() + 3600 * 24 * 365;
        
        setcookie('rememberme', intval($_POST['rememberme']), $time, "/");
        setcookie('password',  md5($password), $time, "/");
        setcookie('username',  $username, $time, "/");
        
        header('Location: 19.php');
    }else {
        
        $html = <<<longs
<html>    
<body>

  请输入正确的用户名和密码
  <form method="post">
    请输入用户名:<input type="text" name="username" value='{$username}'><br>
    请输入密码:<input type="text" name="password" value='{$password}'><br>
    <input type="checkbox" name="rememberme" value="1" />下次自动登录<br>
    <input type="submit" value="登录" >
  </form>
</body>  
</html>  
longs;
        echo $html;
    }
    
}



21quit.php
<?php
//第2个例子,自动登录的退出页
require_once('../Public/CommandLine.php');

session_start();

$_SESSION['islogin'] =0;
$date = time() - 3600 * 24 * 365;
foreach($_COOKIE as $key => $ko){
    if ($key != 'PHPSESSID') {
        setcookie($key, "", $date, "/"); //删除cookie的写法
    }
}
header('Location: 19.php');

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。