PHP formun 'name' değişkeni nasıl erişilir

8 Cevap php

Ben bir BMI hesap oluşturmak için çalışıyorum. Bu, insanların metrik veya emperyal ölçümleri ya da kullanmak için izin vermelidir.

Benim sorunu çözmek için gizli etiketleri kullanabilirsiniz fark, ama ben sorayım dedim önce bu beni rahatsız etti: I $_POST['variableName'] sunulan degiskenAd alan değeri bulmak için kullanabilirsiniz; ama ... Ben doğrulamak için nasıl biliyor, ya da görmüyorum hangi form used değişkenleri teslim oldu.

(Ben o soruya kesinlikle alakalı olduğundan emin değilim gerçi) benim kod aşağıda bulunuyor:

<?php

    	$bmiSubmitted 	= $_POST['bmiSubmitted'];


    	if (isset($bmiSubmitted)) {
    	$height		= $_POST['height'];
    	$weight		= $_POST['weight'];
    	$bmi		= floor($weight/($height*$height));

    	?>
    		<ul id="bmi">
    		<li>Weight (in kilograms) is: <span><?php echo "$weight"; ?></span></li>

    		<li>Height (in metres) is: <span><?php echo "$height"; ?></span></li>

    		<li>Body mass index (BMI) is: <span><?php echo "$bmi"; ?></span></li>

    		</ul>
    	<?php

    	}

    	else {
    	?>


    	<div id="formSelector">

    	<ul>
    		<li><a href="#metric">Metric</a></li>
    		<li><a href="#imperial">Imperial</a></li>
    	</ul>

    		<form name="met" id="metric" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="form/multipart">

    			<fieldset>

    			<label for="weight">Weight (<abbr title="Kilograms">kg</abbr>):</label>
    				<input type="text" name="weight" id="weight" />

    			<label for="height">Height (<abbr title="metres">m</abbr>):</label>
    				<input type="text" name="height" id="height" />

    			<input type="hidden" name="bmiSubmitted" id="bmiSubmitted" value="1" />

    			</fieldset>

    			<fieldset>

    				<input type="reset" id="reset" value="Clear" />

    				<input type="submit" id="submit" value="Submit" />

    			</fieldset>

    		</form>

    		<form name="imp" id="imperial" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="form/multipart">

    			<fieldset>

    			<label for="weight">Weight (<abbr title="Pounds">lbs</abbr>):</label>
    				<input type="text" name="weight" id="weight" />

    			<label for="height">Height (Inches):</label>
    				<input type="text" name="height" id="height" /    
    			<input type="hidden" name="bmiSubmitted" id="bmiSubmitted" value="1" />
    			</fieldset>

    			<fieldset>
    				<input type="reset" id="reset" value="Clear" />
    				<input type="submit" id="submit" value="Submit" />
    			</fieldset>
    		</form>

    	<?php
    	}

?>

Ben metrik ile (doğrulama olmadan da olsa an-benim soru çok kalabalık etmek istemedim) o amele doğrulandı; Ben henüz imparatorluk için formu değil işleme ekledik.

Gerekli herhangi bir yardım ve için teşekkürler (bu gülünç kolaysa) kendimi flagellate olacak.

Şerefe

8 Cevap

Sunulan formu tanımlamak için kullanabilirsiniz:

  • Gizli bir giriş alanı.
  • Ismi veya Gönder düğmesini değeri.

Formun adı POST verilerinin bir parçası olarak sunucuya gönderilmez.

Form adı sunmamıştır. Sadece her form gizli bir alan eklemek ve bir gün onu aramak gerekir.

Böyle yapabilirsiniz:

<input type="text" name="myform[login]">
<input type="password" name="myform[password]">

yayınlanmıştır değerleri kontrol edin

if(isset($_POST['myform'])) {
    $values = $_POST['myform'];

    // $login = $values['login'];
    // ...
}

formu göndererek düğmesini (formun id yöntem post)

<input type="submit" value="save" name="commentData">

php dosyasında

if(isset($_POST['commentData'])){
//code
}

petervandijck.com belirttiği gibi log-in sistemi bir tür arkasında o var ya da diğer kodu gömülü varsa, bu kod XSS saldırılarına karşı duyarlı olabilir.

: Yazdığınız bir XSS saldırısı, önlemek için

<?php echo "$weight"; ?>

Bunun yerine yazmalıdır:

<?php echo htmlentities($weight); ?>

: Daha iyi olarak yazılmış olabilir ki

<?=htmlentities($weight); ?>

Form alanlarının sadece isimleri sunulması, formun kendisi adı değil. Ama bunu adıyla gizli bir alanı ayarlayabilirsiniz.

Sen farkında mısın echo $ yüksekliği ile; Eğer doğru, uygulamada bir çok, çok ciddi güvenlik delik açılıyor?

nedense, gönderme düğmesi adı isnot, ajax / jquery ile submited zaman $ _POST süper küresel geçmek

Sadece durumda onun yardım birisi olarak ..