2009-07-10 5 views
0

現在Get変数に次のコードを使用しており、配列に変換する最良の方法を知りたいと考えています。これを単に審美的なものにすることの主な利点はあるのですか、それともパフォーマンス/効率性の面もありますか?GET変数の配列を使用する

if (isset($_GET["cmd"])) 
    $cmd = $_GET["cmd"]; 
else 
die("Invalid URL"); 
    if (isset($_GET["username"])) 
{ $username = $_GET["username"];} 
    if (isset($_GET["firstname"])) 
{ $firstname = $_GET["firstname"];} 
    if (isset($_GET["lastname"])) 
{ $lastname = $_GET["lastname"];} 
    if (isset($_GET["street1"])) 
{ $street1 = $_GET["street1"];} 
    if (isset($_GET["city1"])) 
{ $city1 = $_GET["city1"];} 
    if (isset($_GET["postcode1"])) 
{ $postcode1 = $_GET["postcode1"];} 
    if (isset($_GET["street2"])) 
{ $street2 = $_GET["street2"];} 
    if (isset($_GET["city2"])) 
{ $city2 = $_GET["city2"];} 
    if (isset($_GET["postcode2"])) 
{ $postcode2 = $_GET["postcode2"];} 
if (isset($_GET["phone"])) 
{ $phone = $_GET["phone"];} 
if (isset($_GET["mobilephone"])) 
{ $mobilephone = $_GET["mobilephone"];} 
if (isset($_GET["fax"])) 
{ $fax = $_GET["fax"];} 
if (isset($_GET["email"])) 
{ $email = $_GET["email"];} 
if (isset($_GET["website"])) 
{ $website = $_GET["website"];} 
if (isset($_GET["bank"])) 
{ $bank = $_GET["bank"];} 
if (isset($_GET["banknumber"])) 
{ $banknumber = $_GET["banknumber"];} 
if (isset($_GET["accountnumber"])) 
{ $accountnumber = $_GET["accountnumber"];} 
    if (isset($_GET["subcat"])) 
{ $subcat = $_GET["subcat"];} 

答えて

2

extractを使用することはできますが、注意しない限りは使用しないでください。 DOCから

: 現在のシンボルテーブルにアレイから

インポート変数。

有効な変数名が であるかどうかを確認するために各キーをチェックします。シンボルテーブルの既存の変数 との衝突についても、 をチェックします。

しかし、警告が表示さ:

は、ユーザ入力($_GET、...)のように、信頼できない データ上)(エキスを使用しないでください。もし あなたは一時的に register_globalsに依存している ラン古いコードにしたい場合は、たとえば、あなたは 非上書きextract_typeは、EXTR_SKIPなど 値とあなたが抽出すべき ことに注意してのいずれかを使用 を確認してください同じ注文 は、variables_order のphp.iniに定義されています。

3

基本的には、上記のように繰り返している場合は、通常はより良い方法があります。コレクションデータを持っている場合は、そのように表示されますが、通常は配列内に保持するのが最も一般的です。フォームからそれを取得している場合は

あなたが実際に使用して、フォーム自体の配列にそれを置くことができます。

<input type="text" name="details[username]" /> 
<input type="text" name="details[first_name]" /> 
etc. 

ザ・あなたは$ _GET [「詳細」の形で結果を取得します]

foreach ($_GET['details'] as $field_name=>$value) 
{ 
    echo "<p>{$field_name} = {$value}</p>"; 
} 

フォームに入力されたすべてのデータの値を表示する必要があります。あなたがそれを処理するためにループに入れたコードはあなた次第です。たとえば、foreach内にSQL文を作成して送信することができます。これはSQLインジェクションとユーザーがフィールドを追加することに注意してください。

1

グループ配列のデフォルト値:

$default = array(
    'email' => '', 
    'name' => NULL, 
    //... 
); 

は、その後、あなたのテーブルをマージし、変数に結果を抽出します。

extract(array_merge($default, $_GET), EXTR_PREFIX_SAME, 'param'); 
// here already existing variable names will be prefixed with 'param_' 

そしてnecesssary empty()テストで使用します。

if(empty($name)) 
    die("You must specify the name."); 
0

質問について不明です。 $ _GETは配列です。

関連する問題