2012-02-01 9 views
0

さて、このスクリプトを実行してフォーラム投稿からユーザーのコメントを削除すると、$ _SESSION ['id'](ユーザーのmysql id)が$ postid(フォーラム投稿のID)に変更されます。私はそれを設定する関数を呼び出すのではなく、セッションが初期化されるときに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(); 
} 
?> 
+0

同様の変数にアクセスする他のスクリプトやアプリケーションを実行していますか?そうであれば、誤って相互作用しないように、それぞれのアプリケーションに対して異なる 'session_name()'を設定してください。 –

+0

あなたの問題は間違いなくどこか他にあります。これを行うことができるこのコードには何もありません。 –

+0

'register_globals'が有効になっているかどうか確認しますか? 'echo ini_get( 'register_globals')? 'On': 'Off'; ' – DerVO

答えて

2

register_globalsがオンになっている場合は、この行

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

はおそらく$_SESSION['id']の値を変更します。ですので、register_globalsをオフにしてもう一度お試しください。

+0

働いた。しかし、なぜそれらは 'register_globals'のようなものを追加するでしょうか? –

+0

それは本当の謎です。 – DerVO

+0

@Ken変数を取得するのが面倒な人もいますが、送信されたボディ名と同じ名前のすぐに$ nameを使用するだけです。 – InspiredJW

関連する問題