在PHP中从mysql查询中获取用户id
我正在一个网站上工作,我想从这个查询中获取用户id并将其分配给一个变量,以便在会话变量中设置它 但它不起作用 这是密码在PHP中从mysql查询中获取用户id,php,mysql,Php,Mysql,我正在一个网站上工作,我想从这个查询中获取用户id并将其分配给一个变量,以便在会话变量中设置它 但它不起作用 这是密码 $sql="Select user_id,username,password,access_id from temp_users where `username`='$email' and `password`='$password' and `access_id`='2' and 'status'='approved'"; $res=m
$sql="Select user_id,username,password,access_id from temp_users where `username`='$email' and `password`='$password' and `access_id`='2' and 'status'='approved'";
$res=mysql_query($sql) or die(mysql_error());
if($sql!='0'){
//$_SESSION['username']=$email;
while($row=mysql_fetch_array($res)){
$_SESSION['user_id']=$row[0];
echo $_SESSION['user_id'];
exit;
}
header("Location:userpanel2.php");
}
else{
echo 'Query has some problem';
}
}
}
else{
echo 'Signin not set';
}
您的sql查询中有一个错误。不是“状态”,而是
status
$sql="Select user_id,username,password,access_id from temp_users where `username`='$email' and `password`='$password' and `access_id`='2' and `status`='approved'";
主要的问题在于这种状况
if($sql!='0'){
应该是这样的:
if($res && mysql_num_rows($res)>0){
但正如人们所评论的,$sql查询应该通过使用mysql\u real\u escape\u字符串得到更好的保护
status=approved的“和”之间还有一个重大错误您真的应该散列您的密码。当你这么做的时候,试着防止XSS漏洞。什么不起作用?在msysql shell中执行查询时,查询返回什么?将
if($sql!=“0”){
替换为if($res){
查看我的答案,您的sql查询有错误…您的代码易于sql注入,因此不安全..它们不再被维护。请参阅?改为了解,并使用或-将帮助您决定哪个。如果您选择PDO,。这不是小错误,但主要错误:)其他是建议,也必须这样做。谢谢每个人都希望得到你的答案和建议MD5/SHA1不适合密码加密。你应该使用Blowfish。这只是建议,不是OPs问题的重点。对,但你不应该给出错误的建议。MD5和SHA1不再合适了。任何人只要有一张像样的显卡,就可以制作一张彩虹表来破解MD5/SHA1。-1建议。即使你的答案解决了OP的问题,建议MD5或SHA1或任何非加密安全哈希机制都是不负责任和危险的。@DanLugg我认为这个问题是关于为什么登录查询不起作用的。Legionar正确地回答了这个问题,那么为什么要进行否决?建议使用正确的工具只是副作用,虽然受到欢迎,但不是强制性的。但是,由于h20000000也有评论,为什么要重复相同的多次?你应该建议使用什么样的哈希算法,而不是你的负面评论。