2015-08-16 110 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