我正在尝试创建一个主页。一旦用户进入网站并输入用户名和密码,数据将被发布到checklogin.php文件中,它将验证用户输入的数据。有没有办法在检查数据并且一切正常后,它将用户重定向到另一个页面,即主页?我想这样做,以便我的整个 checklogin 脚本不在主页上。此外,如果用户位于站点的不同部分,并且他们单击"主页",则检查登录脚本将再次运行并且将失败。我知道我可以使用会话变量来查看它们是否已经登录,然后如果它们已经登录,则以某种方式绕过主页上的 checklogin 脚本,但这是正确的方法吗?
<?php
include'vive_fns.php';
$v_username = trim($_POST['viveuser']);
$v_password = trim($_POST['vivepass']);
if(!isset($_POST['viveuser'])|| empty($v_username)){
echo"Please enter a username"; //should change to redirect
die();
}
elseif(!isset ($v_username) || empty($v_username)) {
echo "Please enter a password"; //should change to redirect
die();
}
//if all data is entered we want to check the password
$mysqli = connect_db();
//set database query
$sql1 = "SELECT password FROM vive_user WHERE username = "."'$v_username'";
//check to make sure a result is returned
if(!$result1 = $mysqli->query($sql1)){
echo 'Could not query database. Please try again later.';//should change to redirect
die();
}
else {
$data = $result1->fetch_array(MYSQLI_NUM);
$db_pass = $data[0];
}
if($db_pass !== $v_password){
$title = 'Incorrect Login Info';
//do_html_header($title); this sets the page title
echo"Incorrect Password";//should change to redirect
die();
}
//if everything checks out need to establish user info
$title = 'Home';
do_html_header($title);
//echo"Logged In";
session_start();
$_SESSION['valid_user']=$v_username;
// at this point i want to redirect
header("Location: home.php");
exit();
看看这个我认为它会帮助你理解这里的逻辑是第一个登录页面,用户可以在其中输入登录信息
<form action="reg_auth.php" method="post" accept-charset="utf-8">
<div id="inrlog" style="display:none;">
<div class="form-group required">
<label for="UserFirstname">Email</label>
<input name="firstname" class="form-control" maxlength="255" type="text" id="UserFirstname" required="required"/>
</div>
<div class="form-group required">
<label for="UserLastname">Password</label>
<input name="lastname" class="form-control" maxlength="255" type="password" id="UserLastname" required="required"/>
</div>
</div>
</div>
<div class="modal-footer">
<p style="text-align:left;"></p><div class="submit"><input class="btn btn-primary" title="Login" name="login" type="submit" value="Login"/></div><div style="display:none;"></div></form>
这是身份验证页面代码,其中用户信息进行身份验证
<?php
if($_POST['login']){
$email = $_POST['email'];
$pwd = $_POST['pwd'];
$m = mysql_fetch_assoc(mysql_query("select * from `register` where `email`='$email' and `pwd`='$pwd'"));
if(!empty($m['email'])){
if($m['status'] == 1){
$_SESSION['login'] = $m['id'];
$_SESSION['displayaname'] = $m['fname'].' '.$m['lname'];
header("Location: myaccount.php");
}else{
header("Location: reg_auth.php?msg=4");
}
exit();
}else{
unset($_SESSION['login']);
unset($_SESSION['displayaname']);
header("Location: reg_auth.php?msg=3");
exit();
}
}
if($_GET['msg'] == 2){
$msg = "Email Already Exists! Please Try Some Different Email.";
}
if($_GET['msg'] == 3){
$msg = "Invalid Username or Password! Please Try Again.";
}
?>
header("Location:http://localhost/form2.php");
exit();
只需根据需要更改网址即可。
是的,
使用用户名和密码字段成功通过用户身份验证后,您需要使用会话来存储与用户相关的信息。
- 用户通过身份验证后,您可以重定向到成功的页面,我的意思是允许他们访问页面。
- 如果用户未通过身份验证,请再次将其重定向到登录页面。
- 如果会话过期,请再次将其重定向到登录页面。
谢谢阿米特
是的,这听起来是正确的。因此,您将在主页上有一个带有login&passw的脚本,将信息发布到checklogin.php。
在那里,您检查数据是否正确,如果数据正确,则使用会话将他设置为登录。之后,您将他重定向到带有header()函数的主页。
请注意,如果在 html 内容之后设置,header() 函数将不起作用,但在您的情况下,checklogin 中没有 html.php对吧? ;)