Пожалуйста, помогите найти причину. Ставлю форму которая отправляет данные методом post по типу: html?action=send
html'ки обрабатываются как php из-за такой строки в файле .htaccess:
На одном хостинге всё прекрасно
работает, письма уходят, на другом ноль эмоций, будто там и кода
php нет, даже ошибок не показывает.
Я думаю, что у хостера что-то отключено, но не могу догадаться, а хостер пока молчит, и не факт, что они помогут...
Проверял работу
php на обоих, везде
работает phpinfo, а вот форма
работает только у одного.
Поэтому решил обратиться к профессионалам, вы то уж точно знаете, что может так влиять
Спустя 1 час, 20 минут, 4 секунды (10.09.2009 - 13:59) Gradus написал(а):
Регистр глобал посмотрите
Спустя 59 секунд (10.09.2009 - 14:00) sergeiss написал(а):
Для начала форму - сюда. Посмотрим, подумаем.
Спустя 9 минут, 17 секунд (10.09.2009 - 14:09) anber написал(а):
Цитата (sergeiss @ 10.09.2009 - 11:00) |
Для начала форму - сюда. Посмотрим, подумаем. |
Код файлов ниже:
PHP |
Файл с формой:
<form method="post" action="page1.html?action=send"> тут поля для заполнения </form>
Файл с кодом обработки формы:
<?php
if ($action == "send"){ if ($name == NULL){ $errors[] = "Не введено имя"; } if ($email == NULL){ $errors[] = "Не введён e-mail"; } else { if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email)) { $errors[] = "Некорректный e-mail"; } } if ($text == NULL){ $errors[] = "Не введён текст сообщения"; } if ($errors == NULL){ $content = "Имя:" . $name . "\nТекст:\n" . $text; if (mail("адресат получения", ('тема письма'), htmlspecialchars($content), "From: " . $email . " <" . $email . ">\nReply-To: <" . $email . ">\nContent-Type: text/plain; charset=\"windows-1251\"\nContent-Transfer-Encoding: 8bit")) {
?> <br> Отправлено. <?
} else { ?> Ошибка отправки. <?php } } else { ?> Ошибки -
<ul>
<?php
for ($i = 0; $i < count($errors); $i++){ echo "<li>" . $errors[$i] . "</li>"; }
?> </ul> <br>
<?php } }
|
Спустя 1 минута, 18 секунд (10.09.2009 - 14:11) Gradus написал(а):
Ну а чём тут говорить 90% моим первым постом всё сказано
Спустя 2 минуты, 31 секунда (10.09.2009 - 14:13) Gabriel написал(а):
Цитата |
HTML | <form method="post" action="page1.html?action=send"> |
|
в действии нужно писать документ обработчик если я не ошибаюсь
a если он сам себя обрабатывает то можно вообше написать
PHP |
<?php $_SERVER['PHP_SELF'] |
Спустя 1 минута, 7 секунд (10.09.2009 - 14:14) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 11:11) |
Ну а чём тут говорить 90% моим первым постом всё сказано |
Я в программировании новичок, поэтому прошу, объясните, пожалуйста, что с глобалсом сделать нужно, чтобы форма заработала, или что в форме изменить, чтобы глобалс не трогать?
Спустя 1 минута, 43 секунды (10.09.2009 - 14:16) anber написал(а):
Цитата (Gabriel @ 10.09.2009 - 11:13) |
Цитата | HTML | <form method="post" action="page1.html?action=send"> |
|
в действии нужно писать документ обработчик если я не ошибаюсь a если он сам себя обрабатывает то можно вообше написать
PHP | <?php $_SERVER['PHP_SELF'] |
|
Там два файла, один с формой, например, page.html, и он уже отправляет на page1.html, в которой сам скрипт обработки формы.
Спустя 8 минут, 41 секунда (10.09.2009 - 14:25) Gradus написал(а):
Цитата (anber @ 10.09.2009 - 11:14) |
Я в программировании новичок, поэтому прошу, объясните, пожалуйста, что с глобалсом сделать нужно, чтобы форма заработала, или что в форме изменить, чтобы глобалс не трогать? |
Либо в
php.ini поставить register_global=on вроде так
Или обрабатывать каждую переменную
PHP |
if(isset($_POST['var'])) $var=$_POST['var']; |
Спустя 16 минут, 31 секунда (10.09.2009 - 14:41) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 11:25) |
Цитата (anber @ 10.09.2009 - 11:14) | Я в программировании новичок, поэтому прошу, объясните, пожалуйста, что с глобалсом сделать нужно, чтобы форма заработала, или что в форме изменить, чтобы глобалс не трогать? |
Либо в php.ini поставить register_global=on вроде так Или обрабатывать каждую переменную PHP | if(isset($_POST['var'])) $var=$_POST['var']; |
|
Поставить врядли дадут, я слышал, что его вообще везде начали отключать...
Объясните, пожалуйста, про второй вариант. В моём случае переменные это всё, что со знаком доллара перед собой, например - $name
И чтобы обработать каждую мне нужно для каждой создать строку типа:
PHP |
if(isset($_POST['name'])) $name=$_POST['name']; |
?
И поставить в начале кода на странице обработки формы, т.е. на page1.html?
Спустя 8 минут, 48 секунд (10.09.2009 - 14:50) Gradus написал(а):
да
Спустя 28 секунд (10.09.2009 - 14:51) Gabriel написал(а):
1.нашет переменных попробуй вставить в начале кода так для каждой твоей переменной
PHP |
$name = isset($_POST['name'])?$_POST['name']:null; |
2. да попробуй
Спустя 8 минут, 51 секунда (10.09.2009 - 14:59) anber написал(а):
Поставил так в начале кода, но ничего не изменилось:
PHP |
$action = isset($_POST['action'])?$_POST['action']:null; $name = isset($_POST['name'])?$_POST['name']:null; $errors = isset($_POST['errors'])?$_POST['errors']:null; $email = isset($_POST['email'])?$_POST['email']:null; $text = isset($_POST['text'])?$_POST['text']:null; $content = isset($_POST['content'])?$_POST['content']:null; |
Спустя 2 минуты, 55 секунд (10.09.2009 - 15:02) Gradus написал(а):
PHP |
$action = isset($_GET['action'])?$_GET['action']:null; |
Спустя 4 минуты, 13 секунд (10.09.2009 - 15:07) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 11:50) |
да |
Ваш вариант тоже не помог
Нашёл в файле .htaccess такие строки:
PHP |
AddType application/x-httpd-php .php .htm .html .phtml IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST> order deny,allow deny from all allow from all </Limit> <Limit PUT DELETE> order deny,allow deny from all </Limit> |
Удалял, всё, что ниже третьей, но не помогает... Может быть дело во второй строке?
Спустя 3 минуты, 10 секунд (10.09.2009 - 15:10) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 12:02) |
PHP | $action = isset($_GET['action'])?$_GET['action']:null; |
|
Появилась реакция
Только в результате вышли все возможные ошибки, типа не введено имя, емэйл и т.п.
Спустя 5 минут, 23 секунды (10.09.2009 - 15:15) Gabriel написал(а):
PHP |
if ($action == "send"){ |
ето кнопка?
Спустя 1 минута, 33 секунды (10.09.2009 - 15:17) Gradus написал(а):
Gabriel,это адрес отправки формы
page1.html?action=send
anber, а вы остальные переменные обработали ?
Спустя 1 минута, 13 секунд (10.09.2009 - 15:18) anber написал(а):
Цитата (Gabriel @ 10.09.2009 - 12:15) |
PHP | if ($action == "send"){ |
ето кнопка?
|
Кнопка выглядит так:
HTML |
<input type=submit value="Отправить"> |
send только в начале формы, в адресе:
PHP |
<form method="post" action="page1.html?action=send"> |
Спустя 2 минуты, 30 секунд (10.09.2009 - 15:20) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 12:17) |
Gabriel,это адрес отправки формы page1.html?action=send
anber, а вы остальные переменные обработали ? |
Вроде да, сделал так:
PHP |
$action = isset($_GET['action'])?$_GET['action']:null; $name = isset($_GET['name'])?$_GET['name']:null; $errors = isset($_GET['errors'])?$_GET['errors']:null; $email = isset($_GET['email'])?$_GET['email']:null; $text = isset($_GET['text'])?$_GET['text']:null; $content = isset($_GET['content'])?$_GET['content']:null; |
Спустя 10 минут, 7 секунд (10.09.2009 - 15:30) Gradus написал(а):
ОМГ
Прочитайте про get и post
Спустя 7 минут, 12 секунд (10.09.2009 - 15:38) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 12:30) |
ОМГ Прочитайте про get и post |
Толку не будет, я не программист, и у меня туго с восприятием этого...
Спустя 7 минут, 30 секунд (10.09.2009 - 15:45) anber написал(а):
Может быть кто поможет за вознаграждение починить форму или сделать новую, не зависящую от глобалсов, которая будет работать везде? Нужно быстро как-то решить этот вопрос.
Спустя 9 минут, 9 секунд (10.09.2009 - 15:54) Gradus написал(а):
Если вы сами всё это писали то толк будет.
У вас переменная action только передаёться методом get остальное post
Вот и пишем :
PHP |
$action = isset($_GET['action'])?$_GET['action']:null; $name = isset($_POST['name'])?$_POST['name']:null; $errors = isset($_POST['errors'])?$_POST['errors']:null; $email = isset($_POST['email'])?$_POST['email']:null; $text = isset($_POST['text'])?$_POST['text']:null; $content = isset($_POST['content'])?$_POST['content']:null; |
Спустя 27 минут, 20 секунд (10.09.2009 - 16:22) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 12:54) |
Если вы сами всё это писали то толк будет. У вас переменная action только передаёться методом get остальное post Вот и пишем :
PHP | $action = isset($_GET['action'])?$_GET['action']:null; $name = isset($_POST['name'])?$_POST['name']:null; $errors = isset($_POST['errors'])?$_POST['errors']:null; $email = isset($_POST['email'])?$_POST['email']:null; $text = isset($_POST['text'])?$_POST['text']:null; $content = isset($_POST['content'])?$_POST['content']:null; |
|
Спасибо за добрые слова
Наконец-то заработало всё, спасибо за помощь, очень выручили
Спустя 15 минут, 34 секунды (10.09.2009 - 16:37) Gradus написал(а):
А где вознагрождение ?
Спустя 4 минуты, 4 секунды (10.09.2009 - 16:41) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 13:37) |
А где вознагрождение ? |
Без вопросов, вышлите кошелёк Вебмани по личке