Web サイトがあり、ユーザーがログインすると、
verify.php
(DataBase に接続し、電子メールとパスワードをユーザー入力と照合し、OK の場合はクライアント データをセッションに入れ、クライアントを /memberarea/index.php に移動します。そうでない場合は、「無効な電子メールまたはパスワードです!」というメッセージが表示されたログイン ページに戻ります)。
<?php
ob_start();
session_start();
$email=$_POST['email'];
$pass=md5($_POST['pass']);
include("conn.php"); // connects to Database
$sql="SELECT * FROM `user` WHERE email='$email' AND pass='$pass'";
$result=mysql_query($sql);
$new=mysql_fetch_array($result);
$_SESSION['fname']=$new['fname'];
$_SESSION['lname']=$new['lname'];
$_SESSION['email']=$new['email'];
$_SESSION['passwrd']=$new['passwrd'];
$no=mysql_num_rows($result);
if ($no==1){
header('Location:memberarea/index.php');
}else {
header("Location:login.php?m=$msg"); //msg="Invalid Login"
}
?>
次に、電子メール ID とパスワードが確認された後、`
/memberarea/index.php
(ここで問題が発生します。)
index.php では、ハッカーがメンバー エリアに入るのをブロックするためにセッションが作成されているかどうかを確認し、ログイン ページに送り返します。
<?
session_start();
isset($_SESSION['email'])` && `isset($_SESSION['passwrd'])`
問題は、クライアントがverify.phpで検証されることです(コードは上にあります)
varify.php では、上に置いた後にのみ、
ob_start();
にsession_start();
移動します/memberarea/index.php
。
削除するob_start()
と、クライアントがverify.phpページに保持され、エラーヘッダーが表示されます SENT。
ob_start()
入れた後/memberarea/index.php
、セッションは空白になり、
そのため、ログインページに戻り、表示するようにプログラムしたエラー ($msg) "Invalid Login" が表示されます。
セッションが値をverify.phpから渡せない理由を誰か教えてください/memberarea/index.php