Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回错误消息_Php - Fatal编程技术网

Php 返回错误消息

Php 返回错误消息,php,Php,那么 我必须在我的index.php和login.php中登录表单 我检查是否有错误 我想将消息返回Index.php并通过$error\u txt 下面是我的代码: Index.php: <form action="login.php" method="post"> <input type="text" name="username" placeholder="Username" id="user-input" /><br /> <input type

那么

我必须在我的index.php和login.php中登录表单 我检查是否有错误

我想将消息返回Index.php并通过
$error\u txt

下面是我的代码:

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>
<?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");
?>




Login.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>
<?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");
?>

如果您想在同一页上显示错误消息,那么您必须使用Ajax或在同一页上提交表单(在您的情况下是index.php)


另一种方法是通过get参数传递错误消息,如index.php?error=error message string,然后检查是否设置了错误参数,并根据该参数显示消息,您可以将错误消息存储在一个文件中。不过,这也有点难看

稍微好一点:储存起来。PHP已经可以维护会话(会话id存储在cookie中)。通过使用会话,消息永远不需要离开服务器。然而,这仍然可能会导致副作用,特别是当访问者有多个选项卡,并且您的网站的不同页面处于打开状态时。他们可能会在某个时间看到他们没有尝试登录的页面上的错误

对于没有“记住”某个地方的文本的解决方案,您根本不应该使用重定向。只需包含显示表单所需的其他页面或部分页面。如果您可以包含登录表单(或者如果需要包含整个索引页面),则可以呈现包含错误消息的页面,而无需重定向回index.php


您还可以通过不发布到
login.php
,而是发布到索引页本身来恢复这一原则。该页面可以检查发布的数据,并且只有在登录成功时才重定向到成功页面。

您可以在登录页面中包含登录表单,如果出现错误,则重新显示表单,而不是重定向。您可以将表单本身保存在一个单独的文件中,并将其包含在index.php和login.php中。@GolezTrol很好的idiea,但我需要一些页面登录及其更多代码。thanksIt显示GET参数错误是不专业的。。没有人不能通过回传和头球来做到这一点?非常感谢你们,这次训练是个好主意,但也许我以后会用到他。。谢谢你的帮助!!