#php #email #post #explode
#php #Адрес электронной почты #Публикация #разнесите
Вопрос:
Я действительно новичок в PHP, так что это, вероятно, довольно глупый вопрос.
Я использую PHP для отправки формы электронной почты и хотел бы, чтобы электронное письмо содержало значения некоторых входных данных формы. Вот урезанная версия:
<?php
if(isset($_POST['submit'])) {
$to = 'address@gmail.com' ;
$subject = 'Subject';
$headers = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
$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-виджеты» дважды (как это будет сделано в приведенном выше коде), как мне перечислить первую часть в первой <p>
(так что это будет «10»), а вторую часть во второй <p>
(так что это будут «виджеты»)?
Что-то вроде следующего кажется многообещающим:
$wholeVal = $_POST('some-name');
$partVal = explode("-",$wholeVal);
и затем, где-то $_POST($partVal[0]);
и $_POST($partVal[1]);
Но я не знаю, где это должно происходить, и где бы я ни поместил это, кажется, все ломается.
Спасибо за вашу помощь.
Ответ №1:
Сначала вы должны получить доступ к $_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' . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
$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. Идеально , как раз то, что мне было нужно. Медленно, но верно я изучаю PHP.
2. 1 за неиспользование
split
и я бы рекомендовал использоватьexit
послеheader
3. @BookOfZeus Почему вы используете <code>exit</code>? В этом примере код практически заканчивается на этом.
4. @niomaster просто за то, что если когда-нибудь вы добавите код после, ничего не сломается. Я согласен с вами, вам это не нужно, поскольку после
header
нет кода, но если однажды вы решите включить этот код в какой-либо другой код (включить в файле), тогда ничего не сломается.
Ответ №2:
Я знаю, что в данный момент вы ищете функциональность, но имейте в виду, что если вы разделяете строку на «-«, было бы очень легко для скриптового ребенка (или даже человека с благими намерениями, если на то пошло) использовать слово через дефис, и ваш скрипт сломается.
Просто предупреждаю: D
Ответ №3:
Попробуйте это
$wholeVal = $_POST('some-name');
$list($ammount, $type) = explode("-",$wholeVal);
Затем в вашу электронную почту:
$message = "<p>" . $ammount . "</p><p>" . $type . "</p>" ;
Ответ №4:
<?php
if(isset($_POST['submit'])) {
$to = 'address@gmail.com' ;
$subject = 'Subject';
$headers = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
$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');
} ?>