Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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_Mysql - Fatal编程技术网

Php 为什么;错误的用户名/密码“;即使在第一次加载页面时也会出现警报?

Php 为什么;错误的用户名/密码“;即使在第一次加载页面时也会出现警报?,php,mysql,Php,Mysql,我有一个登录表单,当我进入该页面时,它会自动向我发送警报消息。我还没有输入用户名和密码信息。 这是对登录表单输入进行验证的页面,请查看为什么会出现这种情况 <? session_start(); include "config.php"; if(isset($_SESSION["login_user"]) AND isset($_SESSION['pass_user'])){ $login_user = $_SESSION["login_user"]; $pass_use

我有一个登录表单,当我进入该页面时,它会自动向我发送警报消息。我还没有输入用户名和密码信息。
这是对登录表单输入进行验证的页面,请查看为什么会出现这种情况

<?
session_start();
include "config.php";

if(isset($_SESSION["login_user"]) AND isset($_SESSION['pass_user'])){
    $login_user = $_SESSION["login_user"];
    $pass_user = $_SESSION["pass_user"];

$sql = mysql_query("SELECT * FROM adm WHERE login = '$login_user'");
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql)){
    $pass_db = $linha['pass'];
}

if($cont == 0){
    unset($_SESSION["login_user"]);
    unset($_SESSION["pass_user"]);

    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"Name of user dont match.\");
    </script>";

}

if($pass_db != $pass_user){//check pass

    unset($_SESSION["login_user"]);
    unset($_SESSION["pass_user"]);

    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"Password dont match.\");
    </script>";

}

}else{

    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"User and password dont match.\");
    </script>";

}

?>

请从代码中删除else语句。现在使用它

 <?php
session_start();

include "config.php";

if(isset($_SESSION["login_user"]) AND isset($_SESSION['pass_user'])){

$login_user = $_SESSION["login_user"];
$pass_user = $_SESSION["pass_user"];

$sql = mysql_query("SELECT * FROM adm WHERE login = '$login_user'");
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql)){
$pass_db = $linha['pass'];
}

if($cont == 0){

unset($_SESSION["login_user"]);
unset($_SESSION["pass_user"]);

echo "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
<script type=\"text/javascript\">
alert(\"Name of user dont match.\");
</script>";

 }

if($pass_db != $pass_user){//check pass

unset($_SESSION["login_user"]);
unset($_SESSION["pass_user"]);

echo "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
<script type=\"text/javascript\">
alert(\"Password dont match.\");
</script>";

}

}

?> 

这是因为以下if语句返回false:

if (isset($_SESSION["login_user"]) AND isset($_SESSION['pass_user']))
发生这种情况时,将执行以下代码:

} else {
    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"User and password dont match.\");
    </script>";
}
}其他{
回声“
警报(\“用户和密码不匹配。\”;
";
}

我想你刚才放错地方了:

<?
session_start();

include "config.php";

if(isset($_SESSION["login_user"]) AND isset($_SESSION['pass_user'])){

    $login_user = $_SESSION["login_user"];
    $pass_user = $_SESSION["pass_user"];

$sql = mysql_query("SELECT * FROM adm WHERE login = '$login_user'");
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql)){
    $pass_db = $linha['pass'];
}

if($cont == 0){

    unset($_SESSION["login_user"]);
    unset($_SESSION["pass_user"]);

    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"Name of user dont match.\");
    </script>";

}

if($pass_db != $pass_user){//check pass

    unset($_SESSION["login_user"]);
    unset($_SESSION["pass_user"]);

    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"Password dont match.\");
    </script>";

}else{

    echo "
    <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
    <script type=\"text/javascript\">
    alert(\"User and password dont match.\");
    </script>";

}
}
?> 

告知用户哪个字段(用户名或密码)不匹配是一种非常糟糕的做法。只需告诉他们登录失败,就行了。否则,您将向他们提供有关用户名和密码的信息。不建议使用Javascript警告重要消息(用户可能已禁用JS)。另外,与PHP
标题相比,通过HTML标记进行页面刷新也不好。尝试查看在同一页面上显示
中的错误。如果
login.php
process.php
不同,请将
Get
中的
error=1
传递回
login.php
。请不要对新代码使用
mysql.*
函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习。