-1

私はこのコードをしました:

ファイル index.php:

  <?php
        if (isset($_POST['valider']))
            { if (!isset($_SESSION)) { session_start(); }
                   require("function.php");
                        $email                   = mysql_escape_string($_POST['email']); 
                        $password                    = mysql_escape_string($_POST['password']); 
                        if(!VerifierAdresseMail($email)){?>
                        <script>alert('invalid mail');</script>
    <?php
                        }
                        else{
                        if(!authentification($email,$password))
                        {?>
                        <script>alert('logging failed');</script>
                        <?php
                        }
                        else{
                        header('Location: choice.php'); 
                        }}
                        }
        ?>

function.php で:

<?php
function VerifierAdresseMail($adresse)  
{  
   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';  
   if(preg_match($Syntaxe,$adresse))  
      return true;  
   else  
     return false;  
}
function statistics($id){
$HOST_DB ="localhost";
                $NAME_DB="makempf3_captcha";
                $USER_DB ="root";
                $PWD_DB="";

                $connect = mysql_connect($HOST_DB,$USER_DB,$PWD_DB);
                $db=mysql_select_db($NAME_DB);
?><script>alert(<?php echo $cle ?>);</script><?php              
                $Log_query=mysql_query(
                    "   
                        SELECT * 
                        FROM  tbl_captcha
                        WHERE user_id ='$id'


                        ") or die(mysql_error());
$_SESSION['success'] =0;
$_SESSION['fail'] =0;
                      if ($Log_query == true && mysql_num_rows($Log_query) >0) {
?><script>alert('heni');</script><?php
                               while ($Res_user = mysql_fetch_array($Log_query) ) {
                                $_SESSION['success'] += $Res_user['success'];
                                $_SESSION['fail'] += $Res_user['fail'];


                            }
}





}
function authentification($mail,$pwd_U){

                 $HOST_DB ="localhost";
                $NAME_DB="makempf3_captcha";
                $USER_DB ="root";
                $PWD_DB="";

                $connect = mysql_connect($HOST_DB,$USER_DB,$PWD_DB);
                $db=mysql_select_db($NAME_DB);          

                $Log_query=mysql_query(
                    "   
                        SELECT * 
                        FROM  tbl_user
                        WHERE email ='$mail'
                        AND   user_pass   ='$pwd_U'

                        ") or die(mysql_error());

                        if ($Log_query == true && mysql_num_rows($Log_query) >0) {
                            $Res = array();
                            while ($Res_user = mysql_fetch_array($Log_query) ) {
                               $_SESSION['mail'] = $mail;
                                $_SESSION['pwd'] = $pwd_U;
                                $_SESSION['id'] = $Res_user['id'];


                            }
                            return true;
                        }
                        else return false;

}




?>

Choice.php で $_SESSION['id'] を確認すると null ですが、index.php (リダイレクト前) には値があります。このセッション変数を失った理由がわかりません

4

4 に答える 4

2

が NULL のisset()場合にのみ実行され、実行されることはないため、チェックは十分ではありません。代わりに空の配列であり、呼び出す前であっても常に存在します。$_SESSIONsession_start()

于 2012-12-29T00:43:37.417 に答える
0

セッションを読み取るだけであっても、セッションを使用できるようにするには、常に実行session_start();する必要があります。また、$_SESSIONスーパーグローバルであるため、空になることはありません: http://php.net/manual/en/reserved.variables.session.php

于 2012-12-29T00:43:53.740 に答える
0

isset() チェックなしで session_start を実行できます。マニュアルから:

session_start() は、GET または POST リクエストを介して渡された、または Cookie を介して渡されたセッション識別子に基づいて、セッションを作成するか、現在のセッションを再開します。

choice.php で session_start を実行することを忘れないでください

于 2012-12-29T01:07:09.937 に答える
0

あなたの Index.php はおそらくこのようになっているはずです。ログインのどの部分が間違っていたかをユーザーに決して伝えるべきではありません...失敗したことだけを伝えてください。

<?php
session_start();
require("function.php");

if (isset($_POST['valider']))
    { 
        $email = mysql_escape_string($_POST['email']); 
        $password = mysql_escape_string($_POST['password']); 
        if(VerifierAdresseMail($email) && authentification($email,$password))
            {
                header('Location: choice.php');
            }
            else
               {
                   echo "Invalid Login";
               }
?>
于 2012-12-29T01:07:47.523 に答える