• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Форма заказа

  • Автор темы jurikserf
  • Дата начала
J

jurikserf

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

Прописал отдельный код формы и сделал страницу обработчика. Все как обычно. но появилась проблема. Сначала была проблема с кодировкой, ее я решил. Сейчас проблема в том. что приходит письмо с отображением только текста, переменные не прописываются. Даже не знаю в чем дело, защиту сервера на глобальные перемены прописал в виде исключения, все равно нет значения переменных в письме.

Чтобы не быть голословным приведу точное содержание кода.

Страница с формой заказа: (имя сайта отмечу как *******)

Код:
<form action="http://www.tutor.*******.ru/send.php" method="post" name="f1">
<table width="391" height="380" border="1">
<tr>
<td>Фамилия: </td>
<td><input type="text" class="bginput" name="surname"></td>
</tr>
<tr>
<td>Имя:</td>
<td><input type="text" class="bginput" name="name"></td>
</tr>
<tr>
<td>Отчество:</td>
<td><input type="text" class="bginput" name="father"></td>
</tr>
<tr>
<td>Страна	 :</td>
<td><input type="text" class="bginput" name="country"></td>
</tr>
<tr>
<td>Область, край:</td>
<td><input type="text" class="bginput" name="kray"></td>
</tr>
<tr>
<td>Город: </td>
<td><input type="text" class="bginput" name="town"></td>
</tr>
<tr>
<td>Адрес (улица, дом...): </td>
<td><input type="text" class="bginput" name="adres"></td>
</tr>
<tr>
<td>Почтовый индекс:</td>
<td><input type="text" class="bginput" name="index"></td>
</tr>
<tr>
<td>e-mail:</td>
<td><input type="text" class="bginput" name="email"></td>
</tr>
<tr>
<td>Телефон: </td>
<td><input type="text" class="bginput" name="phone"></td>
</tr>
</table>
<p>
<input type="submit" name="sub" value="Я подтверждаю заказ отправления на указанные данные"></form>

После заполнения формы и нажатия кнопки подтверждения открывается страница, прописанная как результат удачного отправления. Письмо отправляется следующим обработчиком:

Код:
<?php
if (isset ($_POST['surname'])) {$surname=$_POST ['$surname'];}
if (isset ($_POST['name'])) {$name=$_POST ['$name'];}
if (isset ($_POST['father'])) {$father=$_POST ['$father'];}
if (isset ($_POST['country'])) {$country=$_POST ['$country'];}
if (isset ($_POST['kray'])) {$kray=$_POST ['$kray'];}
if (isset ($_POST['town'])) {$town=$_POST ['$town'];}
if (isset ($_POST['adres'])) {$adres=$_POST ['$adres'];}
if (isset ($_POST['index'])) {$index=$_POST ['$index'];}
if (isset ($_POST['email'])) {$email=$_POST ['$email'];}
if (isset ($_POST['phone'])) {$phone=$_POST ['$phone'];}

$address='tutorial@********.ru';
$sub="Заказ продукта с моего сайта";

$mes="Поступил новый заказ \n";
$mes.="Фамилия: $surname\n ";
$mes.="Имя:$name\n";
$mes.="Отчество:$father\n";
$mes.="Страна:$country\n Край:$kray\n ";
$mes.="Город:$town\n Адрес:$adres\n ";
$mes.="Почтовый индекс:$index\n ";
$mes.="e-mail:$email\n ";
$mes.="Номер телефона: $phone\n";

$verify=mail($address,$sub,$mes,"Content-Type: text/plain; charset=utf-8");
if($verify=='true')
{
$URL="http://www.tutor.********.ru/success.htm";
header("location:$URL");
exit;
}
else
{
$URL="http://www.tutor.a*******.ru/failure.htm";
header("location:$URL");
exit;
}
?>


Открываю почтовый ящик и вижу только текст. значения переменных отсутствуют:

Код:
Поступил новый заказ
Фамилия: 
Имя:
Отчество:
Страна:
Край:
Город:
Адрес:
Почтовый индекс:
e-mail:
Номер телефона:

Не понимаю в чем проблема. Такое ощущение, что переменные не отсылаются обработчиком. Посмотрите кто может код и подскажите где ошибка и как это можно исправить.
 
N

nws

1. var_dump($_POST);
2. $_POST ['$surname']; -> $_POST['$surname'];(без пробела)
3. if($verify=='true') -> if($verify)
4. $submit_button = @$_POST['sub'];
if (isset($submit_button))
{ код }
 
P

Programmer_Hard

if (isset ($_POST['surname'])) {$surname=$_POST ['$surname'];}
поменять на
if (isset ($_POST['surname'])) {$surname=$_POST ['surname'];}
ну и везде так...
ЗЫ возможно я и не прав, просто праздник... и не вникал в код ))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!