收到一份;无效登录";尝试使用php和mysql登录时

收到一份;无效登录";尝试使用php和mysql登录时,php,Php,我浏览了很多网站,比较了各种登录脚本,没有找到任何解决方案。我输入了正确的信息,得到了一个“无效登录”,如果我没有输入任何信息,我也会得到一个“无效登录”。我真的需要一些帮助来解决问题。这是密码 <?php include_once ('dbc.php'); $user_email = mysql_real_escape_string(isset($_POST['email'])); if (isset($_POST['Submit'])=='Login') {

我浏览了很多网站,比较了各种登录脚本,没有找到任何解决方案。我输入了正确的信息,得到了一个“无效登录”,如果我没有输入任何信息,我也会得到一个“无效登录”。我真的需要一些帮助来解决问题。这是密码

<?php 
  include_once ('dbc.php');

  $user_email = mysql_real_escape_string(isset($_POST['email']));

  if (isset($_POST['Submit'])=='Login')
  {
    $md5pass = md5($_POST['pwd']);
    $sql = "SELECT id,user_email FROM users WHERE 
              user_email = '$user_email' AND 
              user_pwd = '$md5pass' AND user_activated='1'"; 

    $result = mysql_query($sql) or die (mysql_error()); 
    $num = mysql_num_rows($result);

    if ( $num = 0 ) 
    { 
      // A matching row was found - the user is authenticated. 
      session_start(); 
      list($user_id,$user_email) = mysql_fetch_row($result);
      // this sets variables in the session 
      $_SESSION['user']= $user_email;  

      if (isset($_GET['ret']) && !empty($_GET['ret']))
      {
        header("Location: $_GET[ret]");
      } else {
        header("Location: myaccount.php");
      }

      //echo "Logged in...";
      exit();
    } 

    header("Location: login.php?msg=Invalid Login");
    //echo "Error:";
    exit;       
  }
?>

表格代码----


您的电子邮件:

密码:

|

将永远不会运行该块中的代码。isset返回true或false

试一试

这就是为什么您总是被重定向到无效的登录URL。除此之外,我没有真正检查代码中是否存在任何逻辑错误

另外,
$user\u email=mysql\u real\u escape\u字符串(isset($\u POST['email'])也不会给你想要的结果

您还需要将
if($num=0)
更改为
if($num>0)
。在任何一种情况下,都需要使用双等号
=
来比较值。这将把0分配给$num,并执行if语句体中的代码

将永远不会运行该块中的代码。isset返回true或false

试一试

这就是为什么您总是被重定向到无效的登录URL。除此之外,我没有真正检查代码中是否存在任何逻辑错误

另外,
$user\u email=mysql\u real\u escape\u字符串(isset($\u POST['email'])也不会给你想要的结果

您还需要将
if($num=0)
更改为
if($num>0)
。在任何一种情况下,都需要使用双等号
=
来比较值。这将把0分配给$num,并执行if语句体中的代码。

if($num=0)

应该是

如果($num==1)

更新:

您应该检查多个匹配的行。任何时候$num>1都会引发异常/日志。这样的检查将有助于检测在数据库完全崩溃之前出现的任何数据库一致性问题。

如果($num=0)

应该是

如果($num==1)

更新:


您应该检查多个匹配的行。任何时候$num>1都会引发异常/日志。这样的检查将有助于在数据库彻底崩溃之前发现任何数据库一致性问题。

这里有一个建议:简化代码,直到它工作为止,然后逐段添加功能。我看到您正在进行某种类型的电子邮件激活。你确定这部分工作正常并将值设置为1吗?哦,我怀念那些日子的快乐90年代。你是在学习PHP还是这是一个真正的项目。如果这是真的,我建议你看看现有的实现,不要重新发明轮子/**这是php操作系统中最常见的功能。**这里有一个建议:简化代码,直到它工作为止,然后逐段添加功能。我看到你在做一些电子邮件激活。你确定这部分工作正常并将值设置为1吗?哦,我怀念那些日子的快乐90年代。你是在学习PHP还是这是一个真正的项目。如果它是真的,我建议你看看现有的实现,不要重新发明轮子/**这是php操作系统中最常见的功能。**它应该是
If($num>0)
If($num==1)
@drew010:P是的,我刚刚消除了第一次通过时注意到的东西。(更新)如果(1==num)是更好的做法:)应该是
if($num>0)
if($num==1)
@drew010:P是的,我刚刚消除了第一次传球时注意到的东西。(更新)如果(1==$num)是更好的做法:)应该如何处理?另外,$user\u email=mysql\u real\u escape\u字符串(isset($\u POST['email']);也不会为您提供所需的结果。您可以在未按以下方式设置值时取消显示警告:
$user\u email=mysql\u real\u escape\u string(@$\u POST['email')
或只
$user\u email=(isset($\u POST['email']),则重定向到错误页面?mysql_real_escape_字符串($_POST['user_email']):''应该如何处理?另外,$user\u email=mysql\u real\u escape\u字符串(isset($\u POST['email']);也不会为您提供所需的结果。您可以在未按以下方式设置值时取消显示警告:
$user\u email=mysql\u real\u escape\u string(@$\u POST['email')
或只
$user\u email=(isset($\u POST['email']),则重定向到错误页面?mysql_real_escape_字符串($_POST['user_email']):''
<td bgcolor="#e5ecf9" class="mnubody"><form name="form1" method="post" action="">
    <p>&nbsp;</p>
    <p align="center">Your Email: 
      <input name="email" type="text" id="email">
    </p>
    <p align="center"> Password: 
      <input name="pwd" type="password" id="pwd">
    </p>
    <p align="center"> 
      <input type="submit" name="Submit" value="Login">
    </p>
    <p align="center"><a href="register.php">Register</a> | <a href="forgot.php">Forgot</a></p>
  </form></td>
if (isset($_POST['Submit'])=='Login')
if (isset($_POST['Submit']) && $_POST['Submit'] =='Login')