值肯定是POSTED但isset()表示NO

时间:2012-10-02 19:55:25

标签: php isset

请参阅下面给出的代码。自从过去5个小时以来,我一直在使用这段代码来了解为什么isset()正在将条件评估为false,如果值的确是张贴了POST的话。 如果我取消注释行号。 - 4,5,6,7,8并将其余代码放在第4行。 10到28我可以看到POSTED值。 任何人都可以通过任何指导或建议为此提供帮助。我会很感激。

<?php
include 'dbconnection.php';
include 'functions.php';

// var_dump($_POST); what happens when you uncomment this line?

//sec_session_start();
 //  $email = $_POST['logemail'];
 //  $password = $_POST['p'];
//  echo $password;
//  echo $email;
 // Our custom secure way of starting a php session. 

if(isset($_POST['logemail'], $_POST['p'])) { 
   $email = $_POST['logemail'];
   $password = $_POST['p']; // The hashed password.
   if(login($email, $password, $mysqli) === true) {
      // Login success
      //$url = 'mwq';
    //echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';  
    echo $password;
    echo $email;

   } else {
      // Login failed
      header('Location: login.php?error=1');
   }
} else { 
   // The correct POST variables were not sent to this page.
   echo 'Invalid Request Data Not POSTED';
}
?>

1 个答案:

答案 0 :(得分:0)

如果没有看到表格,我只能理解发生的事情:

  1. 您从一个干净的平板开始,表单显示,您输入用户名和密码并提交
  2. 代码通过条件然后执行登录
  3. login(...) !== true的结果无论出于何种原因(密码错误或代码中的错误)
  4. 该网页重定向至login.php?error=1
  5. 现在,$_POST为空,$_REQUEST包含array('error' => 1)。也许login.php不应该重定向到自身,而是重定向回到您显示表单的页面。