带有帐户激活检查的 PHP 登录页面 [重复]
Posted
技术标签:
【中文标题】带有帐户激活检查的 PHP 登录页面 [重复]【英文标题】:PHP login page with account activation check [duplicate] 【发布时间】:2016-03-02 06:10:56 【问题描述】:我正在尝试编写一个登录页面,该页面只有在用户激活帐户时才会登录。如果他们还没有激活,他们应该被重定向到激活页面。我不明白为什么我的脚本不起作用,它只是显示“需要用户名”错误消息。我认为我的 if 语句可能是错误的? user.php 是成功登录后应该访问的用户配置文件 activation.php 是他们激活帐户的地方。
<body>
<?php
if ($_POST['submit'])
$getuser=$_POST['uname'];
$getpass=$_POST['pword'];
if($getuser)
if($getpass)
require("./mysql.php");
$query=mysqli_query($conn,"SELECT * FROM userdet WHERE username='$getuser'&& password='$getpass'");
$numrows = mysqli_num_rows($query);
if($numrows==1)
$row =mysqli_fetch_assoc($query);
$dbactive=$row['status'];
if ($dbactive==1)
$query=mysqli_query($conn,"SELECT * FROM userdet WHERE username='$getuser'&& password='$getpass' && status='1'");
$_SESSION['username']=$getuser;
header("Location:user.php");
else
//$errormsg = "Your account has not been activated";
header("Location:Activation.php")
else
$errormsg="Username not found";
mysqli_close($conn);
else
$errormsg="Password is required";
else
$errormsg="Username is required";
else
$errormsg="";
echo "<form action='./login.php' method='post' >
<table>
<tr>
<td> </td>
<td> $errormsg</td>
</tr>
<tr>
<td> Username:* </td>
<td> <input type='text' id='uname' name='username' value='$getuser' /></td>
</tr>
<tr>
<td> Password:* </td>
<td><input type='password' name='pword' id='code' value='$getpass' /></td>
<tr>
<td></td>
<td><input type='submit' name='submit' value='Log in' /></td>
</tr>
</tr>
</table>
</form>";
?>
</body>
【问题讨论】:
似乎if($getpass)
条件返回false,因此显示“需要用户名”。提交登录表单后,您可以转储 $_POST 变量以查看其中的内容吗?在if ($_POST['submit'])
线下方使用此var_dump($_POST);
你的页面没有session_start();
,你需要把它放在你的页面顶部
我在页面顶部添加了以下内容。就在我的html之上,它在哪里有区别吗?
【参考方案1】:
您正在访问的内容有错误。当您发布表单时,值参考是 name
而不是 id
。
$getuser=$_POST['uname'];
应该是
$getuser=$_POST['username'];
正如您在此处看到的name='username'
,您还可以将id
定义为同名以避免混淆。
<input type='text' id='username' name='username' value='$getuser' />
【讨论】:
谢谢沙门!这解决了问题,我错过了这样一个细节:)以上是关于带有帐户激活检查的 PHP 登录页面 [重复]的主要内容,如果未能解决你的问题,请参考以下文章