[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите новичку поправить простенький скрип PHP
Rain
Здравствуйте!
С программированием в php никогда не сталкивался, поэтому решил прибегнуть к советам бывалых. Дело в том, что у меня есть простенькая форма обратнойсвязи, которая успешно финкционировала на сайте моего знакомого. Сейчас мне необходимо использовать ее. Форма мне нравится тем, что удобно добавлять необходимое колличество полей. Но при отправке сообщения, вместо того, чтобы перейти на одну из предусмотренных страниц $fOk или $fBad, меня перекидывает на главную. Думаю, что может, когда я открывал PHP файл, я нечаянно что-то напартачил. Помогите поправить код, если в нем что-то не так или может для .phtml файлов необходимо установить какой-то особенный chmod? sad.gif

КОД PHP
PHP
<?php
$fText
="$fTitle\n\n";
for (
$i=1;$i<=$fCount;$i++) {$fText.=$fName[$i].": ".$fData[$i]."\n";}
$fText.="\n\n";
$fText.=date("l dS of F Y h:i:s A");
if (
mail($fMail,$fSubject,$fText)) {Header("Location: $fOk");}
else {
Header("Location: $fBad");}
exit;


НА САЙТ ИНТЕГРИРУЮ ТАК:
HTML
<form method="post" action="order.phtml">

Ваше имя: <br><input type="hidden" name="fName[1]" value="Ваше имя">
<input type="text" name="fData[1]" style="WIDTH: 270px">

<br>Ваш e-mail: <br><input type="hidden" name="fName[2]" value="Ваш e-mail">
<input type="text" name="fData[2]" style="WIDTH: 270px">
<br>

<input type="hidden" name="fMail" value="mail@mail.ru"> - адрес электронной почты куда будет приходить
<input type="hidden" name="fTitle" value="ХХХХХХХХХХХХ"> - название в теме письма которое придет на почту (без пробелов)
<input type="hidden" name="fSubject" value="хххххххххх"> - то что будет написано в самом письме (без пробелов)
<input type="hidden" name="fCount" value="2"> - указывается количество полей, сейчас 2 поля наверху, если добавлять поля, то нужно изменять name="fName[3]", name="fName[4]" и т.д.
<input type="hidden" name="fOk" value="order_ok.htm"> - страница куда переходит пользователь после нажатия кнопки отправить
<input type="hidden" name="fBad" value="contact_bad.htm"> - страница куда идет пользователь если ошибка произошла

<br><br>
<input type="submit" value="Отправить заказ"><br>
</form>




Спустя 1 час, 10 минут, 12 секунд (4.07.2009 - 10:06) Krevedko написал(а):
HTML
<form method="post" action="order.phtml">

Насколько я вообще знаю вот тут как раз пишется, куда перейдет пользователь, после нажатия на кнопку Отправить. Перейти он должен на order.phtml.

Спустя 50 минут, 2 секунды (4.07.2009 - 10:56) twin написал(а):
Krevedko
Внял моему совету smile.gif Молодец.
Rain
Эту форму нужно выкинуть и написать новую. Даже комментировать лениво, потому что это такое старье, что не стоит тратить время. Причем огромнейшие ворота для спамеров, которые могут, воспользовавшись ей, не только делать свои черные спам-дела, но и реально положить сервер.
Забудь про неё, воспользуйся поиском на форуме. Найди что нибудь поприличнеё и попробуй подстроить под себя.
А когда не получится, милости просим с вопросами.
Можешь отсюда начать.

Спустя 1 час, 53 минуты, 36 секунд (4.07.2009 - 12:50) FatCat написал(а):
Цитата (Rain @ 4.07.2009 - 09:56)
<input type="hidden" name="fMail" value="mail@mail.ru">
Цитата (Rain @ 4.07.2009 - 09:56)
if (mail($fMail,$fSubject,$fText)) {Header("Location: $fOk");}

[Доставая из под стола упавшую челюсть]:
это даже не дыра в безопасности, а широко распахнутые ворота с предложением воспользоваться Вашим хостом для рассылки миллионов спам-писем на мейлы...


А кидает на главную потому, что переменные не определены.
PHP
Header("Location: $fBad");
отрабатывает как
PHP
Header("Location: ");


Вместо $fBad используйте $_POST['fBad'], и аналогично со всеми прочими переменными.

Спустя 1 час, 46 минут, 31 секунда (4.07.2009 - 14:37) Rain написал(а):
Большое спасибо всем за ответы. smile.gif Жаль, что этот скрипт так плох в отношении безопасности. Я далек от программирования php. unsure.gif Буду рад и материально признателен, если кто-нибудь напишет нужный мне скрипт. Думаю, что у разбирающегося человека это не займет много времени.

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

Специалисты, выручайте...

Спустя 4 часа, 6 минут, 8 секунд (4.07.2009 - 18:43) Rain написал(а):
Тема уже не актуальна. Большое спасибо twin за помощь в решении моей проблемы. wink.gif

Спустя 2 часа, 52 минуты, 28 секунд (4.07.2009 - 21:35) FatCat написал(а):
Я ради любопытства напишу свою заплатку к этому коду.

Цитата (Rain @ 4.07.2009 - 09:56)
<input type="hidden" name="fMail" value="mail@mail.ru"> - адрес электронной почты куда будет приходить

Эту строку удалить.

Цитата (Rain @ 4.07.2009 - 09:56)
$fText="$fTitle\n\n";
for ($i=1;$i<=$fCount;$i++) {$fText.=$fName[$i].": ".$fData[$i]."\n";}
$fText.="\n\n";
$fText.=date("l dS of F Y h:i:s A");
if (mail($fMail,$fSubject,$fText)) {Header("Location: $fOk");}
else {Header("Location: $fBad");}

Этот код заменить на:
PHP
$fMail = "user@mail.ru";
$fText=$_POST['$fTitle']."\n\n";
for ($i=1;$i<=intval($_POST['fCount']);$i++) {$fText.=$_POST["fName[$i]"].": ".$_POST["fData[$i]"]."\n";}
$fText.="\n\n";
$fText.=date("l dS of F Y h:i:s A");
if (mail($fMail,$_POST['fSubject'],$fText)) {Header("Location: ".$_POST['fOk']);}
else {Header("Location: ".$_POST['fBad']);}

Спустя 22 часа, 52 минуты, 37 секунд (5.07.2009 - 20:28) Guest написал(а):
[move]
Быстрый ответ:

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