Как получить доступ к переменной 'name' формы из PHP

Я пытаюсь создать калькулятор BMI. Это должно позволить людям использовать метрические или имперские измерения.

Я понимаю, что я мог использовать скрытые теги для решения моей проблемы, но это меня прослушивало раньше, поэтому я подумал, что попрошу: я могу использовать $_POST['variableName'] чтобы найти переданное значение переменной NameName; но … я не знаю или вижу, как проверить, какая форма была использована для отправки переменных.

Мой код ниже (хотя я не уверен, что это строго относится к вопросу):

 <?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 } ?> 

Я подтвердил, что он сработал (хотя без проверки на данный момент – я не хотел слишком много толковать мой вопрос) с метрикой; Я добавил форму, но не обработку для имперских.

Solutions Collecting From Web of "Как получить доступ к переменной 'name' формы из PHP"

Чтобы идентифицировать представленную форму, вы можете использовать:

  • Скрытое поле ввода.
  • Имя или значение кнопки отправки.

Имя формы не отправляется на сервер как часть данных POST.

Вы можете использовать следующий код

 <form name="myform" method="post" action="" enctype="multipart/form-data"> <input type="hidden" name="frmname" value=""/> </form> 

Имя формы не отправляется. Вы должны просто добавить скрытое поле в каждую форму и назвать его днем.

Вы можете сделать это следующим образом:

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

Проверьте опубликованные значения

 if (isset($_POST['myform'])) { $values = $_POST['myform']; // $login = $values['login']; // ... } 

В форме кнопки отправки (id-метод формы – post ):

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

В файле PHP:

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

По какой-то причине имя кнопки отправки не передается в суперглобальное $_POST при $_POST с помощью Ajax / jQuery.

На всякий случай это помогает кому-то …

Как отметил petervandijck.com , этот код может быть восприимчив к атак XSS, если у вас есть какая-то система входа в систему или встроена в другой код.

Чтобы предотвратить атаку XSS, где вы написали:

 <?php echo "$weight"; ?> 

Вместо этого вы должны написать:

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

Что может быть лучше написано так:

 <?=htmlentities($weight); ?> 

Вы можете использовать GET в параметре действия формы, который я использую всякий раз, когда я делаю комбинированную страницу входа / регистрации.

Например: action="loginregister.php?whichform=loginform"

Надеюсь это поможет!

Представлены только имена полей формы, имя самой формы – нет. Но вы можете установить скрытое поле с именем в нем.

Вы понимаете, что с эхом $ height; вы открываете очень серьезную дыру в вашем приложении, верно?

Вы можете просто указать имя кнопке отправки и сделать то, что нужно сделать на основе этого. У меня есть несколько форм на странице и делаю именно это. Передайте имя кнопки, а затем, если имя кнопки = имя кнопки, сделайте что-нибудь.