首页 > 代码库 > 2017.8.01

2017.8.01

一、sessio变量的应用实例。

1、做个简单的登录界面,获取所需的PHP文件里面可以写有HTML

<?php
session_start();//必须先执行此句,前面不要有任何输出。
header("Content-type:text/html;charset=utf-8");//解决中文乱码

if(isset($_SESSION[‘username‘])){
    header(‘location:user.php‘);//跳转函数,location后面为地址。
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登陆</title>
</head>
<body>
<form action="deng.php" method="post"> 用户名:<input type="text" name="username" value="http://www.mamicode.com/admin" /><br /> 密码:<input type="password" name="password" value="http://www.mamicode.com/123456" /><br /> <input type="submit" value="http://www.mamicode.com/提交" /> </form>> </body> </html>

2、获取所得数值,并把其赋值给session变量。后台连接数据库验证所得值是否正确。

<?php
/** */
session_start();//使用session变量就必须开启,
header("Content-type:text/html;charset=utf-8");//解决中文乱码
if(isset($_POST[‘username‘])&&isset($_POST[‘password‘])){
    //这里需要查询数据库,目前只做简单判断
    $username=$_POST[‘username‘];
    $password=$_POST[‘password‘];

    if($username==‘admin‘&&$password==‘123456‘)//此处没有查询数据库,使用已知的值
{
//设置session $_SESSION[‘username‘]=$username; header(‘location:user.php‘); //跳转到指定地方 }else{ echo "用户名和密码不匹配"; } }

3、在其他页面使用session变量。在其他页面通过之前设置好的session变量$_SESSION[‘username‘]从数据库获取其他所需数值。

<?php
/** */
session_start();
header("Content-type:text/html;charset=utf-8");//解决中文乱码


if(isset($_SESSION[‘username‘])){ echo "恭喜".$_SESSION[‘username‘]."登陆成功<br />"; echo ‘<a href="http://www.mamicode.com/logout.php">退出登陆</a >‘; }else{ header(‘location:deng0.php‘); }

4、删除会话,删除会话id会话变量以及客户端cookie值。退出登录时的操作。

<?php
/** */
session_start();
header("Content-type:text/html;charset=utf-8");//解决中文乱码
/*
//删除会话变量$_SESSION[‘user‘]="yangyang",不会删除session文件和session_Id
session_unset();
echo session_Id(),‘<br />‘;
//删除会话变量$_SESSION[‘user‘]="yangyang",不会删除session文件和session_Id
$_SESSION=array();
echo session_Id(),‘<br />‘;

//删除会话Id和会话文件,它不会删除内存中的会话变量$_SESSION[‘user‘]="yangyang"
session_destroy();
print_r($_SESSION);echo session_Id(),‘<br />‘;
*/
//如果要删除会话Id和会话文件,并且清空会话变量,需要配合session_unset()来使用,此时服务器中的会话文件和Id和变量都被删除了
//但是客户端cookie还在
session_unset();
session_destroy();
//清空cookie会话Id的值,路径必须写上
setcookie(session_name(),session_id(),time()-10,‘/‘);
echo "感谢使用!";

二、cookie变量的应用实例。

1、通过例子中的$_COOKIE[‘hist‘]变量存储用户最近10条浏览记录

<?php
/*序列化和反序列化函数测试
$arr=[1=>‘a‘,2=>‘b‘,3=>‘c‘];
$a=serialize($arr);//
echo $a;
print_r(unserialize($a));
*/
header("Content-type:text/html;charset=utf-8");//解决中文乱码

//1、获取URL地址,用到变量$_SERVER[‘REQUEST_URI‘]
$url=$_SERVER[‘REQUEST_URI‘];//获取当前URL地址 //echo $url,‘<br />‘; //echo a,‘<br />‘; //2、将URL放入到cookie中 //用一个数组来保存URL,因为记录比较多用变量存储太麻烦 $arr=[]; //2、首先判断是否有浏览记录,如果有,则将当前URL放到浏览记录的最前面//反之,则新建一个浏览记录 if(isset($_COOKIE[‘hist‘])) { $arr=unserialize($_COOKIE[‘hist‘]);//变成数组,取出来的是字符串需要反序列化,因为下面要压入数组中 array_unshift($arr,$url);//压入数组,将URL地址放到历史记录最前面 $arr=array_unique($arr);//保证浏览记录不重复 //只保存最近10条浏览记录 if(count($arr)>10){ array_pop($arr);//弹出最早进入的一条数据 } //2、再次存放到cookie中 setcookie(‘hist‘,serialize($arr));//放入cookie中 }else{ $arr[]=$url;//将URL地址存入数组中 //1、首次设置cookie setcookie(‘hist‘,serialize($arr));//把数组序列化为字符串,存入$_COOKIE[‘hist‘] } echo "历史浏览记录<br />"; //print_r($arr); echo ‘<ol>‘; foreach($arr as $k=>$v){ //echo $v,‘<br />‘; echo ‘<li>‘.$v.‘</li>‘; } echo ‘</ol>‘; echo ‘<hr />‘; echo ‘<a href="http://www.mamicode.com/?id=‘.mt_rand(1,100).‘">随机产生一个Id</a >‘;

 

2017.8.01