關於程式執行順序的問題

https://drive.google.com/folderview?id=0B7yk47jrP-78NzF1bDJsMWZWY28&usp=sharing

上面的google網址,是我練習製作一個簡單會員登入系統,並且加上會員今日的登入次數。
但在做的過程當中,遇到一個讓我很想不通的事情,還請各位先進幫忙為小弟解惑。

在login的檔案當中,分別有兩個主要部分:

一、判斷使用者登入次數,並防止刷新洗次數,程式碼如下(或見google雲端):
if(isset($_SESSION["login"]) && $_SESSION["login"]=="ok") {
if(!isset($_SESSION["same"])){
if(isset($_COOKIE[$_GET["user"]]))
{
setcookie($_GET["user"],++$_COOKIE[$_GET["user"]],strtotime(date("Y-m-d 23:59:59")));
}
else
{

setcookie($_GET["user"],"1",strtotime(date("Y-m-d 23:59:59")));
header("Location: login.php?user=".$_GET["user"]);
}
$_SESSION["same"]="1";
}
}

二、判斷是否按下登入,並且記錄是否處理登入狀態
if(isset($_POST["operate"]))
{
if($_POST["operate"]=="update")
{
echo "alert('密碼錯誤');";
}
if($_POST["operate"]=="logout")
{
session_unset();
header("Location: login.php");
}
if($_POST["operate"]=="register"){
header("Location: Register.php");}
if($_POST["operate"]=="login"){
mysqli_query($connect,"SET NAMES utf8");
$sql = "SELECT * FROM `member` WHERE `account`='".$_POST["account"]."'";
$result = mysqli_query($connect,$sql);
$num = mysqli_num_rows($result);
$row = mysqli_fetch_assoc($result);
if($num==1)
{
if($row["password"]==$_POST["password"])
{
$_SESSION["login"]="ok";
header("Location: login.php?user=".$_POST["account"]);
}
else
echo "alert('密碼錯誤');";
}
else
echo "alert('無此帳號');";
}
}


上述的兩段程式碼的順序,我覺得調換位置並沒有關係
但實際上,我在測試的時候,若將"判斷使用者登入次數"置於"判斷是否按下登入"的程式碼之後,

1. 不知道為何會因此抓取不到$_GET的參數(網址列完全沒有user的值)。
2. 之後有發現將 header("Location: login.php?user=".$_GET["user"]); 刪除後,問題1可解除。但是很奇怪的是$_SESSION["same"]還未進入條件句,竟然就有值,導致cookie的值一直無法累加。

以上兩個問題,很請各位先進不吝給予指教,謝謝你們!!

評論

  • 1. 加一段判斷 有 $_SESSION['same'] 時,你覺得該做什麼
    2. 在認為合適的地方,增加 把 $_SESSION['same'] 改成別的數值,或指定銷毀
Sign In or Register to comment.