在日志消息中插入 $_SESSION['MM_Username']


insert $_SESSION['MM_Username'] in to log message

第一篇文章在这里 - 我已经学习php和mysql一个月左右了。

我正在尝试将会话"MM_Username"发布到日志中。所以它读作"按用户名存档">

我想如果我将日志值设置为"存档者".$_SESSION["MM_Username"] .'"'我会得到我想要的结果。显然不是。

我做错了什么?我的代码如下。

谢谢

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

  $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Division Archived', %s, 'archived by " . $_SESSION['MM_Username'] . "')",
                       GetSQLValueString($_GET['divisionid'], "int"));
  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));}

在尝试访问会话之前,您是否记得将其放在session_start((中?

你得到什么结果?查询是否实际执行?当语句用双引号括起来时" "尝试在 { } 中引用变量

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

由于您没有提供错误,因此我检查了代码,没有发现任何严重的编码。但是,一些小建议如下:

<?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;
}
?>
  • 应分别对 INT 和 FLOAT 值使用 %d 或 %f。
  • 既然你使用的是 sprintf,为什么不使用另一个 %s 来放置 SESSION 变量呢?
  • 您应该在每次 header(( 调用后放置一个 EXIT 以确保没有任何内容此页面中的更多内容在程序逻辑传输后执行到另一页。
  • PHP 区分大小写,因此建议您检查大小写的 SESSION 变量,此处使用的变量。

最终会欣赏您面临的错误!

解决了!

感谢大家的帮助!

我没有声明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;