zoukankan      html  css  js  c++  java
  • 会话用法 和留言板例题

    先来说一下留言例题

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

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

    简单的建一个

    <!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页面

    <?php
    session_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>
    <?php
    session_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>
    
    <?php
    include("./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>

    运行后:

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

    <?php
    session_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>
    <?php
    include("./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 来存它传递过来的数据

    <?php
    session_start();
    //将传过来的水果加到购物车
    $code = $_GET["code"];
    
    //$_SESSION["gwc"]; 
    
    
    //1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里
    
    //2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面
    
    //3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1
    
    
    if(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;
        }
    }

    我们可以来试一下

    点击加购物车

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

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



  • 相关阅读:
    rocketmq的broker如何同步信息的?
    SO_LINGER 选项
    哈哈哈
    NAG博客目录
    事后分析$eta$
    项目展示$eta$
    测试报告$eta$
    发布声明$eta$
    Scrum meeting 10
    技术博客6--Django实现列表分页
  • 原文地址:https://www.cnblogs.com/qishuang/p/6233692.html
Copyright © 2011-2022 走看看