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








