2011-12-19 34 views
0

Wampでスクリプトを実行すると、17行目と21行目に以下の警告通知が表示されます。これは私に何を伝えているのですか?PHPの無効な引数

警告:foreachのために供給無効な引数()Cで:\ WAMP \ WWW \ eCardScript \ ecard_lib.php ライン17 * 警告で:foreachのために供給 *は無効な引数()Cで:代わりに\ WAMP \ WWW \ eCardScript \ ecard_lib.php ライン上の21

<?php 
include('htmlMimeMail.php'); 

function getPostGetVars() { 
    global $HTTP_POST_VARS,$HTTP_GET_VARS; 
    foreach ($HTTP_POST_VARS as $key => $value) { // This is Line 17 
    global $$key; 
    $$key = $value; 
    } 
    foreach ($HTTP_GET_VARS as $key => $value) { // This is Line 21 
    global $$key; 
    $$key = $value; 
    } 
} 
?> 
+3

HTTP _ * _ VARSを使用しないで、何年も前から[非推奨](http://uk.php.net/manual/en/reserved.variables.post.php)されています。 – Quentin

+2

そして、ユーザー入力にグローバルの名前を定義させないでください!それは[PHPがもはやあなたのためにやっていない理由です](http://php.net/manual/en/security.globals.php)という正しい混乱を作り出します! – Quentin

+0

はい、 '$ _POST'と' $ _GET'だけを使うのが良いでしょう。 – ArVan

答えて

3

使用$_GET$_POST

http://php.net/manual/en/language.variables.predefined.php

は、PHPから5.0.3長い事前に定義された配列などHTTP_GET_VARSはデフォルトでは無効になってしまいました。下位互換性のために、php.iniで有効にすることができます....

+0

下位互換性のために、php.iniでこれらを有効にすることができます....これは難しく、成功していますか? – Webiter

+1

@Webiter:単にそれをしないでください。 – ThiefMaster

1

$HTTP_POST_VARSおよび$HTTP_GET_VARSは推奨されていません。それぞれ$_POST$_GETを使用してください。