-1

重複の可能性:
データのソースとしてグローバル変数を使用した PHP セッションの副作用の警告

PHP経由でAjaxから応答を取得しています。このエラーが発生しています:

PHP 警告: 不明: あなたのスクリプトは、PHP 4.2.3 まで存在していたセッションの副作用に依存している可能性があります。register_globals が有効になっていない限り、セッション拡張機能はグローバル変数をデータのソースと見なさないことに注意してください。行 0 の不明で、それぞれ session.bug_compat_42 または session.bug_compat_warn をオフに設定することにより、この機能とこの警告を無効にすることができます。

どうすれば解決できますか?

私のPHPスクリプトは

<?php

    include("include/config.inc.php");

    $name = $_POST['loginname'];
    $phone = $_POST['logintelephone'];

    // To protect MySQL injection
    $name = stripslashes($name);
    $phone = stripslashes($phone);
    $name = mysql_real_escape_string($name);
    $phone = mysql_real_escape_string($phone);

    $query  = mysql_query("select * from chatapp_users where name = '$name' and phone_no  = '$phone'");
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($query);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count > 0){
        $result = mysql_fetch_array($query);
        session_start();
        $_SESSION['currentuser'] = $name;
        $_SESSION['currentuserid'] = $result['user_id'];
        $_SESSION['phone'] = $result['phone'];
        echo 1;
    }else {
        echo 2;
    }
?>
4

2 に答える 2

0

さらに 2 つの解決策:

  • コードを関数に入れます。

    関数内の変数は (globalステートメントを使用しない限り) グローバル名前空間にないため、このエラーは表示されません。

  • (使用されている) セッション インデックスと同じ名前の変数を使用しないでください。この場合、またはのいずれ$phoneかの名前を変更します。$_SESSION['phone']

この回答には、この警告に関する他の (不穏な) 詳細もあります。

于 2013-01-23T10:00:43.480 に答える
0

php.ini で「session.bug_compat_warn = off」を設定できます。これにより、その警告がオフになります。

もう 1 つの解決策は、PHP をバージョン 4.2.3 よりも新しいバージョンに更新することです。

于 2013-01-23T09:03:44.113 に答える