Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的sql或php有什么问题吗?(无法登录)_Php_Sql_Login - Fatal编程技术网

我的sql或php有什么问题吗?(无法登录)

我的sql或php有什么问题吗?(无法登录),php,sql,login,Php,Sql,Login,我无法从我自己创建的函数尝试\u login()中获得任何结果。有人能找出这段代码有什么错误吗?它只对我在数据库中创建的一个用户有效。我想得到一个布尔值作为回报,然后检查结果是否为真,然后将其存储到会话中,然后将用户重定向到特定页面。请帮忙 代码: 屏幕截图:假设您的密码是abc'123——您知道,它是字母、数字和符号的良好组合 mysqli\u real\u escape\u string将其转换为abc\123 md5然后使其成为af94b3b7388e50429710ed345b58c01

我无法从我自己创建的函数
尝试\u login()
中获得任何结果。有人能找出这段代码有什么错误吗?它只对我在数据库中创建的一个用户有效。我想得到一个布尔值作为回报,然后检查结果是否为真,然后将其存储到会话中,然后将用户重定向到特定页面。请帮忙
代码:


屏幕截图:

假设您的密码是abc'123——您知道,它是字母、数字和符号的良好组合

mysqli\u real\u escape\u string
将其转换为
abc\123

md5
然后使其成为
af94b3b7388e50429710ed345b58c01c

但在数据库中,密码abc'123应加密为bb7e1fc94ff2a3e8d2d79c8ab055da60,这是明显不同的

尝试在
mysqli\u real\u escape\u字符串之前移动
md5
调用


编辑:您的第一个用户工作,因为密码是fishman001

然而,第二个是空字符串。您可能正在使用
if(空($\u POST['password'])
或类似工具来查看是否提交了密码。空字符串将无法通过此测试


附:彩虹桌。爱他们。现在停止使用MD5。

假设您的密码是abc'123
——您知道,它是字母、数字和符号的良好组合

mysqli\u real\u escape\u string
将其转换为
abc\123

md5
然后使其成为
af94b3b7388e50429710ed345b58c01c

但在数据库中,密码abc'123应加密为bb7e1fc94ff2a3e8d2d79c8ab055da60,这是明显不同的

尝试在
mysqli\u real\u escape\u字符串之前移动
md5
调用


编辑:您的第一个用户工作,因为密码是fishman001

然而,第二个是空字符串。您可能正在使用
if(空($\u POST['password'])
或类似工具来查看是否提交了密码。空字符串将无法通过此测试



附:彩虹桌。爱他们。现在停止使用MD5。

MD5不是加密密码的好方法。如果您有PHP5.5,请查看
password\u hash
函数返回,所以永远不会到达code>。
var\u dump($row)
,看看这会给你带来什么。@NiettheDarkAbsol很好,但这似乎不是一个错误,是吗?表
成员中是否有列“name”
?md5不是加密密码的好方法。如果您有PHP5.5,请查看
password\u hash
函数返回,所以永远不会到达code>。
var\u dump($row)
,看看这会给你带来什么。@NiettheDarkAbsol很好,但这似乎不是一个错误,是吗?表
成员中是否有列“name”
?但这仍然很重要,或者,如果有人在密码中使用“a”,你会遇到问题。谢谢,但不是我想要的。实际上,我总是使用密码作为第二个参数,但字符串不是空的。只需将该用户的密码更改为非“无”的密码即可。然后停止使用MD5,或者至少在你的散列中添加盐。这仍然很重要,但是如果有人在密码中使用“a”,你会遇到问题。谢谢,但不是我想找的。实际上,我总是使用密码作为第二个参数,但字符串不是空的。只需将该用户的密码更改为非“无”的内容即可。然后停止使用MD5,或者至少在散列中添加盐。
function attempt_login($theusername, $thepassword){
    $host = 'localhost';
    $username = 'root';
    $password = '';
    $database = 'website';
    $con = mysqli_connect($host, $username, $password, $database);

    $theusername = mysqli_real_escape_string($con, $theusername);
    $thepassword = mysqli_real_escape_string($con, $thepassword);
    $thepassword = md5($thepassword);

    $query = "SELECT * FROM members WHERE username = '{$theusername}' AND password = '{$thepassword}'";

    $result = mysqli_query($con, $query);

    $row = mysqli_fetch_array($result);

    return isset($row['name']);

    mysqli_close($con); 
}