$ _POST входное значение в двух частях (взорваться?) - PullRequest
3 голосов
/ 15 октября 2011

Я действительно новичок в PHP, так что это, вероятно, довольно тупой вопрос.

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

<?php
if(isset($_POST['submit'])) {
  $to = 'address@gmail.com' ;
  $subject = 'Subject';
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  $message =

  //here are the values that the email will send me 
  "<p>".$_POST('some-name')."</p>
   <p>".$_POST('some-name')."</p>" ;

  mail($to, $subject, $message, $headers);
  header('Location: ../estimate.html');
} ?>

Значение ввода some-name, скажем, 10-widgets отправлено из формы.

Вот вопрос: вместо того, чтобы перечислять «10-widgets» дважды (как будет делать приведенный выше код), как мне перечислить первую часть в первой <p> (так что это будет «10») и вторую часть во втором <p> (так это будут "виджеты")?

Что-то вроде следующего кажется многообещающим:

$wholeVal = $_POST('some-name');
$partVal = explode("-",$wholeVal);

, а затем где-то $_POST($partVal[0]); и $_POST($partVal[1]);

Но я не знаю, где это должно происходить, и где бы я ни ставил, это, кажется, разрушает все это.

Спасибо за вашу помощь.

Ответы [ 4 ]

3 голосов
/ 15 октября 2011

Сначала вы должны получить доступ к $ _POST в квадратных скобках, например $_POST['some-name'].explode возвращает массив.Итак, в вашем примере explode('-', '10-widgets')[0] вернет '10', а explode('-', '10-widgets')[1] вернет 'widgets'

Так что ваш код будет выглядеть примерно так:

<?php
  if(isset($_POST['submit'])) {
    $to = 'address@gmail.com' ;
    $subject = 'Subject';
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    $parts = explode('-', $_POST['some-name']);

    //here are the values that the email will send me 
    $message = 
      "<p>".$parts[0]."</p>
      <p>".$parts[1]."</p>";

    mail($to, $subject, $message, $headers);
    header('Location: ../estimate.html');
  } 
?>
2 голосов
/ 15 октября 2011

Я знаю, что вы ищете функциональность в данный момент, но имейте в виду, что если вы разбиваете строку на "-", это будет действительно легко для детского сценария (или даже человека с добрыми намерениями для этогоимеет значение), чтобы использовать дефисное слово, и ваш сценарий сломается.

Просто на голову: D

1 голос
/ 15 октября 2011

Попробуйте это

$wholeVal = $_POST('some-name');
$list($ammount, $type) = explode("-",$wholeVal);

Тогда на ваш электронный адрес:

$message = "<p>" . $ammount . "</p><p>" . $type . "</p>" ;
0 голосов
/ 15 октября 2011
<?php
if(isset($_POST['submit'])) {
  $to = 'address@gmail.com' ;
  $subject = 'Subject';
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  $message =

    $wholeVal = $_POST('some-name');
    $partVal = explode("-",$wholeVal);
  //here are the values that the email will send me 
  "<p>".$partVal[0]."</p>
   <p>".$partVal[1]."</p>" ;

  mail($to, $subject, $message, $headers);
  header('Location: ../estimate.html');
} ?>
...