Переменные PHP $ _SESSION случайно перезаписываются? - PullRequest
0 голосов
/ 01 февраля 2012

Хорошо, поэтому, когда я запускаю этот сценарий для удаления комментария пользователя из сообщения на форуме, $ _SESSION ['id'] (идентификатор пользователя mysql) изменяется на $ postid (идентификатор сообщения на форуме). Я не вызываю никакую функцию для ее установки, и у меня session_write_close(); вызывается при инициализации сеанса.

<?php
session_start();

// I'm not showing connection code.
if(isset($_SESSION['user'])){

    $user = mysql_real_escape_string($_SESSION['user']);
    $userid = mysql_real_escape_string($_SESSION['id']);

    $id = mysql_real_escape_string($_GET['id']);
    $postid = mysql_real_escape_string($_GET['article']);

    $result = mysql_query("DELETE FROM `______`.`______` WHERE `userid`='$userid' AND `id`='$id' AND `user`='$user'")or die(mysql_error());

    if(mysql_affected_rows($result) == 1){

          mysql_query("UPDATE `_______`.`______` SET `points`=`points`-'1' WHERE `id`='$userid' AND `username`='$user'")or die(mysql_error());
          mysql_query("INSERT INTO `________`.`_______` (`user`,`userid`,`amount`,`reason`) VALUES('$user', '$userid', '-1', 'Removed a comment')")or die(mysql_error());

    }

    mysql_close($con);

    ob_start();
    header("location:../view-article?id=$postid");
    ob_end_flush();

} //if there is a user
else {

    ob_start();
    header("location:http://boundsblazer.com/not-logged-in?url=articles.view-article:id=$postid");
    ob_end_flush();
}
?>

1 Ответ

2 голосов
/ 01 февраля 2012

Если register_globals включено, эта строка

$id = mysql_real_escape_string($_GET['id']);

возможно изменить значение $_SESSION['id']. Поэтому, пожалуйста, попробуйте снова с register_globals.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...