php重定向到标题位置

时间:2017-04-23 00:56:11

标签: php html function header

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

<?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 :(得分:0)

你的问题中有很多事情我对你的问题有点失落。我想您要问的是如果表单已经提交,如何只运行表单处理代码。

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

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

现在check_username功能只能在表单提交时运行。

答案 1 :(得分: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"); 
}
?>