PHP 세션 제어 쿠키

이 섹션에서는 사용자가 처음 웹사이트를 방문할 때 사용자 이름과 비밀번호를 다시 입력할 필요가 없는 예를 통해 쿠키에 대해 알아봅니다.

먼저 PHP에서 쿠키를 설정하는 방법을 소개하겠습니다.
php는 쿠키를 설정할 수 있는 기능을 제공합니다.

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

매개변수 설명
$Name 필수입니다. 쿠키의 이름을 지정합니다.
$value 선택사항. 쿠키의 값을 지정합니다.
$유효기간은 선택사항입니다. 쿠키의 유효 기간을 지정합니다.
$Path 선택사항. 쿠키의 서버 경로를 지정합니다.
$도메인 이름 선택사항. 쿠키의 도메인 이름을 지정합니다.
$Security 선택사항. 쿠키가 보안 HTTPS 연결을 통해 전송되는지 여부를 지정합니다.
$httpannRead는 선택사항입니다. true인 경우 js는 쿠키를 읽고 변경할 수 없으므로 보안이 강화됩니다.

일반적으로 이 함수의 경우 실제로는 위와 같이 많은 매개변수를 사용하지 않습니다. setcookie(쿠키 이름, 쿠키 값, 쿠키 유효 기간)

네, 딱 3개요. 이런 방식으로 서버 측에서 $_COOKIE['name']을 통해 쿠키를 읽을 수 있습니다.

예는 다음과 같습니다.
파일 이름은 cookie.php로 지정합니다.

인터넷에서 볼 수 있는 가장 일반적인 예인 사용자 이름과 비밀번호를 입력하고 성공적으로 로그인하는 과정을 시뮬레이션해 보겠습니다.

사용자 테이블과 사용자 이름 및 비밀번호라는 두 개의 필드가 있는 데이터베이스 로그인을 구축해 보겠습니다.

<?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>

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

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

로 점프하는 Welcome.php 코드 이렇게 cookie.php를 처음 방문할 때 사용자 이름과 비밀번호를 입력해야 하고, 입력 후 .php를 환영합니다. 그런 다음 브라우저를 닫고 다시 cookie.php를 열었습니다. 이번에는 사용자 정보를 입력하라는 메시지가 표시되지 않고 바로 Welcome.php로 점프했습니다. 이전에 저장한 쿠키 정보가 브라우저에 의해 자동으로 서버로 전송되었기 때문입니다. 서버가 처리한 후, 즉시 Welcome.php로 이동합니다. 서버가 우리를 알고 있습니다! 내가 이전에 로그인한 사용자임을 알고 쿠키 기술을 사용하여 상태 비저장 HTTP 프로토콜의 상태를 유지합니다.
이를 따르면 쿠키를 사용할 수 있다고 믿습니다.

더 이상은 없습니다! ! ! 오직! ! ! 오직! ! ! 중요한 점을 세 번 말씀드리겠습니다. 일반적으로 쿠키에는 사용자 이름과 비밀번호를 넣지 않습니다. 왜냐하면 쿠키는 안전하지 않고 귀하의 정보가 쉽게 유출될 수 있기 때문입니다. 우리의 것은 쿠키 학습의 한 예일 뿐입니다.

지속적인 학습
||
<?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>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~