2013-04-01 31 views
0

我有這個PHP代碼,這是一個簡單的登錄系統。我的會話工作在本地模式,但不在服務器上

<?php 
    session_start(); 

    // Connecting to DB 

    mysql_connect("localhost", "database1", "dbdb1"); 
    mysql_select_db("dbdb"); 

    // Getting session info and params AFTER sending POST params 

    print_r($_SESSION); 

    function doLogin($username_post, $password_post){ 
     $select_login = " 
      SELECT 
       id, 
       username 
       FROM 
       users 
      WHERE 
       username = '$username_post' 
       password = '$password_post' 
      LIMIT 1"; 

     $query_login = mysql_query($select_login); 
     $rows_login = mysql_num_rows($query_login); 

     $array = mysql_fetch_assoc($query_login); 

     if($rows_login>0){ 

      $_SESSION['user_in'] = True; 

      return True; 

     }else{ 
      return False; 
     } 
    } 

    // LOGIN 

    $username   = $_POST['username'];          
    $password = $_POST['password']; 

    if(!empty($username) && !empty($password)){ 
     doLogin($username, $password); 
    } 
?> 

<!DOCTYPE HTML> 
<html> 
    <body> 
     <form action = "" method = "post"> 
       <input type = "text" name = "username"/> 
       <input type = "password" name = "password" /> 

       <button type="submit" name = "submit">Login</button> 

     </form> 
    </body> 
</html> 

顯然,它的工作原理。這段代碼在本地模式下效果很好,但是當我在服務器模式下執行時,我遇到了一個嚴重的問題,它根本不起作用。如果你看到,我把一個print_r();在代碼內部,我將其放置,以便知道會話是否成功發送。在本地模式下,我可以在重新加載之後看到發送的參數。在服務器模式下,我看不到它,似乎沒有發送會話。

有什麼建議嗎?這段代碼真的發生了什麼?我需要知道它爲什麼在本地模式下工作,但不在服務器上。

PHP會話:

session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn Off Off 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file no value no value 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /var/lib/php/session /var/lib/php/session 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies On On 
session.use_trans_sid 0 0 
+0

可能重複的http:/ /stackoverflow.com/questions/155920/php-session-data-not-being-saved – Ejaz

回答

0

我猜你的數據庫服務器有相同的登錄和數據,本地計算機一樣DB?

如果沒有行從數據庫返回的,它不會設置會話值

+0

是的,它的確如此。同一數據庫。它記錄得很好,但不存儲會話。 –

0

也許您的服務器不支持會話。請與phpinfo()命令,並檢查是否session support參數被啓用,如果啓用了,檢查其他會話參數與您的服務器管理員

編輯1:你應該與使用AND那裏的條件

$select_login = " 
    SELECT 
     id, 
     username 
     FROM 
     users 
    WHERE 
     username = '$username_post' AND 
     password = '$password_post' 
    LIMIT 1"; 
相關問題