2014-01-30 75 views
0

我無法啓動會話,即使此代碼在其他網站中正確運行,但在我構建的網站中,它將無法工作。這是代碼:無法啓動用戶的會話

if(isset($_POST["username"])&& isset($_POST["password"])) { 
    $manager = preg_replace('#[^A-Za-z0-9\@\-\_\|\,\.\\p{L}\\\\]#i', '', $_POST["username"]);//filter everything but numbers and letters 
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]);// filter everything but numbers and letters 
    // Connect to the Mysql database 
    $q = "SELECT * FROM users WHERE username='$manager' AND password='$password' LIMIT 1"; 
    $r = mysqli_query($dbc, $q); 
    $userCount = mysqli_num_rows($r); 

    if($userCount == 1) { 

      while ($user = mysqli_fetch_assoc($r)) { 

       $id = $user['id']; 
       $pass = $user['password']; 
       $us = $user['username']; 

      } 

      $_SESSION["id"] = $id; 
      $_SESSION["manager"] = $us; 
      $_SESSION["password"] = $pass; 
      header("location:index.php?page=business"); 
      exit(); 

    } else { 
     echo 'That information is incorrect,try again <a href="index.php">Click Here</a>'; 
    } 

} 

直到代碼

$id = $user['id']; 
$pass = $user['password']; 
$us = $user['username']; 

一切正常的一部分,但是之後我設置會話變量:

$_SESSION["id"] = $id; 
$_SESSION["manager"] = $us; 
$_SESSION["password"] = $pass; 
header("location:index.php?page=business"); 
exit(); 

沒有會話發現,可以在任何一個幫我?

+1

你有沒有接着說:在session_start()'對你的PHP代碼的頂部? –

+0

您是否在設置會話前將session_start()放入了該頁面 – krishna

+0

您需要在腳本 –

回答

0

不要忘記使用會話開始,像這樣:

session_cache_expire(20); 
     session_start(); 
     session_unregister($username_session); 
     session_register($username_session); 

$_SESSION[$start_session] = time(); 
     $validation = true; 
     $_SESSION[$username_session] = $user; 

我所有的網站,我用這個代碼進行登錄,您可以嘗試在登錄使用!

if ($_POST['btnLogin']) { 

$texto = mysql_query("SELECT user, password from " . $site . "User"); 


$user = $_POST["user"]; 
$pwd = md5($_POST["pwd"]); 

$users = array(); 
$pwds = array(); 

while ($row = mysql_fetch_array($texto)) { 
    array_push($users, $row['user']); 
    array_push($pwds, $row['password']); 
} 
$size = count($users); 
$validation = false; 
$i = 0; 
do { 
    if ($user == $users[$i] && $pwd == $pwds[$i]) { 
     session_cache_expire(20); 
     session_start(); // NEVER FORGET TO START THE <strong class="highlight">SESSION</strong>!!! 
     session_unregister($username_session); 
     session_register($username_session); 
     $inactive = 1200; 
     if (isset($_SESSION[$start_session])) { 
      $session_life = time() - $_SESSION[$start_session]; 
      if ($session_life > $inactive) { 
       header("Location: login.php"); 
      } 
     } 
     $_SESSION[$start_session] = time(); 
     $validation = true; 
     $_SESSION[$username_session] = $user; 

     header("Location: index.php"); 
    } 
    $i++; 
} while ($i < $size && $validation == false); 
if ($validation == false) { 
    $mensagemerro = 'Login Error!'; 
} 
if (!mysql_close($conn)) { 
    die('Could not close BD:' . mysql_error()); 
    } 
} 
?> 
+0

我不知道你是否有意在其他地方張貼這個? 編輯:這沒有解決有關使用會話的原始問題。 – Sean

+0

這是我使用的一個類似的代碼!我檢查mysql數據庫上的用戶和密碼。如果是肯定的,我輸入index.php。如果沒有,我會打印一條錯誤消息。也使用會話。謝謝 – user2428731

0

在PHP中使用會話時,需要session_start()才能訪問$ _SESSION全局。

您是否在使用此功能?如果沒有,請將其放入並測試。

+0

非常感謝你 – user3185201

0

當您要使用SESSION變量時,這意味着您要開始或恢復SESSION。

所以爲了過程之前開始或恢復會話中使用session_start()

+0

非常感謝 – user3185201

相關問題