我在我的php上创建了一个登录,但似乎无法找到该错误。需要帮助找到它。下面是我的代码:
我的login.php
<?php
if(isset($_POST['U_Name']) && isset($_POST['U_Pass'])){
$user = $_POST['U_Name'];
$pass = $_POST['U_Pass'];
if(!empty($user) && !empty($pass)){
$query = mysql_query("SELECT * FROM accounts WHERE U_Name = '".$user."' AND U_Pass = '".$pass."'") or die (mysql_error());
$data = mysql_fetch_array($query);
$test = $data['U_Pass'];
$query_run = $query;
$query_num_rows = mysql_num_rows($query_run);
if($query_num_rows == 0){
echo "Invalid username/password";
}
else if($query_num_rows == 1){
echo "ok";
$user_id = mysql_result($query_run,0,'id');
$user_id = $data['U_ID'];
$_SESSION['user_id'] = $user_id;
header("location:".$_SERVER['PHP_SELF']." ");
}
{
}
}
else{
echo "You must supply a username and password";
}
}
?>
<div align = "center">
<form action ="<?php echo $current_file; ?>" method = "POST">
Username : <input type = "text" name = "username"> Password : <input type = "password" name = "password">
<input type = "submit" value = "Log in">
</form>
</div>
和connection.php:
<?php
$dbc = mysql_connect('localhost', 'root', '') or die ("Can't connect : ". mysql_error());
mysql_select_db('users', $dbc) or die ("Can't connect : ". mysql_error());
?>
每当我输入我的用户名和密码时,它只会返回我的登录页面。什么都没发生,甚至没有错误信息。请帮我。感谢
答案 0 :(得分:4)
您收到错误的帖子字段必须与表单输入字段名称相同才能尝试更改
if(isset($_POST['U_Name']) && isset($_POST['U_Pass'])){
$user = $_POST['U_Name'];
$pass = $_POST['U_Pass'];
到
if(isset($_POST['username']) && isset($_POST['password'])){
$user = $_POST['username'];
$pass = $_POST['password'];
导致您使用
<input type = "text" name = "username">
<input type = "password" name = "password">
然后在帖子上获取数据看起来像: -
$user = $_POST['username'];
$pass = $_POST['password'];
注意: - mysql_*
已被弃用,使用mysqli_*
或PDO
还使用mysql_real_escape_string()
来esacpe输入字符串
答案 1 :(得分:1)
在html中为输入字段设置一个名称:
&lt; input type =&#34; text&#34; name =&#34; 用户名&#34;&gt;
&lt;输入类型=&#34;密码&#34; name =&#34; 密码&#34;&gt;
但请阅读
$ user = $ _POST [&#39; U_Name &#39;];
$ pass = $ _POST [&#39; U_Pass &#39;];
你必须在HTML中和从$ _POST读取时使用相同的名称,并且它与你在数据库中命名的列的方式无关