GET değişkenleri için bir dizi kullanarak

4 Cevap php

Şu anda Get değişkenleri için aşağıdaki kodu kullanıyorum, ve bir diziye dönüştürmek için en iyi yolu bilmek istiyorum. Bunu yapmanın başlıca avantajı, sadece estetik mi, yoksa bir performans / verim yönü de var mı?

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"];}

4 Cevap

Eğer yukarıdaki gibi tekrarı yapıyorsun Temelde, o şeyler yapmanın daha iyi bir yolu vardır genellikle. Eğer bir koleksiyon veri varsa yapmak gibi görünüyor gibi, bir dizide tutmak için her zaman genellikle en iyisidir.

Bir formdan alıyorsanız eğer, aslında kullanarak, formun kendisi bir dizi koyabilirsiniz:

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

Eğer kullanılarak iterated $ _GET ['detayları'] şeklinde sonuçlar alacak

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

Forma girilen tüm verilerin değerlerini görüntüler hangi. Onunla başa çıkmak için döngü koymak kod size kalmıştır. Sadece SQL enjeksiyonu ve alanları ekleyerek kullanıcı için dikkat - Sen, örneğin, teslim yazılı olacak foreach içinde bir SQL ifadesi oluşturmak edebilirsiniz.

Sen extract kullanmak, ancak dikkatli olmak için gidiyoruz sürece, yok yapabilirsiniz.

Doc:

Import variables from an array into the current symbol table.

Checks each key to see whether it has a valid variable name. It also checks for collisions with existing variables in the symbol table.

Ancak uyarılmak:

Do not use extract() on untrusted data, like user-input ($_GET, ...). If you do, for example, if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values such as EXTR_SKIP and be aware that you should extract in the same order that's defined in variables_order within the php.ini.

Grup bir dizi varsayılan değerler:

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

Sonra tablo birleştirme ve değişkenlere sonuç çıkartabiliriz:

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

Ve empty() testi necesssary ile kullanın:

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

Soru hakkında emin değil. $ _GET Bir dizidir.