2012-12-29 72 views
-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.-][email protected][\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; 

} 




?> 

當我驗證$ _SESSION [ '身份證']中選擇.php,它是空的,但在index.php(重定向之前)它有一個值。我不明白爲什麼我失去了這個會話變量

+1

what.php是什麼? – samayo

+0

我重定向到它的文件(header('Location:choice.php');)in index.php – lamloumi

+0

對於上帝,男人的愛,*格式!*請不要直接從其他網頁複製和粘貼而無需通過堆棧溢出標記對代碼進行格式化。 –

回答

2

您的isset()檢查是不夠的,因爲它只會被執行,如果$_SESSION是NULL,它永遠不會 - 它是一個空數組,而且它總是存在,甚至在您致電session_start()之前。

+0

我替換如果(!isset($ _ SESSION)){session_start(); } by session_start();但同樣的問題 – lamloumi

+0

這是一個夢幻般的答案,可以幫助人們理解isset()在這裏沒有意義。 – frustratedtech

0

即使您只是閱讀它們,您也必須始終運行session_start();才能使用會話。另外,$_SESSION是超全球性的,所以它永遠不會是空的:http://php.net/manual/en/reserved.variables.session.php

+0

它不是空的看看文件function.php – lamloumi

+0

我的意思是你的條件來運行'session_start'永遠不會是真的。您必須將此功能運行到您使用會話的每個頁面中。 –

+0

我替換如果'(!isset($ _ SESSION)){session_start(); }'by'session_start();但同樣的問題' – lamloumi

0

您可以在不執行isset()檢查的情況下運行session_start。從手冊:

session_start()根據通過GET或POST請求傳遞的會話標識符或通過cookie傳遞,創建會話或恢復當前會話。

不要忘了在choice.php在session_start運行

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