PHP登录表单不会使用正确的凭据登录用户
我有一个php表单,当用户提交不正确的凭据时,会收到相应的错误消息,但当使用正确的凭据时,不会收到登录成功消息,只是收到相同的错误凭据消息。我已经尝试了哈希密码和没有运气。这是我的登录功能代码:PHP登录表单不会使用正确的凭据登录用户,php,mysql,login,web,phpmyadmin,Php,Mysql,Login,Web,Phpmyadmin,我有一个php表单,当用户提交不正确的凭据时,会收到相应的错误消息,但当使用正确的凭据时,不会收到登录成功消息,只是收到相同的错误凭据消息。我已经尝试了哈希密码和没有运气。这是我的登录功能代码: function login($username, $password) { $host = 'localhost'; $user = 'jamaixan_bobsled'; $pass = 'v67fvg7gk_&g'; $db = 'db_for_site_67'; mysql_conne
function login($username, $password) {
$host = 'localhost';
$user = 'jamaixan_bobsled';
$pass = 'v67fvg7gk_&g';
$db = 'db_for_site_67';
mysql_connect($host, $user, $pass);
mysql_select_db($db);
$connected = mysql_select_db($db);
$user_id = user_id_from_username ($username);
$password = md5($password);
return(mysql_result(mysql_query("SELECT COUNT(`id_user`) FROM `table_of_users` WHERE
`email_user` = `$username` AND `password_user` = `$password`") , 0) == 1) ? $user_id : `false`;
}
您不应该将用户名和密码值放在反勾中,而应该将它们放在引号中。您甚至在backticks中放置了
false
。这样做:
$result = mysql_query("SELECT COUNT(`id_user`) FROM `table_of_users` WHERE
`email_user` = '$username' AND `password_user` = '$password'");
return (mysql_num_rows($result)>0) ? $user_id : false;
我建议您使用PDO,这是一种处理DB请求的更安全的方法。mysql_*函数已弃用
使用mysqli_*或pdo。。。mysql已被弃用
function login($username, $password)
{
$cn = mysqli_connect('localhost', 'jamaixan_bobsled', 'v67fvg7gk_&g', 'db_for_site_67') or die('Connection error!');
$SQL = "SELECT COUNT(id_user) FROM table_of_users WHERE email_user = '%s' AND password_user = '%s'";
$Query = sprintf($SQL, mysqli_real_escape_string($username), md5($password));
$Result = mysqli_query($cn, $Query) or die( mysqli_error($cn) );
$Rows = mysqli_fetch_array($Result);
return ( isset($Rows[0]) && ($Rows[0] > 0) );
}
仍然没有登录成功。我只是在我的index.php页面中调用这个函数,所以不要这样做,这一定是登录函数的问题。看看更新plzYeah Im,几年前的一个教程,这就是我使用MYSQL的原因。但是,尝试了您建议的方法,但仍然没有成功。不确定问题出在哪里,因为我只是在index.php页面中调用登录函数。为什么
$username
和$password
在backticks中?什么是backticks?我只是分离了连接函数,仅此而已。我不明白你的意思哦…对不起。。。遗漏了…将更正它..thx它们必须在引号中:(quote=”
)变量$user\u id
已定义但未使用。此外,该查询复制了OP的SQL注入漏洞-我认为这些漏洞不应在未修复的情况下被逐字复制。在每个mysql
函数后放置if
语句,以确保它返回您期望的值。我可以看到四个没有检查返回值的地方。此外,此代码中存在SQL注入漏洞,因此不要将其激活。
function connectdb()
{
$dbhost='localhost';
$dbname='db_for_site_67';
$dbuser="jamaixan_bobsled";
$pwd="v67fvg7gk_&g";
try
{
$db=mysql_connect($dbhost,$dbuser,$pwd);
if($db)
{
try
{
$dbselect=mysql_select_db($dbname,$db);
if(!$dbselect)
{
throw new Exception("Unable to select database: $dbname with error ". mysql_error());
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
}
else
{
throw new Exception("Unable to connect to database with error ". mysql_error());
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
return $db;
}
function login($username, $password) {
$user_id = user_id_from_username ($username);
$password = md5($password);
$conn1=connectdb();
$sql1="SELECT COUNT(`id_user`) FROM `table_of_users` WHERE `email_user` = $username AND `password_user` = $password";
$res1=mysql_query($sql1);
$res1=mysql_fetch_array($res1);
$res1=$res1['COUNT(`id_user`)'];
if($res1==1){
echo "login sucessful";
} else {
echo "login Failed";
}
}