Kuki Kawalan Sesi PHP dalam PHP

Dalam bahagian ini, kita akan belajar tentang Cookie melalui contoh di mana pengguna tidak perlu memasukkan semula nama pengguna dan kata laluan apabila dia melawat tapak web untuk kali pertama.

Pertama, izinkan saya memperkenalkan cara untuk menetapkan kuki dalam php.
php menyediakan fungsi yang membolehkan kami menetapkan kuki Fungsi ini ialah:

bool setcookie  (
        string $名字
        [, string $值]
        [, int $过期时间  = 0]
        [, string $路径]
        [, string $域名]
        [, bool $安全  = false]
        [, bool $http只读  = false]
    );

Penerangan Parameter
$Name Diperlukan. Menentukan nama kuki.
$value Pilihan. Menentukan nilai kuki.
Tempoh sah $adalah pilihan. Menentukan tempoh sah kuki.
$Path Pilihan. Menentukan laluan pelayan untuk kuki.
Nama $Domain Pilihan. Menentukan nama domain untuk kuki.
$Security Pilihan. Menentukan sama ada kuki dihantar melalui sambungan HTTPS yang selamat.
$http安Read adalah pilihan. Jika benar, maka js tidak boleh membaca dan menukar kuki, yang meningkatkan keselamatan.

Secara umumnya, kami sebenarnya tidak menggunakan banyak parameter seperti di atas untuk fungsi ini, kami biasanya menggunakannya seperti ini: setcookie(nama kuki, nilai kuki, tempoh sah kuki);

<🎜. >Ya, Hanya 3. Dengan cara ini, kita boleh membaca kuki melalui $_COOKIE['name'] pada bahagian pelayan.

Berikut ialah contoh:

Kami akan menamakan fail: cookie.php.

Mari kita simulasi contoh paling biasa yang kita lihat di Internet: proses memasukkan nama pengguna dan kata laluan dan log masuk dengan jayanya.

Mari bina log masuk pangkalan data, yang mempunyai pengguna jadual dan dua medan: nama pengguna dan kata laluan.

<?php
//第一次登陆的时候,通过用户输入的信息来确认用户
if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) {
    $userName = $_POST['username'];
    $password = $_POST['password'];
    //从db获取用户信息
    //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码
    $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) {
        //密码验证通过,设置cookies,把用户名和密码保存在客户端
        setcookie('username',$userName,time()+60*60*24*30);//设置时效一个月,一个月后这个cookie失效
        setcookie('password',$password,time()+60*60*24*30);
        //最后跳转到登录后的欢迎页面
        header('Location: welcome.php' . "?username=$userName");
    }
}

//再次访问的时候通过cookie来识别用户
if ( ($_COOKIE['username'] != null)  && ($_COOKIE['password'] != null) ) {
    $userName = $_COOKIE['username'];
    $password = $_COOKIE['password'];

    //从db获取用户信息
    //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码
    $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) {
        //验证通过后跳转到登录后的欢迎页面
        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>

Kod welcome.php yang melompat ke

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

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

Dengan cara ini, apabila saya melawat cookie.php buat kali pertama, saya perlu memasukkan nama pengguna dan kata laluan, dan selepas memasukkan itu, saya melompat untuk mengalu-alukan .php. Kemudian saya menutup pelayar dan membuka cookie.php semula kali ini saya tidak diminta untuk memasukkan maklumat pengguna, tetapi melompat terus ke welcome.php, kerana maklumat kuki yang kami simpan sebelum ini dihantar secara automatik ke pelayan oleh penyemak imbas. pelayan lakukan Selepas pemprosesan, kami melompat terus ke welcome.php. Mengetahui bahawa saya adalah pengguna yang log masuk sebelum ini, kami menggunakan teknologi kuki untuk mengekalkan keadaan protokol HTTP tanpa kewarganegaraan.

Ikuti ini dan saya percaya anda akan dapat menggunakan kuki.

Tiada lagi! ! ! sahaja! ! ! sahaja! ! ! Saya perlu mengatakan perkara penting tiga kali Kami biasanya tidak meletakkan nama pengguna dan kata laluan dalam kuki kerana ia tidak selamat dan boleh membocorkan maklumat anda sendiri dengan mudah. Kami hanyalah contoh belajar kuki.

Meneruskan pembelajaran
||
<?php //第一次登陆的时候,通过用户输入的信息来确认用户 if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) { $userName = $_POST['username']; $password = $_POST['password']; //从db获取用户信息 //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码 $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) { //密码验证通过,设置cookies,把用户名和密码保存在客户端 setcookie('username',$userName,time()+60*60*24*30);//设置时效一个月,一个月后这个cookie失效 setcookie('password',$password,time()+60*60*24*30); //最后跳转到登录后的欢迎页面 header('Location: welcome.php' . "?username=$userName"); } } //再次访问的时候通过cookie来识别用户 if ( ($_COOKIE['username'] != null) && ($_COOKIE['password'] != null) ) { $userName = $_COOKIE['username']; $password = $_COOKIE['password']; //从db获取用户信息 //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码 $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) { //验证通过后跳转到登录后的欢迎页面 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>
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!