首页 文章

php重定向到 Headers 位置

提问于
浏览
-1

我的主要目标是提供用户身份验证并将其重定向到各自的Web服务中 . 首先,我创建了包含登录表单的HTML页面 . 因此,当用户输入数据时,我从数据库中检索密码和电子邮件信息,如果输入的数据是正确的,那么我应该将它们重定向到另一个PHP页面 . 所以我的问题来了....我正在使用PHP标头将它们重定向到另一个页面,一切都很好用HTML和MySQL数据库,用户输入表单数据并访问他们的网页 . 但是如果用户试图回到原始页面,它将被重定向到 Headers 中提到的页面!用户无法访问原始表单页面 . 我在HTML标签中使用了该功能 . 我没有在表单中提及任何操作 . 如果用户输入错误的电子邮件ID或错误的密码,则该函数会在同一表单页面中显示错误消息,但如果他输入正确的数据,则会将其定向到 Headers 位置中的页面 . 因此,当用户希望返回到表单页面或在某些页面之后重新启动原始页面时,它将被重定向到 Headers 位置 . 因此,当我删除 Headers 位置并重新加载它时,我能够看到原始页面 . 任何人都可以帮我纠正代码吗?

<?php
function check_username($eid_login,$pwd_login)
{
 $servername="Localhost";
 $username="root";
 $password="2537@Nuka";
 $dbname="Secure_Drive";
 $conn=mysqli_connect($servername,$username,$password,$dbname);
 if(!$conn)
 {
  #die("Couldn't to connect to database:".mysqli_connect_error());
 }
 else
 {
  #echo "Connected sucessfully to the database";
 }
 $sql="SELECT * FROM SignUp_Info WHERE Email_Id='$eid_login'";
 $result=mysqli_query($conn_db_login,$sql);
 if(mysqli_num_rows($result)>0)
 {
  while($row=mysqli_fetch_assoc($result))
  {
   $verify_login_pwd=$row["Password"];
   if($pwd_login!=$verify_login_pwd)
   {
    $password_match="You entered wrong password";
    echo "<p class=\"php\">".$password_match."</p>";
   }
   else
   {
    header('Location:sample.php');
   }
  }
 }
 else
 {
  $email_exits="Id does not exists";
  echo "<p class=\"php\">".$email_exits."</p>";
 }
}
?>
<html>
<head>
  <title>
   Login-Home
  </title>
  <link rel="stylesheet" type="text/css" href="css/login.css">
</head>
<body>
 <header>
  <div class="name">
    <a href="#"><h1>Secure Drive</h1></a>
  </div>
 </header>
 <main>
   <div>
    <center>
    <form method="POST">
      <fieldset class="formstyle">
        <legend>Login</legend>
          <div class="adjust">
            <br><label class="labels">E-mail ID</label><br>
            <input class="floattype" type="text" name="emailid_login" placeholder="E-mail Id" required><br>
            <br><label class="labels">Password</label><br>
            <input class="floattype" type="password" name="password_login" placeholder="Password" required><br>
            <br><button type="submit" value="Login">Login</button>
          </div>
      </fieldset>
    </form>
    <?php 
     $eid_login=$_POST["emailid_login"];
     $pwd_login=$_POST["password_login"];  
     check_username($eid_login,$pwd_login); ?>
    <br><br><a class="link" href="signup.php">Click here to SignUp</a>
    </center>
   </div>
  </main>
 <footer>
  <p>&copy;2016 Secure Drive,Gryffindors Inc.</p>
 </footer>
</body>
</html>

2 回答

  • 0

    在你的问题中发生了很多事情,我对你的问题有点失落 . 我认为你问的是如果表单已经提交,如何只运行表单处理代码 .

    您可以像这样检查请求方法:

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         $eid_login=$_POST["emailid_login"];
         $pwd_login=$_POST["password_login"];  
         check_username($eid_login,$pwd_login); ?>
    }
    

    现在 check_username 函数只能在表单提交时运行 .

  • 0

    你需要提到 session_start(); 每页的顶部 . 这是表单页面 .

    if(isset($_SESSION['login'])){
        header('Location:sample.php');
    }
    

    在while循环else部分中添加一个会话变量 .

    if($pwd_login!=$verify_login_pwd)
       {
        $password_match="You entered wrong password";
        echo "<p class=\"php\">".$password_match."</p>";
       }
       else
       {
           $_SESSION['log'] = $username;
           header('Location:sample.php');
       }
    

    sample.php

    <?php  
       session_start();
       if(!isset($_SESSION['login']){
           header('Location:form.php');
       }
    
    ?>
    

    logout.php来使用它

    <?php
    session_start();
    if(session_destroy())
    {
    header("Location: form.php"); 
    }
    ?>
    

相关问题