2010-12-21 14 views
2

私はかなり新しいphpですが、これは簡単だと確信していますが、私は正しい方法でやりたいと思います。私はこのスクリプトを持っている:PHPセッションの副作用の警告 - どのように解決するには?

<?php 
if ($_POST["username"]=="") { 
    include($_SERVER['DOCUMENT_ROOT'] ."/login.inc.php"); 
} else { 
    $username=$_POST["username"]; 
    $password=$_POST["password"]; 
    session_start(); 
    if ($username=="bob" AND $password=="123"){ $permission="yes";} 
    $username=$_POST["username"]; 
    session_register("permission"); 
    session_register("username"); 

    if ($permission=="yes"){ 
     // Show stuff 
    } 
} 
?> 

は、私のコードのファンキーなフォーマットすみません - それは適切に表示するために取得するように見えることはできません。私はそれがセッション変数権利と競合しないように、私の変数名のいずれかを変更する必要がある手段を想定してい

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0

だから、私はこのエラーを得続けますか?それは私が読んだものですが、私はどちらを変更するか分かりません。

誰でも助けてください/私を表示できますか?

おかげ

答えて

3

ことが推奨され、PHP 5.3で廃止されていません。

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.

Source

私たちも知っている通り、register_globalsはひどく、は常にでなければなりません。

セッションVARを登録するための最も一般的な方法は、$_SESSIONスーパーグローバルで、すなわち応答の男性のための

$_SESSION['username'] = $username; 
+0

おかげで、はるかに高く評価されます – Osu

0

は、あなたがより良いようにsession_register非推奨の機能を取り払うに開始

OSU()。

たとえば、$ _SESSION配列を使用します。なぜなら

session_register("username"); 

のことが起こっている

$_SESSION['username'] = $_POST['username']; 
関連する問題