質問

次のコードを取り上げます。

<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action) {
    echo $action;
}
else { 
    echo 'No variable';
}
?>

次に、?action = testでファイルにアクセスします。$アクションがGetによって自動的に宣言されるのを防ぐ方法はありますか?もちろん追加する以外にも

&& !isset($_GET['action'])

変数を宣言してもらいたいのはなぜですか?

役に立ちましたか?

解決

php.ini を確認してください。 register_globals 設定。おそらくオンになっているので、オフにしたいと思います。

変数を宣言してもらいたいのはなぜですか?

あなたはしない。 それは恐ろしいセキュリティリスクです。環境変数、GET変数、POST変数、Cookie変数、およびサーバー変数をグローバルにします。 (PHPマニュアル). 。これらはほんの一握りです 予約変数 PHPで。

他のヒント

みたいです register_globals php.ini が原因です。これをオフにする必要があります。これをオンにすると、セキュリティ上の大きなリスクもあります。

共有ホスティングを使用していて php.ini を変更できない場合は、次を使用できます。 ini_set() register_globals をオフにします。

あなたの質問が理解できれば、 register_globals を off に設定してください。見る http://us2.php.net/manual/en/ language.variables.predefine.php

にアクセスできない場合は、 php.ini, 、 ini_set('register_globals', false) PHPスクリプトでは機能しません(変数はすでに宣言されています) .htacces付き:

php_flag register_globals Off

時には役立つこともあります。

PHP.INI の PHP ログレベルを次のように変更することで、すべての変数が正しく宣言されているかどうかをテストできます。

error_reporting  =  E_ALL 

コード スニペットによって通知が生成されるはずです。

php の歴史のある時点で、セキュリティ上大きな危険があるため、デフォルトで register_globals をオフにするという物議を醸す決定を下しました。これにより、誰でもコードに変数を挿入して、考えられない結果を引き起こす可能性が与えられます。この「機能」はphp6でも削除されています

オンになっている場合は、管理者に連絡してオフにしてもらいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top