2012-05-20 35 views
0

第一篇文章 - 我一直在學習PHP和MySQL一個月左右。

我試圖將會話'MM_Username'發佈到日誌記錄中。 ,所以它讀取

「的用戶名存檔」我想,如果我設置的lognote值「以存檔‘$ _SESSION [‘MM_Username’。’」 我會得到的結果,我是後。顯然不是。

我在做什麼錯? 我的代碼如下。

感謝

​​
+0

什麼錯誤? –

+0

我沒有收到錯誤,查詢工作 - 我只是無法得到查詢發送SESSION ['MM_Username']到登錄值 – onebitrocket

回答

1

你是否記得把它session_start();在嘗試訪問您的會話之前?

+0

會話啓動是在用戶登錄時設置的 – onebitrocket

0

你得到什麼結果呢?查詢是否實際執行? 當語句被包裹在雙引號「」試試既然你沒有提供我檢查代碼中的錯誤在{}

$logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Division Archived', %s, 'archived by {$_SESSION[MM_Username]} ')", 
         GetSQLValueString($_GET['divisionid'], "int")); 
+0

抱歉,是的,quey正在執行,但我得到的結果不包括由會話設置的用戶名 – onebitrocket

0

參考變量,並沒有發現任何嚴重codingwise。然而,一些小的建議如下:

<?Php 
if ((isset($_GET['divisionid'])) && ($_GET['divisionid'] != "")) { 


    $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Division Archived', %d, 'archived by %s')", 
     GetSQLValueString($_GET['divisionid'], "int"), 
     $_SESSION['MM_Username']); 

    mysql_select_db($database_connect, $connect); 
    $Result2 = mysql_query($logarchiveSQL, $connect) or die(mysql_error()); 


    $updateGoTo = "../divisions.php"; 
    if (isset($_SERVER['QUERY_STRING'])) { 
     $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?"; 
     $updateGoTo .= $_SERVER['QUERY_STRING']; 
    } 
    header(sprintf("Location: %s", $updateGoTo)); 
    exit; 
} 
?> 
  • 您應該分別使用%d或%F爲INT和FLOAT值。
  • 由於您正在使用sprintf,爲什麼不使用另一個%s來放置SESSION變量?
  • 您應該在每次調用header()後放置一個EXIT,以確保在該程序邏輯從 轉移到另一個頁面後,此頁面上沒有任何更多的 執行。
  • PHP是區分大小寫的,因此建議您檢查SESSION變量的案例 與這裏使用的一個。

最終會明白你面臨的錯誤!

+0

感謝您的提示,我會將其應用到我的系統的其餘部分。會話用戶名仍未記入日誌值。我們得到的結果是「部門存檔\t歸檔爲\t 2012年5月20日 - 下午13點10分」 – onebitrocket

+0

如果您檢查/搜索代碼$ _SESSION ['MM_Username'] =',您會發現一個分配操作,會話變量的日期/時間值在您訪問該值時正在設置。 – somnath

+0

對不起,忽略日期 - 這是查詢運行時更新的時間戳值 – onebitrocket

0

已解決!

感謝大家的幫助!

我沒有聲明session_start,我忘了它是在我的安全包含文件中定義的。

我也必須創建一個部門記錄

session_start(); 

$colname_division = "-1"; 
if ((isset($_GET['divisionid'])) && ($_GET['divisionid'] != "")) { 
     $colname_division = $_GET['divisionid']; 

mysql_select_db($database_connect, $connect); 
$query_division = sprintf("SELECT * FROM division WHERE divisionid = %s", GetSQLValueString($colname_division, "int")); 
$division = mysql_query($query_division, $connect) or die(mysql_error()); 
$row_division = mysql_fetch_assoc($division); 
$totalRows_division = mysql_num_rows($division); 


// ADD LOG DIVISION REINSTATED 
    $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Reinstated', %d, '" . $row_division['division'] . " reinstated by " . $_SESSION['MM_Username'] . "')", 
        GetSQLValueString($_GET['divisionid'], "int")); 

    mysql_select_db($database_connect, $connect); 
    $Result1 = mysql_query($logarchiveSQL, $connect) or die(mysql_error()); 

// MESSAGE USERS DIVISION REINSTATED 
    $messageinsertSQL = sprintf("INSERT INTO messages (message) VALUES ('The division " . $row_division['division'] . " has been reinstated by " . $_SESSION['MM_Username'] . " you may now select this division')", 
        GetSQLValueString($_GET['divisionid'], "int")); 

    mysql_select_db($database_connect, $connect); 
    $Result4 = mysql_query($messageinsertSQL, $connect) or die(mysql_error()); 

// UPDATE DIVISION TO REINSTATED 
    $divisionarchiveSQL = sprintf("UPDATE division SET divisionarchive=0 WHERE divisionid=%s", 
        GetSQLValueString($_GET['divisionid'], "int")); 

    mysql_select_db($database_connect, $connect); 
    $Result3 = mysql_query($divisionarchiveSQL, $connect) or die(mysql_error()); 

// REDIRECT 
    $updateGoTo = "../divisions.php"; 
     if (isset($_SERVER['QUERY_STRING'])) { 
      $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?"; 
      $updateGoTo .= $_SERVER['QUERY_STRING']; 
     } 
    header(sprintf("Location: %s", $updateGoTo)); 

    mysql_free_result($division); 
    exit;