亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

php 會(huì)話控制 之 PHP中的Cookie

這節(jié)我們透過(guò)一個(gè)使用者第一次登陸網(wǎng)站後,再次造訪不需要重複輸入使用者名稱和密碼的範(fàn)例來(lái)學(xué)習(xí)Cookie。

先介紹一下php中設(shè)定cookie的方法。
php中提供了一個(gè)函數(shù)來(lái)讓我們?cè)O(shè)定cookie,這個(gè)函數(shù)是:

bool setcookie  (
        string $名字
        [, string $值]
        [, int $過(guò)期時(shí)間  = 0]
        [, string $路徑]
        [, string $域名]
        [, bool $安全  = false]
        [, bool $http只讀  = false]
    );

參數(shù) 描述
$名字 必要。規(guī)定 cookie 的名稱。
$值 可選。規(guī)定 cookie 的值。
$有效期限 可選。規(guī)定 cookie 的有效期限。
$路徑 可選。規(guī)定 cookie 的伺服器路徑。
$域名 可選。規(guī)定 cookie 的網(wǎng)域名稱。
$安全 可選。規(guī)定是否透過(guò)安全的 HTTPS 連線來(lái)傳輸 cookie。
$http安讀 可選。如果true,那麼js就無(wú)法讀取改cookie,增加安全性。

一般來(lái)說(shuō),我們其實(shí)用不到上面那麼多參數(shù),對(duì)於這個(gè)函數(shù),我們一般這麼用: setcookie(cookie名稱,cookie值,cookie有效期);

沒(méi)錯(cuò),就那麼3個(gè)。如此一來(lái),我們就可以在服務(wù)端透過(guò)$_COOKIE['name'] 來(lái)讀取cookie了。

以下是範(fàn)例:
我們將檔案名稱命名為:cookie.php。

我們來(lái)模擬我們?cè)诰W(wǎng)路上見(jiàn)到最常見(jiàn)的例子:輸入使用者名稱和密碼,登陸成功的過(guò)程。

我們來(lái)建立一個(gè)資料庫(kù)login,其中有表user,有username和password這兩個(gè)欄位。

<?php
//第一次登陸的時(shí)候,通過(guò)用戶輸入的信息來(lái)確認(rèn)用戶
if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) {
    $userName = $_POST['username'];
    $password = $_POST['password'];
    //從db獲取用戶信息
    //PS:數(shù)據(jù)庫(kù)連接信息改成自己的 分別為主機(jī) 數(shù)據(jù)庫(kù)用戶名 密碼
    $conn = mysqli_connect('localhost','root','root');

    mysqli_select_db($conn,'test');

    $sql = "select * from user where `username` = '$userName' ";
    $res = mysqli_query($conn,$sql);
    $row = mysqli_fetch_assoc($res);
    if ($row['password'] == $password) {
        //密碼驗(yàn)證通過(guò),設(shè)置cookies,把用戶名和密碼保存在客戶端
        setcookie('username',$userName,time()+60*60*24*30);//設(shè)置時(shí)效一個(gè)月,一個(gè)月后這個(gè)cookie失效
        setcookie('password',$password,time()+60*60*24*30);
        //最后跳轉(zhuǎn)到登錄后的歡迎頁(yè)面
        header('Location: welcome.php' . "?username=$userName");
    }
}

//再次訪問(wèn)的時(shí)候通過(guò)cookie來(lái)識(shí)別用戶
if ( ($_COOKIE['username'] != null)  && ($_COOKIE['password'] != null) ) {
    $userName = $_COOKIE['username'];
    $password = $_COOKIE['password'];

    //從db獲取用戶信息
    //PS:數(shù)據(jù)庫(kù)連接信息改成自己的 分別為主機(jī) 數(shù)據(jù)庫(kù)用戶名 密碼
    $conn = mysqli_connect('localhost','root','root','test');
    $res = mysqli_query($conn,"select * from user where `username` =  '$userName' ");
    $row = mysqli_fetch_assoc($res);
    if ($row['password'] == $password) {
        //驗(yàn)證通過(guò)后跳轉(zhuǎn)到登錄后的歡迎頁(yè)面
        header('Location: welcome.php' . "?username=$userName");
    }
}

?>
<html>
<head>

</head>
<body>
<form action="" method="POST">
    <div>
        用戶名:<input type="text" name="username" />
        密  碼:<input type="text" name="password" />
        <input type="submit" value="登錄">
    </div>
</form>
</body>
</html>

跳到的welcome.php程式碼

<?php
$user = $_GET['username'];
?>
<html>
<head>

</head>
<body>
   welcome,<?php echo $user;?>
</body>
</html>

這樣,當(dāng)我第一次造訪cookie.php的時(shí)候,我需要輸入使用者名稱和密碼,輸入後跳到了welcome .php。然後我關(guān)閉瀏覽器,再次打開(kāi)cookie.php,這次沒(méi)有要求我輸入用戶信息,而是直接跳到了welcome.php,因?yàn)橹拔覀兇娴腸ookie信息被瀏覽器自動(dòng)發(fā)送到了服務(wù)端,服務(wù)端做完處理直接跳到了welcome.php,伺服器認(rèn)識(shí)我們了!知道我是之前那個(gè)登陸的用戶,這樣我們就透過(guò)cookie技術(shù)讓無(wú)狀態(tài)的HTTP協(xié)定保持了狀態(tài)。
照著這個(gè)做一遍,我相信你會(huì)用cookie了。

只不過(guò)! ! !只不過(guò)! ! !只不過(guò)! ! !重要的事要說(shuō)3遍,我們一般是不會(huì)把用戶名和密碼放到cookie中的,因?yàn)檫@並不安全,容易洩露自己的信息,請(qǐng)不要把重要的信息放到cookie中。我們這個(gè)只是一個(gè)學(xué)習(xí)cookie的例子。

繼續(xù)學(xué)習(xí)
||
<?php //第一次登陸的時(shí)候,通過(guò)用戶輸入的信息來(lái)確認(rèn)用戶 if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) { $userName = $_POST['username']; $password = $_POST['password']; //從db獲取用戶信息 //PS:數(shù)據(jù)庫(kù)連接信息改成自己的 分別為主機(jī) 數(shù)據(jù)庫(kù)用戶名 密碼 $conn = mysqli_connect('localhost','root','root'); mysqli_select_db($conn,'test'); $sql = "select * from user where `username` = '$userName' "; $res = mysqli_query($conn,$sql); $row = mysqli_fetch_assoc($res); if ($row['password'] == $password) { //密碼驗(yàn)證通過(guò),設(shè)置cookies,把用戶名和密碼保存在客戶端 setcookie('username',$userName,time()+60*60*24*30);//設(shè)置時(shí)效一個(gè)月,一個(gè)月后這個(gè)cookie失效 setcookie('password',$password,time()+60*60*24*30); //最后跳轉(zhuǎn)到登錄后的歡迎頁(yè)面 header('Location: welcome.php' . "?username=$userName"); } } //再次訪問(wèn)的時(shí)候通過(guò)cookie來(lái)識(shí)別用戶 if ( ($_COOKIE['username'] != null) && ($_COOKIE['password'] != null) ) { $userName = $_COOKIE['username']; $password = $_COOKIE['password']; //從db獲取用戶信息 //PS:數(shù)據(jù)庫(kù)連接信息改成自己的 分別為主機(jī) 數(shù)據(jù)庫(kù)用戶名 密碼 $conn = mysqli_connect('localhost','root','root','test'); $res = mysqli_query($conn,"select * from user where `username` = '$userName' "); $row = mysqli_fetch_assoc($res); if ($row['password'] == $password) { //驗(yàn)證通過(guò)后跳轉(zhuǎn)到登錄后的歡迎頁(yè)面 header('Location: welcome.php' . "?username=$userName"); } } ?> <html> <head> </head> <body> <form action="" method="POST"> <div> 用戶名:<input type="text" name="username" /> 密 碼:<input type="text" name="password" /> <input type="submit" value="登錄"> </div> </form> </body> </html>
提交重置程式碼