文章目录
php的cookie和session
1、cookie
cookie 常用于识别用户。
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
如何创建 Cookie?
setcookie() 函数用于设置 cookie。
**注释:**setcookie() 函数必须位于 标签之前。
setcookie(name, value, expire, path, domain);
参数 | 描述 |
---|---|
name | 必需。规定 cookie 的名称。 |
value | 必需。规定 cookie 的值。 |
expire | 可选。规定 cookie 的有效期。 |
path | 可选。规定 cookie 的服务器路径。 |
domain | 可选。规定 cookie 的域名。 |
secure | 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 |
在下面的例子中,我们将创建名为 “user” 的 cookie,并为它赋值 “runoob”。我们也规定了此 cookie 在一小时后过期:
<?php
setcookie("user", "admin", time()+3600);
?>
<html>
**注释:**在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)
实例 2
您还可以通过另一种方式设置 cookie 的过期时间。这也许比使用秒表示的方式简单。
<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>
<html>
.....
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
在下面的实例中,我们取回了名为 “user” 的 cookie 的值,并把它显示在了页面上:
<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
var_dump($_COOKIE);
?>
在下面的实例中,我们使用 isset() 函数来确认是否已设置了 cookie:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
echo "普通访客!<br>";
?>
</body>
</html>
如何删除 Cookie?
当删除 cookie 时,您应当使过期日期变更为过去的时间点。
删除的实例:
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>
2、session
PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
PHP Session 变量
您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。
PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。
开始 PHP Session
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
**注释:**session_start() 函数必须位于 标签之前:
<?php session_start(); ?>
<html>
<body>
</body>
</html>
上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
<?php
session_start();
// 存储 session 数据
$_SESSION['views']=1;
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
// 检索 session 数据
echo "浏览量:". $_SESSION['views'];
?>
</body>
</html>
在下面的实例中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 “views” 变量。如果已设置 “views” 变量,我们累加计数器。如果 “views” 不存在,则创建 “views” 变量,并把它设置为 1:
<?php
session_start();
if(isset($_SESSION['views']))
{
$_SESSION['views']=$_SESSION['views']+1;
}
else
{
$_SESSION['views']=1;
}
echo "浏览量:". $_SESSION['views'];
?>
销毁 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?php
session_start();
if(isset($_SESSION['views']))
{
unset($_SESSION['views']);
}
?>
您也可以通过调用 session_destroy() 函数彻底销毁 session:
<?php
session_destroy();
?>
实验:简单的注册页面
需求:
1、开始动手写一个页面吧
2、编写一个网站的登录页面
3、在登录页面下面要包含一个注册页面的超链接
4、点击超链接,则可以开始注册
5、注册页面包含,注册所用的账号、密码、手机号码、喜欢的图片上传
6、其中账号和密码以及手机号码为必填项,喜欢的图片为选填
7、注册成功直接回显到注册页面
网站首页如下
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>欢迎来到此页面进行登录</h1>
<form action="yanzheng.php" method="POST">
<input type="name" value="请输入账号" ></br>
<input type="password" value=""></br>
<input type="submit">
</form>
<a href="zhuce.php">注册用户</a>
</body>
</html>
注册页面如下:
<head>
<meta charset="utf-8">
</head>
<?php
$name=$_POST['neme'];
$password1=$_POST['password1'];
$password2=$_POST['password2'];
$shouji=$_POST['shouji'];
$name=$_FILES['touxiang'];
echo $name,$password1,$password2,$shouji,$name;
?>
<form action="" method="post" enctype="multipart/form-data" >
名字:
<input type="text" name="name" > <br>
密码:
<input type="password" name="password1" ><br>
重新输入密码:
<input type="password" name="password2" ><br>
请输入手机号码:
<input type="passwrd" name="shouji" ><br>
上传头像:
<input type="file" name="touxiang" ><br>
<input type="submit" value="提交">
</form>
开始完善各个规则【账号和密码以及手机号码为必填项】,密码验证等
<head>
<meta charset="utf-8">
</head>
<?php
$name=$_POST['name'];
$password1=$_POST['password1'];
$password2=$_POST['password2'];
$shouji=$_POST['shouji'];
$tupian=$_FILES['tupian'];
// echo $name,$password1,$password2,$shouji,$tupian;
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty($name) ||
empty($password1) ||
empty($password2) ||
empty($shouji)){
$ERR="账号密码、手机号码不能为空";
//密码长度8位,密码两次输入一致
//密码验证
//手机11位
//文件上传jpg
}elseif(strlen($password1)<8){
$ERR="密码长度不足八位";
}elseif($password1!=$password2){
$ERR="两次输入密码不一致";
}elseif(strlen($shouji)!="11"){
$ERR="手机号码格式有问题";
}else{
$ERR="注册成功";
echo $_FILES["tupian"]["name"];
if (file_exists("tupian/" . $_FILES["tupian"]["name"])){
echo $_FILES["tupian"]["name"] . " 文件已经存在。 ";
}else{
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["tupian"]["tmp_name"], "tupian/" . $_FILES["tupian"]["name"]);
// echo "文件存储在: " . "tupian/" . $_FILES["tupian"]["name"];
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data" >
名字:
<input type="text" name="name" > <br>
密码:
<input type="password" name="password1" ><br>
重新输入密码:
<input type="password" name="password2" ><br>
请输入手机号码:
<input type="passwrd" name="shouji" ><br>
上传头像:
<input type="file" name="tupian" ><br>
<input type="submit" value="提交">
</form>
<?php
echo $ERR;
echo "你注册的用户为:".$name."</br>";
echo "你注册的手机号码:".$shouji."</br>";
?>
<img src="<?php echo "tupian/".$_FILES["tupian"]["name"]; ?>">