Day30 来点不一样的Cookie与Session && 完赛心得

利用URL传送Session的原理

如果我们用浏览器关闭Cookie,那麽Session也无法运作,这时候没办法使用Session,不过我们可以换另外一种方式也能让我们使用。

  • login.html:简单的login form表单
  • login.php
echo '<a href="./index.php?SESSID=' . session_id() . '">登录成功点我跳转</a>';

这边做了修改,在跳转的时候就传值,传入SESSID

<?php
//手动开启session
session_start();

if ($_POST['name'] == 'winnie' && $_POST['pwd'] == 'admin') {
	$_SESSION['user']['islogin'] = true;
	$_SESSION['user']['name'] = $_POST['name'];
	$_SESSION['user']['pwd'] = $_POST['pwd'];
	//var_dump($_COOKIE);
	//登录成功
	// echo '<script>alert("登录成功");location="./index.php"</script>';
	echo '<a href="./index.php?SESSID=' . session_id() . '">登录成功点我跳转</a>';
} else {
	//登录失败跳转注册页面
}
  • index.php
    • 这边~~ 要先获取session_id,在刚刚我们设置跳传的时候传值,所以可以$_GET['SESSID'],因此可以直接设置session_id,接着可以印出来
    • //设置id
      session_id($_GET['SESSID']);
    • //获取
      echo session_id();
      当然别忘记要开启session,只是设置id一定要先唷!!!!! 顺序别弄混~
<?php
	//设置id
	session_id($_GET['SESSID']);
	//开启session
	session_start();
	
	//获取
	echo session_id();
	//var_dump($_COOKIE);
	//这是项目的首页
	if(isset($_SESSION['user']['islogin']) && $_SESSION['user']['islogin'] ==  true){
		//已经登录
		echo '亲爱的'.$_SESSION['user']['name'].'会员,欢迎您回来<br/>';

		echo '<a href="a.php?SESSID='.$_GET['SESSID'].'">去a页面</a><br/>';
		echo '<a href="b.php?SESSID='.$_GET['SESSID'].'">去b页面</a><br/>';
		echo '<a href="c.php?SESSID='.$_GET['SESSID'].'">去c页面</a><br/>';
	}else{
		//用户没有登录
		echo '对不起,您无权访问3S後自动跳转到登录页面';
		echo '<meta http-equiv="refresh" content="3;url=./login.html">';
	}
  • c.php
    • 这边一样传值的时候别忘记传 SESSID
    • PS. a.php b.php两个页面这次就不放了,类似c.php
<?php
	session_id($_GET['SESSID']);
	session_start();
	echo session_id();
	if(isset($_SESSION['user']['islogin']) && $_SESSION['user']['islogin'] ==  true){
		//已经登录
		echo '亲爱的'.$_SESSION['user']['name'].'会员,欢迎您回来<br/>';
		echo '当前是c页面<br/>';
		echo '<a href="index.php?SESSID='.$_GET['SESSID'].'">去首页</a><br/>';
		echo '<a href="a.php?SESSID='.$_GET['SESSID'].'">去a页面</a><br/>';
		echo '<a href="b.php?SESSID='.$_GET['SESSID'].'">去b页面</a><br/>';
		echo '<a href="logout.php">退出登录</a>';
	}else{
		//用户没有登录
		echo '对不起,您无权访问3S後自动跳转到登录页面';
		echo '<meta http-equiv="refresh" content="3;url=./login.html">';
	}
  • logout.php
    • 没有变
<?php
	session_start();
	//1.清除当前session数组中的值
	$_SESSION['user'] = ARRAY();
	//获取session的名称
	//echo session_name();exit;
	//2.让sessionid失效
	setcookie(session_name(),null,time()-1,'/');
	//删除session文件
	session_destroy();

	echo '<script>alert("已退出");location="./login.html"</script>';

强调:Session

  1. 将ID存入到Cookie的文件中,然後内容存放到服务器里。

  2. 如果禁用Cookie的时候Session还能使用?

    • 答案:不能,但是我们可以通过另一种方式来实现(URL传输的方式)

完赛心得:

这30天,真的经常在极限,每天赶稿,但同时也收获许多成就感,有些之前没有弄懂的观念,藉由写文章慢慢弄懂了,以及更加清楚知道自己哪里不足,真的蛮开心的,也完赛了~
其实原本还想写TODOLIST小练习,还有LINUX的指令,但刚好篇幅到这边完结,也许剩下未写的就是等待下一次开赛XD


<<:  Day 30:Keep Going 的意思

>>:  心得结语(Day30)

Day 6 ( 入门 ) 光影魔术手

光影魔术手 教学原文参考:光影魔术手 这篇文章会介绍如何使用「变数」、「逻辑判断」、「光线感测」和「...

Day 25 : 可解释的 AI - Explain AI (XAI)

AI 黑箱作业已经被诟病许久,因为 AI 类神经网络的复杂性不似机械学习的树状结构、线性结构容易理...

Day 17 - 研习计画夥伴介绍与脑力激荡篇

经过筛选的阶段後也成功媒合到几位同学,在今天会先分享研习学生们背景、报到的状况以及协助计画发想活动的...

前端工程学习日记27天 header menu 三栏式 flex

在 .menu display:flex 从左到右 Flex 里头还可以包 Flex - 程序码开...

【Day27】[演算法]-堆积排序法 Heap Sort

堆积排序法(Heap Sort)原理是利用「堆积」的资料结构为基础来完成排序。 堆积的介绍可以参考此...