1

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

4

1 に答える 1

0

conn.phpから空白が取得されているようです。がconn.php?>の最後にある場合は、それを削除して (その後に空白がある場合があります)、 conn.phpの前に空白がないことを確認してください。その後、エラーは発生しません。<?header is alredy SENT

また、以下の結果が得られることを確認した後、セッション データを設定する必要があります。

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

  $no=mysql_num_rows($result);

   if ($no==1){

       // Set the session data here.
       $new=mysql_fetch_array($result);

       $_SESSION['fname']=$new['fname'];
       $_SESSION['lname']=$new['lname'];
       $_SESSION['email1']=$new['email1'];
       $_SESSION['passwrd']=$new['passwrd'];

       header('Location:memberarea/index.php');
   }
   else {

       header("Location:login.php?m=$msg"); //msg="Invalid Login"
   }

後もう一つ; メールデータ $_SESSION[' email1 ']$_SESSION[' email ']に 2 つのインデックスを使用しています。最初のもの (email1) は間違っています。

于 2012-12-17T04:48:08.717 に答える