[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Доработка простой формы заказа.
mopapy
Ребята я новичок и прошу у вас помощи. Хочу создать простую форму заказа Баннеров на сайте.
Задача:
1. Создать 3 поля для ввода (Имя, почта и количество месяцев) и 4 чекбокса (Баннер 1, Баннер 2, Баннер 3, Баннер 4)
2. После отправки заказа должно вывестись сообщение о заказе (сумма и выбранные места).
3. Та же информация должна прийти мне на почту.

Вот 1 и 2 пункт я решил, скорее всего очень коряво и примитивно но работает (можете говорить что и как лучше сделать за место того что есть уже).
С 3 пунктом проблема: вот сумму заказа и количество месяцев я могу передать себе так как у них есть переменные а вот с местами для баннеров я не могу врубится как завести в переменную и отправить себе. Функции отправки на почту нет пока, ею займусь позже, хотя, если кто то может дать нормальный пример буду благодарен.

ФОРМА
<html>
<head>
</head>
<body>
<form
method="post" action="help.php">
<span>
Ваши данные</span><br />
<input
type="text" name="namec" size="15" maxlength="40" value="Ваше Имя"><br />
<input
type="text" name="emailc" size="15" maxlength="40" value="Ваш E-mail"><br />
<span>
Место вашей рекламы</span><br />
<input
name="banner1" type="checkbox" value="banner1">Баннер №1
<input name="banner2" type="checkbox" value="banner2">Баннер №2<br />
<input
name="banner3" type="checkbox" value="banner3">Баннер №3
<input name="banner4" type="checkbox" value="banner4">Баннер №4<br />
<span>
Количество месяцев: </span>
<input
type="text" name="month" size="1" maxlength="2" value="1"><br />
<input
type="submit" value="Отправить заказ">
</form>
</body></html>


ОБРАБОТЧИК help.php
<?php
//создание коротких имен переменных
$namec = $_POST['namec'];
$emailc = $_POST['emailc'];
$banner1 = $_POST['banner1'];
$banner2 = $_POST['banner2'];
$banner3 = $_POST['banner3'];
$banner4 = $_POST['banner4'];
$month = $_POST['month'];
?>

<?php

//Определение цен
if ($banner1 == true){
define('BANNER1', 20);
}
if ($banner2 == true){
define('BANNER2', 40);
}
if ($banner3 == true){
define('BANNER3', 60);
}
if ($banner4 == true){
define('BANNER4', 80);
}

//Сообщение о выбранных местах
echo "Вы выбрали места: ";

if ($banner1 == true){
echo "Баннер №1, ";
}
if ($banner2 == true){
echo "Баннер №2, ";
}
if ($banner3 == true){
echo "Баннер №3, ";
}
if ($banner4 == true){
echo "Баннер №4<br /><br />";
}

//Считаем сумму заказа
$totalamount = (BANNER1 + BANNER2 + BANNER3 + BANNER4) * $month;

//проверка заказа
if ($totalamount == 0){
echo "<span style='color:red'>Вы не выбрали место для баннера</span><br />";
}
else {
//Выводим сообщение
echo "<span style='color:green'>Ваш заказ отправлен, мы скоро свяжемся с вами</span><br />";
echo "Сумма вашего заказа: ".$totalamount."$";
}
?>


Вот ссылка на форму http://php.wd-art.com/



Спустя 18 минут, 19 секунд (26.08.2011 - 13:47) Diss написал(а):
по коду отпишусь, по поводу почты увы не знаю.
Цитата
?>

<?php

зачем закрывать если следом открываешь?
плюс в конце закрывать не надо, если там нет хтмл кода (а его там нет)

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

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

....
//создание коротких имен переменных
$namec = $_POST['namec'];
$emailc = $_POST['emailc'];
$banner1 = $_POST['banner1'];
$banner2 = $_POST['banner2'];
$banner3 = $_POST['banner3'];
$banner4 = $_POST['banner4'];
$month = $_POST['month'];

здесь надо проверять, а был ли мальчик, ну была ли отправка пост формы

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

Спустя 7 минут, 31 секунда (26.08.2011 - 13:55) mopapy написал(а):
Это я для себя делаю, буду думать над фильтрами и проверками.

Спустя 6 часов, 27 минут, 6 секунд (26.08.2011 - 20:22) bodja написал(а):
Типа этого

//html
<input checked="checked" name="banner" value="1" type="radio">
<
input name="banner" value="2" type="radio"><br>
<
input name="banner" value="3" type="radio">
<
input name="banner" value="4" type="radio"><br>

//php
if (isset($_POST['banner']))
{
if (!preg_match ("/[1-4]{1}/",$_POST['banner']))
{
echo 'Палундра,хакеры нападают!!!';
}
else {$banner=$_POST['banner'];}
}

else {echo 'Палундра,хакеры нападают!!!';}


Спустя 25 минут, 44 секунды (26.08.2011 - 20:48) sebastjan написал(а):
bodja Может я не прав. я использую старт сессии, из вне тогда подделка пост невозможна.
Может я не прав?
Разъясни.

Спустя 14 минут, 51 секунда (26.08.2011 - 21:03) bodja написал(а):
сессия служит для сессии smile.gif
пост запросы тут не причем,
хакеру ничего не стоит на полученой ему сессии перехватить и модифицировать пост запрос от браузера и отдать дальше серверу.Это можно делать даже на уровне винсока ,неговоря уже про дрова сетевой карты.

Спустя 12 минут, 47 секунд (26.08.2011 - 21:15) sebastjan написал(а):
Цитата (bodja @ 26.08.2011 - 18:03)
сессия служит для сессии smile.gif
пост запросы тут не причем,
хакеру ничего не стоит на полученой ему сессии перехватить и модифицировать пост запрос от браузера и отдать дальше серверу.Это можно делать даже на уровне винсока ,неговоря уже про дрова сетевой карты.

Пояснил бы поподробне, описал бы немного, или дал ссылку на тему.
Неужели только регулярки служат защитой от пост ?

Спустя 23 минуты, 34 секунды (26.08.2011 - 21:39) bodja написал(а):
Ну тут трудно сказать в двух словах,
просто прочитать кучу статей в инете на эту тематику,
я как то искал способ обхода браузера в мирных целях ,по ходу и обчитался smile.gif
Если лень читать ,просто возьмите за правило-
"Все что приходит - является попыткой взлома"
,не только гет и пост,но и куки,файлы ,изображения .
Регуляркой отфильтровать получается просто кошернее в некоторых случаях,а так можно и другими способами.

Спустя 7 минут, 55 секунд (26.08.2011 - 21:47) Игорь_Vasinsky написал(а):
а session_id() ??? - подделать слабо?

Спустя 1 час, 47 минут, 9 секунд (26.08.2011 - 23:34) sebastjan написал(а):
Конечно всё классно, но как то пока не пойму,
сессия стартанула, установлен сеанс сессии между юзером и сервером.
Эгземпляр сессии храниться на сервер.
Допустим ,кто то изловчился и пишет в запросе по пост в переменной каку, но как же он вклиниться в текущую сессию.
Игорь_Vasinsky
помогай моему мозгу rolleyes.gif

Спустя 3 часа, 42 минуты, 42 секунды (27.08.2011 - 03:17) bodja написал(а):
В чужую сессию не вклинишся ,пока не вклинишся в сетку.
А вот с свою можно.
Атака на сам сайт и угон пассов или сессии юзера немного разные цели smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.