这是我的登录php代码,但我无法登录。
我的代码一直工作到echo "2"
,此后不再有效。
include 'inc.config.php';
if(isset($_POST["submit"]))
{
$user = mysql_real_escape_string($_POST['emailid']);
$pass = md5(mysql_real_escape_string($_POST['password']));
$query=mysql_query("SELECT * FROM logsignup WHERE email='$user' AND password='$pass' ");
echo "1";
$numofrows = mysql_num_rows($query);
echo "2";
if($numofrows!=0)
{
echo "3";
while($row=mysql_fetch_assoc($query))
{
$dbusername= $row['emailid'];
$dbpassword= $row['password'];
}
if($user=$dbusername && $pass=$dbpassword)
{
echo "loggedin";
}
}
else
{
echo "invalid";
}
}
这是inc.config.php文件
$con = mysql_connect("localhost","root","");
$select=mysql_select_db("loginsignup");
数据库图片:
答案 0 :(得分:2)
更新到MySQLi,因为mysql_
现在是deprecated。阅读How do I migrate my site from mysql to mysqli?作为入门指南。
停止使用md5
作为密码哈希功能,而是使用password_hash
或similar经过验证的功能。
if($user=$dbusername && $pass=$dbpassword)
这是运行逻辑:
如果从数据库中获取的值与我放入数据库的值相同。
这是毫无意义的,这是一个不必要的过度检查。最好计算返回的正确行数,这将告诉您完全相同的信息。
您需要开始使用错误记录,以帮助自己解决自己的错误,请阅读How to get useful error messages in PHP?
还可以在(PHPMyAdmin)中使用MySQL EXPLAIN来帮助您理解任意的SQL查询。
屏幕截图中的password
字段看起来太短了。 md5
通常为32个字符,因此可能发生的情况是SQL比较失败,因为您将长字符串与较短的字符串进行比较。再检查一遍。
确保在整个PHP和MySQL中使用正确的字符编码,请阅读UTF-8 all the way through并将所有MySQL转换为utf8mb4_unicode_ci
。也习惯使用PHP Multibyte string functions(可能需要安装)。
如果上述指南无法解决您的问题,您至少会有一条明确的路径(带有错误日志),看看出了什么问题,以及如何解决您的问题。
答案 1 :(得分:0)
<?php
`include 'inc.config.php';
if(isset($_POST["submit"]))
{
$user = mysql_real_escape_string($_POST['emailid']);
$pass = md5(mysql_real_escape_string($_POST['password']));
$sql="SELECT * FROM logsignup WHERE email='$user' AND password='$pass'";
$query=mysql_query($sql);
$numofrows = mysql_num_rows($query);
if($numofrows > 0)
{
$row=mysql_fetch_assoc($query)
$_SESSSION['EMAIL']= $row['emailid'];
$_SESSSION['USERNAME'] $row['username'];
if( $_SESSSION['EMAIL'] && $_SESSSION['EMAIL']) {
echo "valid";
}else{
echo "invalid";
}
}
}`
?>