运行然后定向到另一个文件的 PHP 文件


php file that runs and then directs to another file

我正在尝试创建一个主页。一旦用户进入网站并输入用户名和密码,数据将被发布到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对吧? ;)