close
文章出處
先來說一下留言例題
首先要在數據庫建這樣一張表備用:
之前都學過登錄注冊頁面,在這里還需要一個登錄頁面
簡單的建一個
<!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; } }
我們可以來試一下
點擊加購物車
這是第一次點,點擊了第一個,下面再返回點擊最后一個
這樣就一個傳入了兩條數據,只要不關瀏覽器,數據都是疊加的,關閉瀏覽器,重新開一次,上次的數據就會沒有了
![]() |
不含病毒。www.avast.com |
全站熱搜