2011-12-19 24 views
0

當我在Wamp中運行腳本時,第17行和第21行得到以下警告通知。這是什麼告訴我以及可以/應該怎樣解決該問題?php中的無效論證

警告:在C的foreach()供給無效參數:\瓦帕\ WWW \ eCardScript \ ecard_lib.php上線17 * 警告:在C的foreach()*供給的參數無效: \ 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 2011-12-19 13:12:27

+2

並且不要讓用戶輸入定義全局變量的名字!這造成了一個正確的混亂[這是爲什麼PHP不再爲你](http://php.net/manual/en/security.globals.php)! – Quentin 2011-12-19 13:13:32

+0

是的,你最好使用'$ _POST'和'$ _GET'。 – ArVan 2011-12-19 13:14:43

回答

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 2011-12-19 23:16:39

+1

@Webiter:不要那麼做。 – ThiefMaster 2011-12-20 17:58:00

1

$HTTP_POST_VARS$HTTP_GET_VARS已棄用。您應分別使用$_POST$_GET