PHP保护$ _GET

时间:2014-06-03 15:13:32

标签: php mysql

我不知道为什么这不起作用。如果?会话= 2 不是来自您,那么您将返回到您的帐户。

这是我的代码:

<?php
$hosts = $mysql->query("SELECT * FROM user_host WHERE uid = '" . $_SESSION['id'] . "'");
$hostsFetch = $hosts->fetch_assoc();

$userq = $mysql->query("SELECT * FROM users WHERE id = '" . $_SESSION['id'] . "'");
$userf = $userq->fetch_assoc();

if (isset($_GET['session'])) {
    $_SESSION['siteid'] = $mysql->real_escape_string($_GET['session']);
    header('Location: ./home');
}

if (trim($_SESSION['siteid']) == '') {
    $_SESSION['siteid'] = $userf['default'];
}

$hosts2 = $mysql->query("SELECT * FROM user_host WHERE id = '" . $hostsFetch['id'] . "'");
$hosts2Fetch = $hosts2->fetch_assoc();

这是问题/它不起作用

我仍然可以去?session = 2 ,但它不是我的

if ($hosts2Fetch['uid'] != $_SESSION['id']) {
    $_SESSION['siteid'] = $userf['default'];
}


$host = $mysql->query("SELECT * FROM user_host WHERE uid = '" . $_SESSION['id'] . "'");
while ($item = $host->fetch_assoc()) {
    ?>
    <option
        value="./home?session=<?php echo $item['id']; ?>" <?php echo($_SESSION['siteid'] == $item['id'] ? 'selected' : '') ?>><?php echo $item['name'] . ' - ' . $item['domein']; ?></option>
<?php

}
?>

谢谢。

1 个答案:

答案 0 :(得分:2)

请记住,PHP中的所有内容都区分大小写。您使用的是查询字符串Session,但在代码中您无法引用session,您必须使用Session

您提及使用了?Session=2,但在代码中您引用的是$_GET['session']。这两者的情况应该匹配。