Php 我无法执行我的登录
我有一个登录表单,上面写着Php 我无法执行我的登录,php,mysql,apache,database-connection,server,Php,Mysql,Apache,Database Connection,Server,我有一个登录表单,上面写着 <h1>Log In</h1> <div style="width: 80%;margin-right: auto;margin-left: auto"> <form action="checklogin.php" method="POST"> <p> User ID:<br /> <input type="text" name="username"><br /
<h1>Log In</h1>
<div style="width: 80%;margin-right: auto;margin-left: auto">
<form action="checklogin.php" method="POST">
<p>
User ID:<br />
<input type="text" name="username"><br />
Password:<br />
<input type="password" name="pass" ><br />
<br />
<input type="submit" value="Login">
我知道与服务器的联系是正确的,因为我已经测试了该位的错误,但是无论我怎么做,我都无法通过该语句
“无法执行查询”
表标题为username
和pass
,密码在服务器上加密
我是一个新手,不能理解PHP手册中的这一点
主机是
1和,它们使用的是Apache服务器您没有将查询放入字符串中
您没有正确地传递值
您尚未关闭HTML中的
标记
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$username = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['pass']);
$sql = "SELECT * FROM $tbl WHERE username='$username' and pass= SHA1('$pass')";
$result=mysql_query($sql, $connect) or die(" Could not execute query");
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
您还应该使用mysqli,而不是不推荐使用的mysql。看起来$sql变量实际上从未设置为任何值,这可能会导致您的问题。此外,您正在使用mysql扩展,该扩展已被弃用并替换为mysqli扩展。连接msyqli的一个示例(它是一个非常类似的扩展):
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$username = mysql_real_escape_string($username);
$pass = mysql_real_escape_string($pass);
//EDIT
$sql = SELECT * FROM $tbl WHERE username='$username' and pass= SHA1('$pass');
//$result=mysql_query($sql);
$result=mysql_query($sql, $connect);
if(!$result) {
die('ERROR: ' . mysql_error());
}
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
将您的die
更改为die(mysql\u error())
以查看真正的错误。哪里定义了$sql?
我定义了$sql=“SELECT--etc”,并将die更改为您的推荐,得到了一个空白页。这意味着mysql没有任何问题吗?添加这两行错误报告(E\u all);ini\u set('display_errors',1);
在php代码的顶部,在谢谢你的建议之后,我现在有点进一步,加上我做了一些非常愚蠢的事情。我现在已经去掉了SHA1位,正在测试未加密的密码,以便我可以看到发生了什么。表单标记已关闭,我忘记复制它-抱歉。我已经修复了丢失的$sql=”选择etc,它仍然不起作用。我只收到一条消息ERROR:now,但在文件开头(php标记内)没有errorsputERROR\u reporting(E\u ALL);
看看这是否能给你更多的信息谢谢你这么多。现在我知道该解决什么了。它给了我一些警告和通知。我现在会处理它们,希望它能起作用。作为一个新手,要知道所有的皱纹并不容易。我会保留这个字符串以帮助解决更多的问题。哦,天哪,这只会给我一页关于ERRO的信息R:在它上面,什么都没有。一旦这一小部分正常运行,我将开始测试mysqli,但我确实需要首先运行它。我是否应该放弃“SHA1”并将表中的密码更改为纯文本。这可能与此有关?
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$username = mysql_real_escape_string($username);
$pass = mysql_real_escape_string($pass);
//EDIT
$sql = SELECT * FROM $tbl WHERE username='$username' and pass= SHA1('$pass');
//$result=mysql_query($sql);
$result=mysql_query($sql, $connect);
if(!$result) {
die('ERROR: ' . mysql_error());
}
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);