会话用法 和留言板例题

来源:互联网 发布:京东云服务器绑定域名 编辑:程序博客网 时间:2024/06/05 12:03

先来说一下留言例题

首先要在数据库建这样一张表备用:

之前都学过登录注册页面,在这里还需要一个登录页面

简单的建一个

复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><h1>开发部内部留言板</h1><form action="denglu1.php" method="post"><div>用户名:<input type="text" name="yh" /></div><br /><div>口令:<input type="text" name="mm" /></div><br /><div><input type="submit" value="登录" /><input type="reset" value="复位" /></div></form></body></html>
复制代码

这里的复位用的是以前学过的一个重置按钮

要想完成登录还需要一个页面,就是上面表单提交的页面,是个纯php页面

复制代码
<?phpsession_start();                     //用的session来储存数据include("./fengzhuang.php");$db = new fengzhuang();$yh = $_POST["yh"];$mm = $_POST["mm"];$sql = "select mm from zhuce where yh = '{$yh}'";$attr = $db->Query($sql);$mima = $attr[0][0];if(!empty($mm) && $mm==$mima)             //这里是密码非空,并且密码等于用于输入的密码{    $_SESSION["yh"] = $yh;                 //session中存的用户名等于用户输入的用户名    header("location:liuyan.php");}else{echo "登录失败!";    }
复制代码

如果用户登录成功的话,会直接打到主页面

下面再来做一下主页面

复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><?phpsession_start();   //可以控制登陆//echo $_SESSION["yh"];if(empty($_SESSION["yh"]))   //判断如果用户名为空,则直接打到登录页面{    header("location:denglu.php");    exit;}/*$yh = $_SESSION["yh"];include("./fengzhuang.php");$db = new fengzhuang();$sql= "select xm from zhuce where yh='{$yh}'";$attr = $db->Query($sql);*/?><body><?php//echo "<h1>欢迎登陆:{$attr[0][0]}</h1>";   //注释的如果运行的话,会输出欢迎登陆加用户的姓名?><div><a href="fabu.php">发布信息</a><br /><a href="denglu.php" onclick=" return confirm('确定退出么?')">退出系统</a></div><table width="100%" border="1" cellpadding="0" cellspacing="0"><tr><td>发送人</td><td>发送时间</td><td>接收人</td><td>信息内容</td></tr><?phpinclude("./fengzhuang.php");$db = new fengzhuang();$sql =" select * from xinxi";$attr = $db->Query($sql);foreach( $attr as $v){   echo  "    <tr>    <td>{$v[1]}</td>    <td>{$v[2]}</td>    <td>{$v[3]}</td>    <td>{$v[4]}</td>            </tr>";    }?></table></body><script type="text/javascript"></script></html>
复制代码

SESSION也可以用来控制登录,如果不走登录界面,直接打上主页面的地址也是可以进入的,所以网页必须要用SESSION控制一下

如果在浏览器上第一次打开主页面,它会返回登录界面,如果在浏览器上有已经登录成功窗口的话,再打开主页面,是可以进的

主页面运行后,是这样子的:

然后再做发布信息的页面

复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><div><a href="liuyan.php">查看信息</a><br /><a href="denglu.php" onclick=" return confirm('确定退出么?')">退出系统</a></div><h1>信息发送</h1><form action="fabuchuli.php" method="post"><input type="hidden" name="fsr" /><div>接收人:<input type="text"  name="jsr"/></div><input type="hidden" name="fssj" /><br /><div>信息内容:<input type="text" name="xxnr" /></div><div><input type="submit" value="发送" /><input type="reset" value="复位" /></div></form></body></html>
复制代码

运行后:

当然光这样,填写的信息是发不出去的,最重要的就是它的处理页面

复制代码
<?phpsession_start();$yh = $_SESSION["yh"];include("./fengzhuang.php");$db = new fengzhuang();$sql= "select xm from zhuce where yh='{$yh}'";$attr = $db->Query($sql);?><?php$fsr = "{$attr[0][0]}";           //发送人,也就是取得用户的姓名$fssj =  date("Y-m-d",time());    //当前时间$jsr = $_POST["jsr"];$xxnr = $_POST["xxnr"];//造连接对象$db = new MySQLi("localhost","root","726","text11");//写SQL语句$sql = "insert into xinxi values('','{$fsr}','{$fssj}','{$jsr}','{$xxnr}')";//执行$r=$db->query($sql);if($r){    header("location:liuyan.php");    }else{    echo "添加失败";    
复制代码

发布后立即返回留言页面,看一下发布后的样子:

 

页面中多了一条数据,接收人是小红,发送人是用户的姓名

退出系统那里可以加个点击事件,确定退出后打到登录界面

所学知识可以灵活运用

 

下面再来说一下会话用法

主要讲用SESSION 的用法

 购物车类型的可以用SESSION做,只是暂时把数据暂时存在SESSION里,退出再登录就会没有了

下面来做个例子

之前讲过水果表的做法,那就引用个水果表

复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><table width="100%" border="1" cellpadding="0" cellspacing="0">    <tr>        <td>名称</td>        <td>价格</td>        <td>产地</td>        <td>库存</td>        <td>操作</td>    </tr><?phpinclude("./fengzhuang.php");$db = new fengzhuang();$sql = "select * from fruit";$attr = $db->Query($sql);foreach($attr as $v){    echo "<tr>        <td>{$v[1]}</td>        <td>{$v[2]}</td>        <td>{$v[3]}</td>        <td>{$v[4]}</td>        <td><a href='jiagwc.php?code={$v[0]}'>加购物车</a></td>    </tr>";}?></table></body></html>
复制代码

水果表已经做好,只是多加了一个购物车,重要的是它的第二个页面,运用SESSION 来存它传递过来的数据

复制代码
<?phpsession_start();//将传过来的水果加到购物车$code = $_GET["code"];//$_SESSION["gwc"]; //1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里//2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面//3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1if(empty($_SESSION["gwc"])){    //1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里    $attr = array(        array($code,1)    );        $_SESSION["gwc"] = $attr;}else{    //判断该水果代号是否在SESSION数组里面出现    $attr = $_SESSION["gwc"];    if(PanDuan($code,$attr))    {        //3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1        /*foreach($attr as $v)        {            if($code == $v[0])            {                $v[1] = $v[1]+1;            }        }*/        for($i=0;$i<count($attr);$i++)        {            if($code == $attr[$i][0])            {                $attr[$i][1]++;            }        }        $_SESSION["gwc"]=$attr;    }    else    {        //2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面        $arr = array($code,1);        $attr[] = $arr;        $_SESSION["gwc"]=$attr;    }    }var_dump($_SESSION["gwc"]);//判断v是不是在arr里面出现function PanDuan($v,$arr){    $n = 0;    foreach($arr as $a)    {        if($v == $a[0])        {            $n++;        }    }        if($n==0)    {        return false;    }    else    {        return true;    }}
复制代码

我们可以来试一下

点击加购物车

这是第一次点,点击了第一个,下面再返回点击最后一个

这样就一个传入了两条数据,只要不关浏览器,数据都是叠加的,关闭浏览器,重新开一次,上次的数据就会没有了


0 0
原创粉丝点击