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

我们要实现: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通信传递信息都能做。
