什么是“资源#”? [英] What are "Resource#'s"?

查看:108
本文介绍了什么是“资源#”?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



当我打印下列变量时,获得Resource#6和Resource#7:

  $ salty_password = sha1($ row ['salt'],$ _POST ['password']); ($ _ POST ['subSignIn'])&&!empty($ _ POST ['email'])&&!empty($ _ POST ['password'])

) ){


$ query =SELECT`salt` from`cysticUsers` WHERE`Email` =''。 $ _POST ['email']。 ;
$ request = mysql_query($ query,$ connection)或die(mysql_error());
$ result = mysql_fetch_array($ request);



$ query2 =SELECT * FROM`cysticUsers` WHERE`Email` ='。 $ _POST ['email']。'AND'Password` ='$ salty_password';
$ request2 = mysql_query($ query2,$ connection)或die(mysql_error());
$ result = mysql_fetch_array($ request2);

print_r($ request);
print_r($ request2);

if(@mysql_num_rows($ request,$ request2)){


$ _SESSION ['CLIFE'] ['AUTH'] = true;
$ _SESSION ['CLIFE'] ['ID'] = $ result ['id'];

//更新用户的最后活动
$ query =更新``cysticUsers` SET`LastActivity` ='。日期(Y-m-d)。 。日期(g:i:s)。 'WHERE`id` ='。 mysql_real_escape_string($ _ SESSION ['CLIFE'] ['ID'])。 '限制1;
mysql_query($ query,$ connection);


if(!empty($ _ POST ['return'])){
header(Location:。$ _POST ['return']);
$ b $} else {
header(Location:CysticLife-Dashboard.php?id =。$ _SESSION ['CLIFE'] ['ID']);
}
}

} else {

$ _SESSION ['CLIFE'] ['AUTH'] = false;
$ _SESSION ['CLIFE'] ['ID'] = false;

}


?>

试着解决这个代码块并且不确定这意味着什么。我正尝试使用我在散列和腌制后注册的明文密码重新登录。我觉得我很亲密,但有些错误。帮助为什么这是行不通的,我们将不胜感激。



预先致谢

解决方案

mysql_query()返回结果集作为 resource (根据PHP OOP代码,它们不是对象但我想不出一个更好的词)。它们包含只能被某些函数读取的二进制数据,例如 mysql_fetch _ *()函数。



为了调试你的MySQL查询,你应该使用 mysql_error() mysql_errno()来检查错误和/或保存你的SQL 从我看到的,你正在执行两个查询,但覆盖相同的 $ result 变量,而不对第一个做任何事情。此外, mysql_num_rows()一次只能计算一个结果集,因此您无法将两个结果集传递给相同的调用。


HI

I am getting Resource#6 and Resource#7 when I print the following variables:

$salty_password = sha1($row['salt'], $_POST['password']);

if(isset($_POST['subSignIn']) && !empty($_POST['email']) && !empty($_POST['password'])) {


    $query =  "SELECT `salt` FROM `cysticUsers` WHERE `Email` = '" . $_POST['email'] . "'";
    $request = mysql_query($query,$connection) or die(mysql_error());
    $result = mysql_fetch_array($request);



    $query2 = "SELECT * FROM `cysticUsers` WHERE `Email` = '". $_POST['email']."' AND `Password` = '$salty_password'";
    $request2 = mysql_query($query2,$connection) or die(mysql_error());
    $result = mysql_fetch_array($request2);

    print_r($request);
    print_r($request2);

if(@mysql_num_rows($request,$request2)) {


        $_SESSION['CLIFE']['AUTH'] = true;
        $_SESSION['CLIFE']['ID'] = $result['id'];

        // UPDATE LAST ACTIVITY FOR USER
        $query = "UPDATE `cysticUsers` SET `LastActivity` = '" . date("Y-m-d") . " " . date("g:i:s") . "' WHERE `id` = '" . mysql_real_escape_string($_SESSION['CLIFE']['ID']) . "' LIMIT 1";
        mysql_query($query,$connection);


        if(!empty($_POST['return'])) {
            header("Location: " . $_POST['return']);

        }else{
            header("Location: CysticLife-Dashboard.php?id=" . $_SESSION['CLIFE']['ID']);
            }
        }

    }else{

        $_SESSION['CLIFE']['AUTH'] = false;
        $_SESSION['CLIFE']['ID'] = false;

    }


?>

Trying to troubleshoot this code chunk and not sure what that means. I am trying to sign back in with the clear text password I signed up with after its been hashed and salted. I feel like I'm very close but something is slightly wrong. Help on why that is not working would be greatly appreciated as well.

Thanks in advance

解决方案

mysql_query() returns result sets as objects of type resource (they're not objects in terms of PHP OOP code but I can't think of a better word). These contain binary data that can only be read by certain functions, for example the mysql_fetch_*() functions.

To debug your MySQL queries you should check for errors using mysql_error() and mysql_errno() and/or save your SQL statements in variables and print those.

From what I see, you're performing two queries but overwriting the same $result variable, without doing anything about the first. Also, mysql_num_rows() can only count one result set at a time, so you can't pass two result sets into the same call.

这篇关于什么是“资源#”?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆