2016-01-20 110 views
0

我在php中遇到問題。我已經實施了一個註冊和登錄的網站。本週登錄工作正常,但今天的會話有問題..頁面刷新後會丟失。我試圖在堆棧溢出中找到答案,但我不能。這裏是代碼PHP - 刷新後會話丟失

<?php @session_start(); ?> 
<?php require_once('Connections/connection.php'); ?> 
<?php 

mysql_select_db($database_connection, $connection); 
$query_login2 = "SELECT * FROM `users`"; 
$login2 = mysql_query($query_login2, $connection) or die(mysql_error()); 
$row_login2 = mysql_fetch_assoc($login2); 
$totalRows_login2 = mysql_num_rows($login2); 



$loginFormAction = $_SERVER['PHP_SELF']; 

if (isset($_POST['usernamelog'])) { 
    $query_User = sprintf("SELECT * FROM `users` WHERE Email= %s", GetSQLValueString($_POST['usernamelog'], "text")); 
    $User = mysql_query($query_User, $connection) or die(mysql_error()); 
    $row_User = mysql_fetch_assoc($User); 
    $totalRows_User = mysql_num_rows($User); 
    $username = $row_User['Email']; 
    $statuss= $row_User['Status']; 

    $usernamee = $_POST['usernamelog']; 
    $password = $_POST['passwordlog']; 
    mysql_select_db($database_connection, $connection); 

    $LoginRS__query=sprintf("SELECT Status, Email, Password FROM `users` WHERE Email=%s AND Password=%s", 
    GetSQLValueString($usernamee, "text"), GetSQLValueString($password, "text")); 

    $LoginRS = mysql_query($LoginRS__query, $connection) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    //echo $loginFoundUser; 
    if ($loginFoundUser) {  
    $_SESSION['MM_Username'] = $usernamee; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup; 

    } 
} 
$colname_User = "-1"; 
if (isset($_SESSION['MM_Username'])) { 
    $_SESSION['MM_Usernamee'] = $_SESSION['MM_Username']; 
} 
/******$_SESSION['MM_Usernamee'] IS LOST AFTER REFRESH********/ 
    mysql_select_db($database_connection, $connection); 
    $query_User = sprintf("SELECT * FROM `users` WHERE Email= %s", GetSQLValueString($_SESSION['MM_Usernamee'], "text")); 
    $User = mysql_query($query_User, $connection) or die(mysql_error()); 
    $row_User = mysql_fetch_assoc($User); 
    $totalRows_User = mysql_num_rows($User); 
    $username = $row_User['Email']; 
    $status= $row_User['Status']; 

    ?> 

P.S.在Localhost上工作正常。

該答案在答案的評論中!

+0

爲什麼@session_start()?必須只是session_start()。 –

+0

我試過這個,但仍然不工作 –

回答

1

在舊版本的PHP,你必須在設置會話變量的使用方法了session_register( '[會話名稱]')之前

所以嘗試:

<?php 
session_start(); 

if (! isset($_SESSION['session_name']) 
{ 
    session_register('session_name'); 
    $_SESSION['session_name'] = 'Session value'; 
} 

echo $_SESSION['session_name']; 

編輯:你寫之前

<?php session_start() 

你不能有任何文字,甚至沒有空格。因爲在會話可以設置自己的標題之前發送標題。 因此,您必須檢查PHP的啓動是否是首先在此腳本中加載的內容。 即使您使用「include」加載此腳本,在它不能爲任何文本之前。

+0

我得到這個錯誤致命錯誤:調用未定義的函數session_register()在/ home...on行93 –

+0

,如果我使用session_start(),而不是@session_start()我得到這個錯誤警告:session_start():無法發送會話緩存限制器 - 已發送頭文件。 –

+0

你有什麼想法如何可能的登錄工作昨天,但不是今天???爲什麼它工作本地主機,而不是網絡? –