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
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()