首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完美的PHP/MySQL登录脚本不起作用

问完美的PHP/MySQL登录脚本不起作用
EN

Stack Overflow用户
提问于 2010-08-20 04:54:04
回答 4查看 780关注 0票数 0

嘿,伙计们,为了这个登录脚本,我已经绞尽脑汁好几个小时了。这是我一直使用的版本,我知道它可以在我的MySQL版本上运行。它只是不会将我发送到正确的授权页面,它将总是重定向到"login_failed.php“文件。

任何帮助都是非常感谢的。

代码语言:javascript
复制
<?php
ob_start();
$host="localhost";
$username="*****"; 
$password="*****";
$db_name="*****"; 
$tbl_name="*****";

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$myusername=$_POST['user']; 
$mypassword=$_POST['pass'];

$encrypted_password=md5($mypassword);

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and passwd='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
session_register("myusername");
session_register("mypassword"); 
header("location:main.php");
}
else {
header("location:login_failed.php");
}

ob_end_flush();
?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-20 05:03:32

我看到的关于代码的不太正确的地方:

  1. 很可能你不需要stripslashes(),因为magic quotes已经不需要转义散列密码了。md5()调用的结果绝对可以信任为32个十六进制字符。当您不需要所有字段时,
  2. 不使用SELECT * ...。
  3. 您可能应该trim()输入($_POST['user']和$_POST['pass']),以消除可能意外插入的额外空格。
  4. 正如ircmaxell指出的那样,您没有在查询中使用散列密码。我希望这只是一个构造查询的错误。
  5. 你应该在你的密码中加盐。阅读本文:Just hashing is far from enough.

现在..。您是否尝试过回显查询并亲自运行它,以查看实际发生了什么?例如:

在调用mysql_query()之前,删除重定向并放置一个echo $sql

票数 3
EN

Stack Overflow用户

发布于 2010-08-20 04:57:06

在数据库中可能有两个这样的用户...另外,检查您在查询中使用的值是否正确。您是否在用户名/密码中使用任何非拉丁/特殊字符?

票数 2
EN

Stack Overflow用户

发布于 2010-08-20 06:00:07

这里我可能是错的,但是通过快速查看您的代码,您将加密密码,但不会在查询中使用该密码。试试..。

代码语言:javascript
复制
//instead of ...
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and passwd='$mypassword'";

//try...        
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and passwd='$encrypted_password'";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3526155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档