Получить значение параметра и текст с PHP - PullRequest
1 голос
/ 23 октября 2010

Допустим, у меня есть HTML-форма: Соединенные Штаты Америки CDN И я выбираю вариант 1 (США) Тогда php-страница Хорошо, хорошо, работает нормально, и эхо "1" Как я могу также отобразить «США»? Итак, по сути, я хочу также передать текст опциона. Как я мог это сделать?

Ответы [ 3 ]

2 голосов
/ 23 октября 2010

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

Пример: $names[1] = "USA"; $names[2] = "CDN"; Затем, когда вы захотите отобразить его, вы должны вызвать $names[$selection] для вывода текста.

Другой вариант, который вы можете рассмотреть, - это использование javascriptобновить скрытый HTML-элемент на странице отправки, когда пользователь делает свой выбор (используя onUpdate).Эта информация будет передана вместе с данными отправленной формы.Не самый безопасный или надежный из вариантов, но, тем не менее, вариант.

1 голос
/ 23 октября 2010

Браузер клиента не будет публиковать что-либо, кроме имени и значения элемента формы - вам нужно будет включить дополнительные поля формы и Javascript (или изменить значение элемента), чтобы отправить "USA".

0 голосов
/ 23 октября 2010

Я предлагаю иметь копию той же структуры данных, которую вы использовали для печати формы.

Например, если бы вы делали все это на одной странице PHP ...

<?php
$countries=array('USA','CDN');
?>
<form action='?' method='post'>
  <select name='country'><?php
    foreach($countries as $key=>$country){?>
      <option value='<?php echo $key;?>'><?php echo $country;?></option>
    <?php
    } ?>
  </select>

  <input type='submit'>
</form>

<?php
if(isset($_POST['country'])){
  $chosen=(int)$_POST['country'];

  if(!isset($countries[$chosen])){?>Unknown country selection, wtf<?php exit; }?>

  <div style='margin-top:20px;'>You selected <?php echo $countries[$chosen];?></div>

<?php }

Другой вариант - полностью исключить числовое значение и просто использовать название страны в качестве значения параметра. Однако для проверки вам все равно понадобится список значений. Проверьте различия в этом примере ...

<?php
$countries=array('USA','CDN');
?>
<form action='?' method='post'>
  <select name='country'><?php
    foreach($countries as $country){?>
      <option value='<?php echo $country;?>'><?php echo $country;?></option>
    <?php
    } ?>
  </select>

<input type='submit'>
</form>

<?php
if(isset($_POST['country'])){
  $chosen=preg_replace('/[^\w]/','',$_POST['country']);//this isn't strictly necessary, since the next line checks if the value is in your original array - but filtering input is a good habit!

  if(!in_array($_POST['country'],$countries)){?>Unknown country selection, wtf<?php exit; }?>

<div style='margin-top:20px;'>You selected <?php echo $chosen;?></div>

<?php }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...