Bir formdaki tüm değişkenleri aramak için bir PHP işlevi var mı?

10 Cevap php

Hey, ben bir müşteri için bir web sitesinde bir geri bildirim formu programlama değilim, ancak, 100 üzerinde girişler (benzersiz adlı tümü) vardır. Orada tüm değişkenleri almak için çalıştırabilir bir döngü oldu bu gibi onları aramak zorunda yoksa ben merak ediyorum:

$variable = $_REQUEST['variable'];

EDIT:

Burada herkes tarafından tavsiye olarak ben $ _POST ile gidiyorum - girişi için teşekkürler! Ben sadece el geçmesi ve ben her $ _POST için bir satır yazacağım.

10 Cevap

You can $ _PREQUEST dizideki tüm değişkenlerde üzerinde döngü:

foreach($_REQUEST as $key=>$value){
  //doStuff
}

Ancak bu tüm giriş değil sadece, parametreleri göndermek içerecektir. Ayrıca $ _REQUEST ama $ _POST veya $ _GET kullanmamalısınız

Eğer benzersiz adında değişkenler yüzlerce var ve veri dizileri istemci tarafı yukarı çevirmek için istiyorum istemiyorsanız, denemek isteyebilirsiniz kullanışlı bir şeklidir hile var.

<form>
  <input name="foo[a]" type="text" />
  <input name="foo[b]" type="text" />
  <input name="bar[]" type="text"  />
  <input name="bar[]" type="text"  />

İstemci Tarafı:

<?php
   $_POST['foo']['a']; 
   $_POST['foo']['b'];
   $_POST['bar'][0];
   $_POST['bar'][1];
?>
echo "<pre>";
print_r($_POST); // or $_GET
echo "</pre>";

Eğer muhtemelen adını biliyorum ama değerlere ihtiyacınız olmayacak öğeleri ile ilgili iseniz o zaman sizin düşündüğünüzden daha çok daha büyük bir sorun ile ilgileniyor.

Eğer formu göndermek Ama yukarıdaki pasajı size tüm ayarlamak, değişkenleri ve değerleri göstermek gerekir

Ben bir beklediğiniz tüm değişkenlerin listesi ve sadece bu üzerinde döngü ile işe başlamak gerektiğini düşünüyorum. Bunu yapmazsanız, hackerlar Aslında, Register Globals eski, korkunç kötü bir fikir reemplementing ediyoruz ... any değişken adı enjekte edebilir. Yani, bunu bilmiyorum ...

Aslında, neden sadece $ _POST gibi, bir ilişkisel dizi girişi tutmak değil? Hala beklemiyordum bu değerleri kaldırmak isteyebilirsiniz.

Yukarıdaki benim yorumum gibi, POST kullanmak, İSTEK kullanmayın. Ben bitenlerin farkında olduğunu bu yüzden muhtemelen her biri için bir satır yazmak istiyorum. Siz insanlar hala çözümlenen ekstra değişkenler göndermek istemiyorum.

Sen algoritmik bir yayınlanmıştır formu tüm girdilerin elde edilmesi basit kod yazabilirsiniz, ama bu tehlikeli bir iş, sömürü için olgun olandır.

$_GET and $_POST array variables contain every parameter passed via URL or POST method respectively. You should rather use that variables instead of extracting every item like the register_globals seçeneği nedenlerle or extract function does. See Using Register Globals.

Ben Pim Jagger'in yazı üzerine bir yorum eklemek değil, ama burada bir örnek kod:

foreach($_POST as $key=>$value) {
    echo($key.' > '.$value.'<br />');
}

POST kopyalanan istediğiniz alanları ile bir dizi kullanmak ve bir dizi veri depolamak. Bu korumak için çok daha kolay.

$fields = array("name","email","addr","bla","bla2");
$form = array();
foreach($fields as $field){
    $form[$field] = $_POST[$field];
}

Now you've got all the data inside $form.
You could also make a similar thing when creating the form. (Although it's trickier..)

Şerefe!

foreach($_POST as $key=>$value) {
            ${$key} = $value;
    }

ancak bu özü olarak aynı şeyi yapar ()