Heim >php教程 >php手册 >php之session会话控制

php之session会话控制

WBOY
WBOYOriginal
2016-06-13 09:11:071145Durchsuche

php之session会话控制

当浏览器将 cookie 数据关闭之后,网站使用cookie传递将不能进行,而url参数传递还是能够进行(session),其实编写php的session会话控制整体和cookie会话控制一样

首先建立编写要用到的php文件

这一步是和 cookie 一样,其实session也可以通过cookie进行传递,在 cookie的基础上在开的头开启session:session_start()

 

<!--?php

	session_start();
    //判断:如果没登录自动跳转到登录页面
    if(!$_SESSION[isLogin5]){
        header(Location:login.php);
    }</pre-->

下面要注意的是,login.php 的跳转页面不能使用header 而只能通过 javascript 进行跳转

 

 

//跳转界面
echo &#39;<script>&#39;;|r|
echo location=&#39;index.php&#39;;|r|
echo &#39;</script>&#39;;

然后将 $_COOKIE[ ] 改为 $_SESSION[ ] 即可

 

session 通过 cookie传递就是这样,下面主要是讲解一下 url参数传递

第一种:通过sid的方式进行参数传递,即在链接或表单后加上 “?sid=

这种方法也可以使用配置文件中的PHPSESSID来替换sid,也能达到一样的效果

login.php

 




login.php 的php部分也稍作修改

 

 

<!--?php
	
	session_start();
	echo session_id().<br-->;  //跳转页面不能不是header

    if(isset($_POST[sub])){
    	include conn.inc.php;

    	$sql=select id from users where name=&#39;{$_POST[name]}&#39; and password=&#39;.md5($_POST[password]).&#39;;

    	$result=$mysqli->query($sql);

    	//保存数据
    	if($result->num_rows > 0){
    		$row=$result->fetch_assoc();
    		
    		$_SESSION[username]=$_POST[name];
    		$_SESSION[uid]=$_POST[uid];
    		$_SESSION[isLogin5]=1;

    		//跳转界面
    		echo &#39;<script>&#39;;|r|
    		echo location=&#39;index.php?sid=.session_id().&#39;;   //将session_id() 调过来|r|
    		echo &#39;</script>&#39;;
    	}
    	echo 用户名密码有误;
    }
?>
其它页面只要在链接后面加上 “?sid=” 即可

 

注销程序不像cookie那样,分四步:开启、清空、删除和彻底销毁

 

    //开启session
    session_start();

    //情况session值
    $_SESSION=array();

    //删除客户端的在cookie中的sessionid
    if(isset($_COOKIE[session_name()])){
        setCookie(session_name(),&#39;&#39;,time()-3600,&#39;/&#39;); //一定要写上第四个参数(路径)
    }

    //彻底销毁session
    session_destroy();


第二种,不需要设置根据浏览器是否开启cookie数据功能而自动选择用cookie还是session进行传递

 

a、 链接或表单后面都加上 ”?“, 这个跟通过sid传递相似,不过SID是常数

index.php:

 

    >第二页

    >第三页

    >退出

login.php:
   		//跳转界面
    		echo &#39;<script>&#39;;|r|
    		echo location=&#39;index.php?.SID.&#39;;   //SID 常量如果开启cookie则使用cookie,如果没开启就用session|r|
    		echo &#39;</script>&#39;;



method=post>

用户登录

 
用户名
密码

b、修改php.ini配置文件

 

代码基本和cookie传递的一样,就只是开头需要开启session:session_start();

作法:将配置文件中 session.use_trans_sid 的值改为 1
作用:在所有链接的地方默认加上 PHPSESSID 的形式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn