2017-04-23 91 views
-1

該項目的主要目的是提供用戶身份驗證並將其重定向到其各自的Web服務。首先我創建了包含登錄表單的HTML頁面。所以當用戶輸入他們的數據時,我會從數據庫中檢索密碼和電子郵件信息,如果輸入的數據是正確的,那麼我應該將它們重定向到另一個PHP頁面。所以我的問題來到這裏....我使用PHP頭將它們重定向到另一個頁面,HTML和MySQL數據庫一切正常,用戶正在輸入表單數據並訪問他們的網頁。但是,如果用戶試圖回到原來的頁面,它將被重定向到頁眉中提到的頁面!用戶無法訪問原始表單頁面。我在HTML標記中使用了該函數。我沒有在表單中提到任何操作。如果用戶輸入錯誤的電子郵件ID或錯誤的密碼,則該函數在同一表單頁面中顯示錯誤信息,但是如果他輸入了正確的數據,他將被引導到頁眉位置中的頁面。因此,當用戶希望返回表單頁面或在一些後重新啓動原始頁面時,它將被重定向到標題位置。所以當我刪除標題位置並重新加載時,我可以看到原始頁面。任何人都可以幫助我糾正代碼?php重定向到標題位置

<?php 
function check_username($eid_login,$pwd_login) 
{ 
$servername="Localhost"; 
$username="root"; 
$password="[email protected]"; 
$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> 

回答

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"); 
} 
?>