-1

当我尝试使用该系统时,我收到了这些错误。

 使用未定义的常量 session_id - 在第 16 行的 C:\wamp\www\UCP\header.inc.php 中假定为“session_id”

mysql_fetch_assoc() 期望参数 1 是资源,在第 21 行的 C:\wamp\www\UCP\header.inc.php 中给出的布尔值

mysql_num_rows() 期望参数 1 是资源,在第 22 行的 C:\wamp\www\UCP\header.inc.php 中给出的布尔值

:使用未定义的常量 IsLoggedIn - 在第 3 行的 C:\wamp\www\UCP\Dashboard.php 中假定为“IsLoggedIn”

<?php
session_start();
require_once("connection.php");

$user = IsLoggedIn();

if($user)
{
    $expires = time() + (60 * 15);
    mysql_query("UPDATE 'active_users' SET 'expires' = " . $expires . " WHERE 'user' = " . (int) $user . "");
    
}

function IsLoggedIn()
{
    $sessID = mysql_real_escape_string(session_id);
    $hash = mysql_real_escape_string(hash("sha512", $sessID.$_SERVER['HTTP_USER_AGENT']));
    
    $query = mysql_query("SELECT 'user' FROM 'active_users' WHERE 'session_id' = '" . $sessID . "' AND 'hash' = '" . $hash . "' AND 'expires' > " . time() . "");
     
    $data = mysql_fetch_assoc($query);
    if(mysql_num_rows($query))
    {
        return $data['user'];
    }
    else {
        return false;
    }
    
}
?>
4

4 回答 4

1

您的 SQL 查询中有拼写错误。

在函数中更改SLECT为始终使用 (`) 来打包表或字段名称。SELECTIsLoggedIn()

于 2013-04-06T08:31:42.417 回答
1
1.Use of undefined constant session_id: define your session_id
2. For mysql error just change SLECT with SELECT
3. Use of undefined constant IsLoggedIn : pull your IsLoggedIn function in the top of the page.
于 2013-04-06T09:05:33.837 回答
0

基本上,至少考虑用 PDO 或 mysqli 编写它,因为 mysql_query 已贬值。但在这种情况下:

 1) $sessID = session_id();
 2) the mistake is here --->  WHERE session_id = '$sessID' AND hash= '$hash' AND expires > " . time(). "");     First, you INSERT Hash and SESSION_id TO DB and then you SELECT it.
 3) $num=mysql_num_rows($query);
    if($num !==0 ) { 
    }
4) mysql_query("UPDATE active_users SET expires = '$expires' WHERE user='$user'");
5) if($user !==null)
6) if you still receiving errors, check if row & table names are correctly written.
于 2013-04-06T08:23:20.857 回答
0

在您的查询中更改SLECTSELECT

于 2013-04-06T08:27:18.090 回答