1. 程式人生 > >php部分--session的三種用法

php部分--session的三種用法

-s emp AD 用戶 method 登錄頁面 sel new 判斷

一.在不同頁面之間顯示用戶的信息

二.控制登錄

1.登錄頁面

<body>
<form action="loginchuli.php" method="post">
<div>用戶名:<input type="text" name="uid" /></div>
<div>密碼:<input type="password" name="pwd" /></div>
<input type="submit" value="登錄" />
</form>
</body>
</html>

2、登錄處理頁面

<?php
session_start();
include("DBDA.class.php");
$db = new DBDA();

$uid = $_POST["uid"];
$pwd = $_POST["pwd"];

$sql = "select pwd from users where uid=‘{$uid}‘"; //通過用戶名,判斷密碼
$attr = $db->Query($sql);

$mm = $attr[0][0]; //取出密碼

if(!empty($pwd) && $pwd==$mm)
{
$_SESSION["uid"] = $uid; //如果登錄成功,把取到的用戶名放到session保存,跳轉到主頁面
header("location:main.php");
}
else
{
echo "登錄失敗!";
}

3、主頁面

</head>
<?php
session_start();


if(empty($_SESSION["uid"])) //判斷session裏面是不是存儲到值,如果沒有存儲,讓其跳轉到登錄界面
{
header("location:login.php");
exit;
}

$uid = $_SESSION["uid"]; //如果能夠取到,通過session取到的用戶名,顯示下面的信息
include("DBDA.class.php");
$db = new DBDA();
$sql = "select name from users where uid=‘{$uid}‘";
$attr = $db->Query($sql);

?>
<body>
<?php
echo "<h1>歡迎登錄:{$attr[0][0]}</h1>";

?>

三、做購物車

1.調水果表的信息

<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>名稱</td>
<td>價格</td>
<td>產地</td>
<td>庫存</td>
<td>操作</td>
</tr>
<?php
include("DBDA.class.php");
$db = new DBDA();

$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=‘jia.php?code={$v[0]}‘>加購物車</a></td> //添加購物車選項
</tr>";
}


?>
</table>

2.將傳過來的水果加到購物車

三條思路:

//1.如果是第一次點擊加購物車,做一個二維數組扔到SESSION裏

//2.如果不是第一次點擊加購物車並且該水果第一次點擊,做一個該水果的一維數組扔到SESSION的二維數組裏面

//3.如果不是第一次點擊加購物車並且該水果不是第一次點擊,將SESSION數組裏面該水果的數量加1




<?php
session_start();

$code = $_GET["code"];

if(empty($_SESSION["gwc"]))
{
//1.如果是第一次點擊加購物車,做一個二維數組扔到SESSION裏
$attr = array(
array($code,1) //建立一個二維數組,並在裏面的一位數組中添加代號和數量1
);

$_SESSION["gwc"] = $attr; //把新建立的二維數組,添加到session中
}
else
{
//判斷該水果代號是否在SESSION數組裏面出現
$attr = $_SESSION["gwc"]; //如果session裏面有內容,則把內容給一個二維數組
if(PanDuan($code,$attr)) //下面見了一個PanDuan的方法,用來判斷代號是不是已經存在session裏
{
//3.如果不是第一次點擊加購物車並且該水果不是第一次點擊,將SESSION數組裏面該水果的數量加1
/*foreach($attr as $v)
{
if($code == $v[0])
{
$v[1] = $v[1]+1;
}
}*/
for($i=0;$i<count($attr);$i++) //取數組的長度用count()
{
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;
}
}

php部分--session的三種用法