2012-02-01 2 views
0

좋아, 포럼 게시판에서 사용자의 의견을 삭제하기 위해이 스크립트를 실행하면 $ _SESSION [ 'id'] (사용자의 mysql id)이 $ postid (포럼 게시물의 ID)로 변경됩니다. 나는 그것을 설정하는 함수를 호출하지 않으며, 세션이 초기화 될 때 session_write_close();이 호출됩니다. register_globals가 ON이면

<?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(); 
} 
?> 
+0

비슷한 변수에 액세스하는 다른 스크립트 또는 응용 프로그램을 실행하고 있습니까? 그렇다면 실수로 상호 작용하지 않도록 각 응용 프로그램마다 다른'session_name()'을 설정하십시오. –

+0

귀하의 문제는 분명히 다른 곳에서 발생합니다.이 코드에는 아무 것도 없습니다 ... –

+0

'register_globals '가 활성화되어 있는지 확인 하시겠습니까? 'echo ini_get ('register_globals')? 'On': 'Off'; ' – DerVO

답변

2

이 줄

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

가능성 $_SESSION['id']의 값을 변화. 다시 register_globals으로 다시 시도하십시오.

+0

Worked. 하지만 왜 그들은 'register_globals'같은 것을 추가 할까? –

+0

그것은 진실 된 수수께끼입니다. – DerVO

+0

@Ken 어떤 사람들은 변수를 얻는 것을 너무 게으르므로, 단지 보낸 사람의 이름과 동일한 이름을 $ name 바로 사용합니다. – InspiredJW

관련 문제