PHP实现登陆核对创建SESSION状态

PHP学习 cyanprobe 9年前 (2015-07-12) 5717次浏览 已收录 3个评论

前言:

我从昨天1点钟睡到今早上11:00,真是一个困啊。昨天小幻来挑错,妈妈再也不用担心我调试了。好了,今天不扯了进入正题,小幻昨天说session的问题,或者用cookie写一个保存状态的登陆效果,我就脑残的写了一个。
PS:我也想找到美工了,虽然我们两个都不知道PHP和HTML怎么混编 :arrow: ….
2015-07-12_151403

我们要实现:PHP写一个前台登陆功能,与MySQL中的数据结果进行比较,判断成功后跳转到inlog页面,建立SESSION,跳入到conntent页面显示SESSION ID与登陆状态,并实现在UPSET页面的注销SESSION。

 实现过程:

内容补充$_SESSION与COOKIE:

据说参加程序员面试经常问这个问题,简单的来说COOKIE与SESSION都是用来保存会话状态的,不同的是——SESSION是在服务器端保存的一个会话状态文件,而COOKIE是用户端保存的会话文件,从安全性来说SESSION是根据URL生成唯一对应客户端ID且保存在服务器上安全性较好,COOKIE文件包含SESSION ID ,cookie的构成是 SESSION ID + COOKIE Name +其他 。ps:禁用COOKIE后,SESSION保存状态法也会失败。

SESSION会话函数使用:

<?php
session_start(); //引用使用SESSION前必须声明,且前面最好没有echo。
$_SESSION["下标名"]=值;//SESSION赋值法
SESSION_ID ;//可以输出查看SESSION ID
/********消除SESSION法********/
session_destroy();//销毁服务器端所有SESSION
unset($_SESSION["下标名"]);//销毁指定SESSION
$_SESSION["下标名"]=null;//同上
?>

SESSION一旦创建,就可以在不同页面中引用,并且可以传值,每个页面都要声明SESSION函数开始。

Index.php页面创建:

<?php
方块网络——
 前台登陆程序 </p>
 <p><span class="a3">亲爱的:</span>
 <?php
if(!@$a=fopen("num.txt","r"))
{
 echo"文件不存在";$num=0;
}else{
 $num=fgets($a,10);
 fclose($a);
}
$num++;
$ff=fopen("num.txt","w");
fwrite($ff,$num);
fclose($ff);
echo "您是访问此页面的第".$num."人";?>
/*上面是以前讲的一个文件计数器小程序*/
<form action="login.php" method="post">
</br>用户名<input type="text"name="user"></br>
密码:<input type="text"name="password"> <input type="submit"value="登陆">
</form>
?>

Login.php核实登陆页面创建:

<?php
include("connect.php");//引入数据库
header("Content-type:text/html;charset=utf-8");
$user=$_POST['user'];
$password=$_POST['password'];
$sql="select `user`,`password`from`ex1` where `user`='$user'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
if($password==$rs['password']){
 echo"正确,正在尝试建立SESSION 您可以尝试跳转到"."<a href='content.php'>跳转地址
 </a>";
 session_start();
 $_SESSION["user"]=$user;
}else{header("refresh:6;url=index.php");//六秒后分返回指定页面。
echo "发生错误,请稍等返回.<a href='index.php'>登陆页面</a>....<br>6秒后自动跳转";
}
?>

Content.php后台显示页面创建:

<?php
header("Content-type:text/html;charset=GBK");
session_start();
echo " your SESSION ID is :".session_id();
if(!$_SESSION["user"]==""){
echo "</br>"."您已作为".$_SESSION["user"]."登陆";
/*这里可以引用登陆后的页面(要重新核对数据库中是否存在,防止
null值登陆*/
 echo"</br>"."您可以尝试——"."<a href='unset.php'>注销登陆</a>";}
else {echo"你没有正常登陆"."<a href='login.php'>点击尝试重新登陆</a>";}
?>

删除SENSSION状态,unset.php页面:

<?php
header("content-type:text/html;charset=GBK");
session_start();
if($_SESSION["user"]!==""){
 echo"<script language=javascript>
 alert('注销账号已经成功');</script>";
$_SESSION["user"]=null;
}else{ echo"您已经注销或者未登录";}
?>

后记:

好像没有后记,SESSION能实现的功能好多好多,无怪乎小幻说不常用看手册,它甚至能实现登陆权限的划分,凡是会话相关通过URL通信传递信息都能做。


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP实现登陆核对创建SESSION状态
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(3)个小伙伴在吐槽
  1. 拜读一下,哈哈
    yameimei2015-07-12 18:35 回复
  2. 昨天写了一个完整的用户中心框架Http://chat.ihuan.me/admin
    小幻2015-08-03 11:29 回复