$ _POST两个部分的输入值(爆炸?)

时间:2011-10-15 07:19:51

标签: php email post explode

我是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 个答案:

答案 0 :(得分:3)

首先,您应该使用括号访问$ _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');
  } 
?>

答案 1 :(得分:2)

我知道你现在正在寻找功能,但请记住,如果你用“ - ”分割字符串,对于一个脚本小子(或者甚至是一个善意的人)来说它真的很容易问题)使用带连字符的单词,你的脚本就会中断。

只是抬头:D

答案 2 :(得分:1)

试试

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

然后进入您的电子邮箱:

$message = "<p>" . $ammount . "</p><p>" . $type . "</p>" ;

答案 3 :(得分:0)

<?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');
} ?>