Php If语句有效,但else语句无效

Php If语句有效,但else语句无效,php,mysql,if-statement,Php,Mysql,If Statement,我正在创建一个登录表单,在这里我检查电子邮件和密码,如果电子邮件和密码相同,则获取登录并重定向到索引页。。但若用户输入错误的电子邮件或密码,则不会转到else语句 <?php ob_start(); session_start(); if (isset($_POST['login'])) // Login Validation check code ** START ** $errr = ''; // This variable will be used to indicate er

我正在创建一个登录表单,在这里我检查电子邮件和密码,如果电子邮件和密码相同,则获取登录并重定向到索引页。。但若用户输入错误的电子邮件或密码,则不会转到else语句

<?php
ob_start();
session_start();
if (isset($_POST['login'])) // Login Validation check code ** START **

  $errr = ''; // This variable will be used to indicate error of login email or pwd

{
  include('connection.php');

  $loginemail= trim($_POST['loginemail']);
  $loginpass= trim($_POST['loginpass']);

  $sql = "SELECT * FROM `user` WHERE email=\"$loginemail\" and pass=\"$loginpass\"";

  $result = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_assoc($result) or die(mysql_error());

  if(!empty($row))
  {
    $_SESSION=array();

    $_SESSION['fname']=$row['fname'];
    $_SESSION['lname']=$row['lname'];
    $_SESSION['status']=true;
    header('location: ../index.php');
  }
  else
  {
    echo " something wrong ";

  }
}  // Login Validation check code ** End **

?>
注意:mysql扩展已弃用,将来将被删除:使用mysqli或PDO

用于检查表中是否存在数据

试试这个:

    $sql = "SELECT * FROM `user` WHERE email='".$loginemail."' and pass='".$loginpas."' ";

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

    $ispresent = mysql_num_rows($result);     



    if($ispresent > 0)
    { 
        $row = mysql_fetch_assoc($result) or die(mysql_error());

        $_SESSION['fname']=$row['fname'];
        $_SESSION['lname']=$row['lname'];
        $_SESSION['status']=true;
        header('location: ../index.php');
    }    
    else
    {
         echo " something wrong ";
         exit;

    } 
编辑:

你也写错了:

if (isset($_POST['login'])) // Login Validation check code ** START **

    $errr = ''; // This variable will be used to indicate error of login email or pwd

    {
这应该是:

if (isset($_POST['login'])) // Login Validation check code ** START **
{

   $errr = '';
试试这个

 if($row = mysqli_fetch_array($result))

  { //login sucessfull

     }
 else
 {
 // incorrect 
     }
并将查询更改为此

  $sql = "SELECT * FROM `user` WHERE email='".$loginemail."' and pass='".$loginpass."';

并检查“输入用户名和密码时,您使用的是来自用户的不安全输入,这可能会导致sql注入”

您在这里出错。如果条件允许,您首先启动错误

 if (isset($_POST['login'])) // Login Validation check code ** START **

    $errr = ''; // This variable will be used to indicate error of login email or pwd

    {
修改它

 if (isset($_POST['login'])) // Login Validation check code ** START **
 {
    $errr = ''; // This variable will be used to indicate error of login email or pwd]
更新2:

如果你能用这个,第二个

    // some changes in sql also you can use LIMIT 1 when you required exactly one result to be fetch. 

    $sql = "SELECT * FROM `user` WHERE email='$loginemail' and pass='$loginpass' LIMIT 1 "; 
    $result = mysql_query($sql) or die(mysql_error());
    if($row = mysql_fetch_assoc($result))
    { 
       $_SESSION=array();

       $_SESSION['fname']=$row['fname'];
       $_SESSION['lname']=$row['lname'];
       $_SESSION['status']=true;
       header('location: ../index.php');
    }
    else
    {
      echo " something wrong ";

    } 

注意:mysql_*现在不推荐使用。用户mysqli_*或PDO

$行永远不会为空。在许多情况下,empty不能与字符串变量一起使用,因为一个简单的事实是,如果将变量设置为字符串值“0”,empty将返回true。如果字符串字符“0”可能是字符串变量的有效值,请检查如果mysql_num_rows$result>0,请改为EmptySideIndicate:不要使用mysql_*函数,使用mysqli或PDO时不推荐使用它们。大括号{}如果我尝试了,但仍然不起作用,如果ID pwd正确,它将重定向到主页,但如果ID pwd不正确,则只显示空白页,而不是出现错误@当pwd错误时,是否执行ShaikhNomanNasir检查其他条件。您可以通过回显某个内容进行检查,然后退出。查看我的编辑Yes I checked else条件未在错误密码下执行它显示空白页而不是显示echovar_dump result和ispresent plsyup@ShaikhNomanNasir尝试将$ispresent的值作为Royal Bg进行回显said@SatishSharma如果我们发现了类似的东西,我们会标记它,但告诉其他人标记,这是个人的决定