十、会话控制
Cookie
Cookie
存储在客户端- 向客户端电脑中设置
Cookie
setcookie();
- 在服务器端上提取
Cookie
内容$_COOKIE
- 将多维数组应用于
Cookie
中setcookie("member[name]", '名称');
setcookie("member[email]", '[email protected]');
- 删除
Cookie
setcookie("member", '', time()-1);
<?php header('Content-type:text/html;charset=utf-8'); var_dump(setcookie('name','17046112',time()+3600));//向客户端电脑中设置Cookie var_dump(setcookie('email','[email protected]',time()+3600));//向客户端电脑中设置Cookie var_dump(setcookie('member[name]','17046112',time()+3600));//向客户端电脑中设置Cookie var_dump($_COOKIE);//在服务器端上提取 Cookie 内容 var_dump(setcookie('name', '', time()-1));//删除Cookie ?>
2. session
session
存储在服务器端- 开启
session
session_start();
- 开启一个会话
- 打开已经存在的会话
- 使用
session
存储数据 - 注销变量与销毁
session
//开启session
<?php
header('Content-type:text/html;charset=utf-8');
session_start();
$_SESSION['name'] = '17046112';
$_SESSION['email'] = '[email protected]';
$_SESSION['url'] = 'baidu.com';
?>
//使用 session 存储数据
<?php
header('Content-type:text/html;charset=utf-8');
session_start();
var_dump($_SESSION);
var_dump($_COOKIE);
var_dump(session_name());
?>
//注销变量与销毁session
<?php
session_start();//打开销毁会话
session_unset();//释放所有的会话变量
session_destroy();//销毁一个会话中的全部数据
setcookie(session_name(), "", time()-3600, "/");//销毁保存在客户端的卡号(session id)
?>
- 基于
Cookie
和session
的登录模块//login.php <?php header('Content-type:text/html;charset=utf-8'); if (isset($_COOKIE['username']) && $_COOKIE['username'] === '17046112') { exit("你已登录请勿重复登录!"); } if(isset($_POST['submit'])){ if($_POST['username'] !== '' && $_POST['password'] !== ''){ if($_POST['username'] === '17046112' && $_POST['password'] === '17046112'){ if(setcookie('username', $_POST['username'], time()+3600)){ header("Location:skip.php?url=index.php&info=登录成功!"); }else{ echo "Cookie 设置失败!"; } }else{ header("Location:skip.php?url=login.php&info=账号或密码输入错误,登录失败!"); } }else{ echo "请输入账号或密码!"; } } ?> <!doctype html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>登录界面</title> </head> <body> <form method="post" action="login.php"> 帐号:<input type='text' name='username' /> 密码:<input type='password' name='password' /> <input type="submit" name="submit" value="登录" /> </form> </body> </html> //skip.php <?php if(!isset($_GET['url']) || !isset($_GET['info'])){ exit(); } ?> <!doctype html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="refresh" content="3;url=<?php echo $_GET['url'] ?>" /> <title>正在跳转中...</title> </head> <body> <div style="text-align: center;font-size: 20px"> <?php echo $_GET['info']?>三秒后自动跳转! </div> </body> </html> //index.php <?php header('Content-type:text/html;charset=utf-8'); if (isset($_COOKIE['username']) && $_COOKIE['username'] === '17046112') { echo "{$_COOKIE['username']}登录成功!"; echo "<a href='logout.php'> 注销 </a>"; }else{ echo "<a href='login.php'> 请登录 </a>"; } ?> //logout.php <?php header('Content-type:text/html;charset=utf-8'); if (isset($_COOKIE['username']) && $_COOKIE['username'] === '17046112') { if(setcookie('username', $_POST['username'], time()-3600)){ header("Location:skip.php?url=login.php&info=注销成功,正在跳转中!"); }else{ header("Location:skip.php?url=login.php&info=注销失败,请稍后再试!"); } } ?>