2017-04-23 16 views
-1

私の主な目的は、ユーザー認証を提供し、それぞれのWebサービスにリダイレクトすることです。まず、ログインフォームを含むHTMLページを作成しました。したがって、ユーザーがデータを入力するときに、パスワードと電子メール情報をデータベースから取得します。入力したデータが正しい場合は、別のPHPページにリダイレクトする必要があります。だから私の問題はここに来る....私は別のページにそれらをリダイレクトするためにPHPのヘッダーを使用している、すべてのHTMLとMySQLデータベースとユーザーがフォームデータを入力し、自分のWebページにアクセスしている。しかし、ユーザーが元のページに戻ろうとすると、ヘッダーに記載されているページにリダイレクトされています。ユーザーは元のフォームページにアクセスできません.HTMLタグでこの機能を使用しました。フォームには何も言及していません。ユーザーが間違った電子メールIDまたは間違ったパスワードを入力すると、関数は同じフォームのページ自体にエラーmsgを表示しますが、正しいデータを入力すると、ヘッダーの場所にあるページに移動します。したがって、ユーザーがフォームページに戻ったり、元のページを再起動したりする場合、ヘッダーの場所にリダイレクトされます。だから私はヘッダの位置を削除して、それをリロードして元のページを見ることができます。コードを修正するのに誰も助けてくれますか?ヘッダーの場所にリダイレクトするPHP

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

答えて

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部分にセッション変数を追加します。この

<?php 
session_start(); 
if(session_destroy()) 
{ 
header("Location: form.php"); 
} 
?> 
を使用する

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

関連する問題