-4

在下面,我有代码并对其进行了很多编辑,除了数据库中的用户名字段没有更新之外,一切正常,数据库设置正确,我也尝试使用 session 而不是 vars。

请不要插入我在这里缺少的任何想法?

<?php
session_start();
?>
<?php 
//session_start();
$id = $_SESSION['user_id'];
$_SESSION['user_id']= $id;  
//$_SESSION['user_name'] = $full_name;
// $username = $_SESSION['user_name'];
//$username = $user_name;
$_SESSION['user_level'] = $user_level;
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
$_SESSION['session_name'] = $user_name;
/****************************************************************************** 
 * Copyright (C) 2012 J~Net                                                   *
 *                                                                            *
 * This script gathers information from the user, including, but not limited  *
 * to their IP, and how long they viewed the page.  It then records it to a   *
 * MySQL database for our records / to monitor traffic to a site.             *
 * Usage : require("tracker.php");             Last modified : Nov 24th, 2012 *
 ******************************************************************************
 * This source and program come as is, WITHOUT ANY WARRANTY and/or WITHOUT    *
 * ANY IMPLIED WARRANTY.                                                      *
 *                                                                            *
 * Users of said software should realize that they cannot and will not hold   *
 * bombthebox.com reliable or responsible for any purpose WHAT SO EVER.       *
 * Please read all documentation and use said software responsibly.           *
 *                                                                            *
\******************************************************************************/

/* Add the static code from the include file */
require("include.php");

/* Obtain and format the current date & time */
$date_time = date("Y-m-d H:i:s");

/* SQL Statement to find out if the visitor is new or existing */
$SQL = "SELECT COUNT(*) AS previous_visitor FROM $db_tabl WHERE ip_address='$REMOTE_ADDR';";

/* Execute the SQL statement */
$results = mysql_db_query($db_name, "$SQL", $connection);

/* Error trapping on SQL */
if (!$results)
  echo("ERROR: " . mysql_error() . "\n$SQL\n");

/* Obtain the data from the record set */
while ($row = mysql_fetch_array($results))
 $previous_visitor = $row["previous_visitor"];

/* If the user is existing, then do this stuff */
if ($previous_visitor > 0)
  {
    /* SQL Statement to pull the information on the user's last visit */
    $SQL = "SELECT * FROM $db_tabl WHERE ip_address='$REMOTE_ADDR' ORDER BY id ASC;"; //AND page_viewed='$HTTP_REFERER' 

    /* Execute the SQL statement */
    $results = mysql_db_query($db_name, "$SQL", $connection);

    /* Error trapping on SQL */
    if (!$results)
      echo("ERROR: " . mysql_error() . "\n$SQL\n");

    /* Pull the data from the record set */
    while ($row = mysql_fetch_array($results))
      {
        $last_id = $row["id"];
        $last_time = $row["date_time"];
      }

    /* Split up the last timestamp for this user */
    $year   = substr($last_time, 0, 4);
    $month  = substr($last_time, 5, 2);
    $day    = substr($last_time, 8, 2);
    $hour   = substr($last_time, 11, 2);
    $minute = substr($last_time, 14, 2);
    $second = substr($last_time, 17, 2);

    /* Convert the user's last timestamp into seconds */
    $previous_time = mktime($hour, $minute, $second, $month, $day, $year);


// session_start();
$user = $_SESSION['user_name'];
// $user_name = $data['user_name'];
$id = $_SESSION['user_id'];
$_SESSION['user_name'] = $full_name;
$user_ip = $_SERVER['REMOTE_ADDR'];
$rq= $_SERVER['REQUEST_URI'];
$_SESSION['session_name'] = $user_name = $un;
$un = $user_name = $_SESSION['user_name'];

//$username = $_SESSION['logged_username'];
$_SESSION['user_name'] = $full_name;
// $user = $full_name;
$username = $_SESSION['user_name'] = $yourname;
$info["user_name"] =  $yourname;
$yourname = $_SESSION['user_name'] = $username;


    /* Split up the current timestamp for this user */
    $year   = substr($date_time, 0, 4);
    $month  = substr($date_time, 5, 2);
    $day    = substr($date_time, 8, 2);
    $hour   = substr($date_time, 11, 2);
    $minute = substr($date_time, 14, 2);
    $second = substr($date_time, 17, 2);

    /* Convert the user's current timestamp into seconds */
    $current_time = mktime($hour, $minute, $second, $month, $day, $year);

    /* Calculate how much time as elapsed since their last visit */
    $time_difference = $current_time - $previous_time;
  }

/* Update the last record with the elapsed time, assuming the value is less than an hour. */
if ($time_difference != "" && $time_difference < 3600)
  {
    /* SQL Statement to update an existing record */
    $SQL = "UPDATE $db_tabl SET time_spent=$time_difference WHERE id='$last_id';";

    /* Execute the SQL statement */
    $results = mysql_db_query($db_name, "$SQL", $connection);

    /* Error trapping on SQL */
    if (!$results)
      echo("ERROR: " . mysql_error() . "\n$SQL\n");
  }




/* SQL Statement to insert the data */
$SQL = "INSERT INTO $db_tabl (ip_address, page_viewed, date_time, username, user_id) VALUES ('$user_ip', '$rq', '$date_time','$yourname','$id') ;";

/* Execute the SQL statement */
$results = mysql_db_query($db_name, "$SQL", $connection);

/* Error trapping on SQL */
if (!$results)
  echo("ERROR: " . mysql_error() . "\n$SQL\n");

/* Close off the database */
mysql_close($connection);

?>
4

1 回答 1

3
$username = $_SESSION['user_name'] = $yourname;
$info["user_name"] =  $yourname;
$yourname = $_SESSION['user_name'] = $username;

$yourname 在此之前没有定义;所以你要为 $username 分配一个不存在的变量的值,然后第 3 行从第 1 行为空的 $username 重新分配 $yourname .... 那么你会期待什么?

于 2012-11-26T15:25:52.683 回答