Bir Fonksiyonun parçası olarak Değişkenle bir Formu'nu kullanarak

2 Cevap

Aşağıdaki formu işlevinin bir parçası olabilir mi? O değişkenleri beri bir işlevinin bir parçası olmak mümkün olmayabilir merak ediyorum.

Teşekkür peşin,

John

echo '<form  action="http://www...com/sandbox/comments/comments2.php" method="post"> 
    <input type="hidden" value="'.$_SESSION['loginid'].'" name="uid">
    <input type="hidden" value="'.$submissionid.'" name="submissionid">  
    <input type="hidden" value="'.$submission.'" name="submission">
    <input type="hidden" value="'.$url.'" name="url">
    <input type="hidden" value="'.$submittor.'" name="submittor">
    <input type="hidden" value="'.$submissiondate.'" name="submissiondate">
    <input type="hidden" value="'.$countcomments.'" name="countcomments">
    <input type="hidden" value="'.$dispurl.'" name="dispurl">



    <label class="addacomment" for="title">Add a comment:</label>

    <textarea class="commentsubfield" name="comment" type="comment" id="comment" maxlength="1000"></textarea>  

    <div class="commentsubbutton"><input name="submit" type="submit" value="Submit"></div> 
</form>
'; 

2 Cevap

O sağlanan bir işlevi bu kodu kullanabilirsiniz:

  • Sen işlevine bu parametreleri ($ submissionid, $ gönderme vb) geçmek

veya

  • Onları küresel (you shouldn't do this without strong reason) yapmak

Bir işlev içine formu argüman ileterek için üç temel seçenek vardır:

  1. büyük argüman listesi
  2. bir diziye değerleri şeyler ve geçen olmasıyla
  3. global değişkenler

Genellikle sadece 2. (kendiniz veya diğer insanlar tarafından) dışarı çekti getting saçınızı koruyacaktır. Temel kurulum gibi bir şey gider:

function show_form($args) {
    echo <<<EOL
<form action="yada yada">
    <input type="..." name="field1" values="{$args['field1']}" />
    <input type="..." name="field2" values="{$args['field2']}" />
    etc...
</form>
EOL;
}

$form_args = array(
    'field1' => $field1,
    'field2' => $field2,
    etc...
)

show_form($form_args);

Ben formu metin oluşturmak için bir HEREDOC kullanıyorum unutmayın. Bu birleştirme ile bir dize bina daha uğraşmak çok daha kolay. Bu tırnak kaçan endişe sizi kurtarır.

Potansiyel olarak düşmanca kullanıcılar ile bu formu fırsatlar varsa, bazı HTML enjeksiyon saldırıları önlemek için, önceden htmlspecialchars() ile tüm değerleri geçirmek isteyeceksiniz. Sen Form bina işlevi içinde bunu yapabilir, ya da arguman dizisi bina yaparken.

izlem yorumum:

Bu örnekte, size formun tüm alan veri depolamak için "form_args" adlı dizi yapıyolar. Ben sadece vb "field2", "alan1" Onları arıyorum .. Sen Show_Form () işlevi bir Parmeter olarak o $ form_args dizi geçmektedir. Fonksiyonu içinde, bu erişen dizinin kendi özel küçük "$ args" kopya üzerinden veri.

Form içinde, gösterimde {$args['field1']} sadece "anahtar 'alan1' bir giriş için $ argsdizi Bakın, burada üretilen HTML içine eşleşen değeri eklemek demektir. Ayraçları ({[( 1)]}) Bu durumda kesinlikle gerekli değildir, ama her durumda kullanmak için iyi bir uygulama düşünülebilir. PHP çevrimiçi manuelin Arrays girdisi daha fazla detay var