9-php的cookie和session

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"]; ?>">
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值