【问题标题】:A list of php error [closed]php错误列表[关闭]
【发布时间】:2014-12-29 04:19:08
【问题描述】:

注意:未定义索引:C:\xampp\htdocs******.php 中的电子邮件在线 14

注意:类 mysqli_result 的对象无法转换为 int in C:\xampp\htdocs******.php 第 17 行

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result, 第 17 行 C:\xampp\htdocs******.php 中给出的布尔值

注意:未定义索引:C:\xampp\htdocs******.php 中的电子邮件在线 34

     <?php  
if(isset($_POST['Login']))
{

$query_login = "select * from tbl_member where pass = '".md5(md5($_POST['Email']).$_POST['password'])."' and user_name = '".mysqli_real_escape_string($dbhandle, $_POST['username'])."' || email = '".mysqli_real_escape_string($dbhandle, $_POST['username'])."' and activation = '1'";

$sql_login=mysqli_query($dbhandle, $query_login);
    if(mysqli_num_rows((int)$sql_login>0)){

        // The log-in is OK so set the user ID and username session vars (and cookies), and redirect to the home page
        $result = mysqli_fetch_array($sql_login);

        $_SESSION['user_id'] = $result['id'];
        $_SESSION['username'] = $result['user_name'];

      setcookie('user_id', $result['id'], time() + (60 * 60 * 24 * 30));
      setcookie('username', $result['user_name'], time() + (60 * 60 * 24 * 30));
    $query_check = "select * from tbl_member where user_name = '".mysqli_real_escape_string($dbhandle, $_POST['username'])."' || email = '".mysqli_real_escape_string($dbhandle, $_POST['username'])."' and pass = '".md5(md5($_POST['Email']).$_POST['password'])."' and activation = '0'";
        $sql_check=mysqli_query($dbhandle, $query_check);

        $msg = "<font style='font-family:Arial;font-weight:bold;font-size:14px;color:red'>ERROR:-Invalid email or password !</font>";

    }
}
?>

【问题讨论】:

  • 我在这里没有看到任何问题,但有一堆错误。
  • 您的错误日志中有足够的信息来自己调试。
  • 这似乎不是问题。您可以为此使用Pastebin

标签: php mysql post


【解决方案1】:

错误 #2 和 #3:

你对 if() 语句写了一些废话,混合了你打算做的部分。

替换这两行

if(mysqli_num_rows((int)$sql_login>0)){
    $result = mysqli_fetch_array($sql_login);

就这一行

if( $result = mysqli_fetch_array($sql_login) ){

上述一行代码的说明:如果有记录,$result会变成一个数组,总是等价于'true',如果没有,则设置为'false'值。然后,这个 $result 被传递给 if() 评估。无需检查行数。要么至少有一个脚本会继续,要么没有。

错误 #1 和 #4:

另一件事是 PHP 说 POST 数据中没有“电子邮件”值。检查您的登录表单是否包含此字段、格式是否正确以及它的命名方式。我认为您的意思是“用户名”

错误 #5:

最后几行,虽然它们只是在 if(/login correct?/) 的正文中,但我相信一个查询是关于激活过程的未完成代码的一部分,并且错误消息在end 应该从这个 if() 中移出到 else{} 主体,因为它会通知登录失败。

【讨论】:

  • 非常感谢您解决了我的问题
【解决方案2】:

关于您的代码,您没有 mysql 连接。

把它放在你的脚本之上:

$dbhandle = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link)); 

【讨论】:

    【解决方案3】:

    if 语句不正确。这应该是:

    if(mysqli_num_rows($sql_login) &gt; 0)

    【讨论】:

      猜你喜欢
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多