2013-03-12 34 views
0

嗨我試圖做一個簡單的登錄系統。 (沒有mysql)。我不知道我的代碼有什麼問題,並想知道是否有人可以幫助我。簡單的登錄系統在PHP和HTML

<?php 
$user=" "; 
$password=" "; 
if(isset($_POST['submit'])){ 

if(($_POST['user'] == $user) and ($_POST['password'] == $password)){ 
    echo "successful login!"; 
    } 
    else 
    { 
    echo "Bad Login."; 
    } 
} 
?> 
<html> 
    <input type="text" name = "user" value = "username" /> 
    <br> 
    <input type="password" name = "password" value = "password" /> 
    <br> 
    <input type="submit" name = "submit" value = "login"/ > 
</html> 

當我點擊登錄按鈕時,沒有任何反應。 謝謝

回答

1

如您所知,您應該使用==而不是=。但這裏的一句話(我張貼作爲一個答案,因爲在評論,我不能縮進代碼)

你爲什麼不使用

if(($_POST['user'] == $user) and ($_POST['password'] == $password)){ 
    echo 'success'; 
    } 
else{ 
    echo 'Bad login'; 
    } 
1
if($_POST['password'] = $password) 

需要進行:

if($_POST['password'] == $password) 

而且

if($_POST['user'] = $user) 

需要是:

if($_POST['user'] == $user) 

單等號將分配值,而2會比較他們。

你也錯過了一個HTML表單。

<html> 
<form method="POST"> 
<input type="text" name = "user" value = "username" /> 
<br> 
<input type="password" name = "password" value = "password" /> 
<br> 
<input type="submit" name = "submit" value = "login"/ > 
</form> 
</html> 
+0

生病嘗試,謝謝:3 – FlameBlazer 2013-03-12 20:09:28

+0

欲瞭解更多信息的樣子這裏:http://php.net/manual/en/language.operators.comparison.php – Jammerx2 2013-03-12 20:10:21

+0

因爲他們應該是字符串,你應該使用===。 – 2013-03-12 20:11:03

3

您正在分配(=)的值,而在檢查相等(==)。嘗試更換

$_POST['user'] = $user 
$_POST['password'] = $password 

$_POST['user'] === $user 
$_POST['password'] === $password 

此外,因爲你沒有輸出爲錯誤的登錄名和密碼錯誤不同的錯誤,你可以在一個線面相結合的檢查:

if ($_POST['user'] === $user && $_POST['password'] === $password) { 
    echo "Bad Login."; 
} else { 
    //Your other output here 
} 
+0

同樣,因爲它們應該是字符串,所以應該儘可能使用'==='。 – 2013-03-12 20:11:25

+0

@JordanDoyle,好點,謝謝。 – J0HN 2013-03-12 20:35:48

0

在PHP和我知道的所有語言都使用IFs,你使用兩個等號(==)。只是在分配操作員。所以你的代碼如下。

<?php 
    $user="teamhijack"; 
    $password="@#@#[email protected]#@#"; 
    if(isset($_POST['submit'])){ 

    if($_POST['user'] == $user){ 

    if($_POST['password'] == $password){ 
     echo "successful login!"; 
     } 
     else 
     { 
     echo "Bad Login."; 
     } 
     } 
     else 
     { 
     echo "Bad Login."; 
     } 
    } 
    ?> 
    <html> 
     <input type="text" name = "user" value = "username" /> 
     <br> 
     <input type="password" name = "password" value = "password" /> 
     <br> 
     <input type="submit" name = "submit" value = "login"/ > 
    </html> 

永遠記住一個等於是分配。 IE:($ a =「Hello,World!」;)

兩個等於等於運算符。 IE:if(「d」==「d」)

0

您錯過了一個HTML表單。

<form method="POST"> 
    <input type="text" name = "user" value = "username" /> 
    <br> 
    <input type="password" name = "password" value = "password" /> 
    <br> 
    <input type="submit" name = "submit" value = "login"/ > 
</form> 

此外,如果你沒有得到未定義指數告示..然後當您打開錯誤報告error_reporting(E_ALL);你certinaly會..

使用isset();聲明,以儘量減少這些通知。

if (isset($_POST['submit'])) 
{ 
// Carry on the login 
} 

此外,通過使用==運算符查找與if語句更精確的匹配。

if($_POST['user'] == $user){