2016-08-15 175 views
0

您好,歡迎所有這個主題的讀者!我知道這聽起來很愚蠢,但我想用一些簡單的註冊和登錄表單。這不是一個網站所以它不應該是安全的,我不希望名稱和密碼永遠持續。我也想指定我是初學者,我只知道php的基礎知識。首先,我開始寫html登錄表單,然後登錄php以檢查是否有任何cookie。後來註冊。 下面是代碼:PHP Cookies註冊和登錄表格

<?php 
setcookie($usr,$pwd,time() + (86400 * 30),'/'); 
setcookie($pwd,$usr,time() + (86400 * 30),'/'); 
If(isset($_POST['submitForm'])) { 
    $usr = $_POST['usr']; 
    $pwd = $_POST['pwd']; 

    If(isset($_COOKIE[$usr]) && isset($_COOKIE[$pwd])) { 

    } 
    else { 
     die('User has not been registered or wrong username or password.'); 
    } 
} 
?> 

正如你可以看到我嘗試接取$ PWD是代表「密碼」與代表「用戶名」的$ USR變量,無論使用的cookie。

下面是HTML代碼:

<form method="POST" action="logged.php" style="text-align: center;"> 

<h1>Log In Page of Forum</h1> 

<input type="text" name="usr" placeholder="Username"> 

<br/><br/> 
<input type="password" name="pwd" placeholder="Password"> 

<br/><br/> 
<input type="submit" name="submitForm" value="Log in"> 

<br/> 
</form> 

是。 PHP在文件中。

被飛出的錯誤是:

Notice: Undefined variable: usr in logged.php on line 2 

Notice: Undefined variable: pwd in logged.php on line 2 

Notice: Undefined variable: pwd in logged.php on line 3 

Notice: Undefined variable: usr in logged.php on line 3 

但文本仍然顯示:

User has not been registered or wrong username or password. 

我這樣做是爲了更好地瞭解PHP的,而不是在認真做事使用。

有人可以告訴我我的代碼有什麼問題嗎?我提前謝謝你。 ;)

回答

0

您的Cookie調用錯誤。您應該爲Cookie使用FIXED名稱。您正在使用用戶提供的(隨機)用戶名。

這會工作:

setcookie('user', $user, ....); 

產生user=fred作爲cookie($_COOKIE['user'] => 'fred'),而不是

setcookie($usr, $pwd, ...) 

你有,產生fred=hunter42

因爲您不知道用戶的用戶名是什麼,所以您有想要在$ _COOKIE中使用哪個鍵來檢索其用戶名。 $_COOKIE['ok what is the username?']

+0

另外,你不能使用一個變量創建一個cookie,直到你使用它之後2行才創建一個變量 – RiggsFolly

+0

糟糕!我從早期的教程(具有固定名稱的東西)知道這一點,但我只是想嘗試,我甚至認爲它也可以與變量一起工作。謝謝Marc B,你救了我的學習。 ;) –