2015-08-16 180 views
0

好,返回錯誤信息PHP

我有形式登錄我的index.php的login.php 我檢查是否存在錯誤。

我想$error_txt

下面的信息返回到index.php文件,並顯示該消息是我的代碼:

的index.php:

<form action="login.php" method="post"> 
<input type="text" name="username" placeholder="Username" id="user-input" /><br /> 
<input type="password" name="password" placeholder="Password" id="user-input" /><br /> 
<input type="submit" name="login" value="Login" id="user-submit" class="btn btn-primary" style="color:white;"/><br /> 
<a href="register.php">Register</a> 
<?php echo $error_txt; ?> <!-- --------- Here I Want show the error message --> 
</form> 

的login.php:

<?php  
if(isset($_POST['login'])) 
    { 
     $username = mysql_escape_string($_POST['username']); 
     $password = mysql_escape_string($_POST['password']); 
     $errors = 0; 
      try 
      { 
       if(strlen($username) == 0) 
       { 
        throw new Exception ("The username is empty"); 
       } 
       if(strlen($password) == 0) 
       { 
        throw new Exception ("The password is empty"); 
       } 
       include ("web/config.php"); 
       $usernameTrueQuery = mysql_query("SELECT * FROM `users` WHERE `Username` = '$username' AND `Password` = '$password' LIMIT 1;"); 
       $usernameTrue = mysql_num_rows($usernameTrueQuery); 
       if($usernameTrue == 0) 
       { 
        throw new Exception ("The username or password is incorrect"); 
       } 
      } catch (Exception $loginError) { 
       echo "<div class='alert alert-warning'> 
       <strong>Error:</strong> ".$loginError->getMessage()."</div> \n"; 
       $errors = 1; 
       $error_txt = $loginError->getMessage(); 
      } 
      if($errors == 0) 
      { 
       echo "<div class='alert alert-success'> 
       <strong>Success</strong> Welcome {$username}!</div> \n"; 
      } 
    } 
    return $error_txt; 
    header("Location: /index.php"); 
?> 

感謝.. :)

+0

可能不是重定向,您可以在登錄頁面中「包含」登錄表單,如果出現錯誤,則顯示它重新顯示錶單。您可以將表單本身保存在單獨的文件中,並將其包含在index.php和login.php中。 – GolezTrol

+0

@GolezTrol好idiea,但我想要一些頁面登錄和更多的代碼。謝謝 – UnderPhp

回答

0

您可以存儲錯誤消息在cookie。但是,這也有點難看。

略好:存儲它in the session。 PHP已經可以維護會話(並且會話ID又存儲在cookie中)。通過使用會話,消息永遠不需要離開服務器。但是,這仍然可能會導致副作用,特別是如果訪問者有多個選項卡打開您網站的不同頁面。他們可能會在某個時間看到他們沒有嘗試登錄的頁面上的錯誤。

對於沒有「記住」文本的解決方案,您根本不應該使用重定向。只需包含其他頁面或顯示錶單所需的部分內容即可。如果您可以包含登錄表單(或者如果您需要整個索引頁面),則可以在不重定向到index.php的情況下渲染包含錯誤消息的頁面。

您也可以通過不發佈到login.php來恢復該原則,而是發佈到索引頁面本身。如果登錄成功,該頁面可以檢查發佈的數據並僅重定向到成功頁面。

+0

非常感謝, 會議是個好主意,但也許我以後會用他.. 感謝您的幫助! – UnderPhp

-1

如果你想顯示同一頁上的錯誤信息則要麼使用Ajax或提交同一頁上的形式(在你的情況下,這將是的index.php)

其他方法是通過獲取參數index.php?error =錯誤消息字符串獲取參數,然後檢查是否設置了錯誤參數並根據該顯示消息

+0

顯示GET參數錯誤是不專業的。 沒有人不能通過返回和頭來做到這一點? – UnderPhp