[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Возникла проблема с контактной формой
anber
Пожалуйста, помогите найти причину. Ставлю форму которая отправляет данные методом post по типу: html?action=send
html'ки обрабатываются как php из-за такой строки в файле .htaccess:
PHP
AddType application/x-httpd-php .php .htm .html .


На одном хостинге всё прекрасно работает, письма уходят, на другом ноль эмоций, будто там и кода php нет, даже ошибок не показывает.
Я думаю, что у хостера что-то отключено, но не могу догадаться, а хостер пока молчит, и не факт, что они помогут...
Проверял работу php на обоих, везде работает phpinfo, а вот форма работает только у одного.
Поэтому решил обратиться к профессионалам, вы то уж точно знаете, что может так влиять wink.gif



Спустя 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 вроде так smile.gif
Или обрабатывать каждую переменную
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 вроде так smile.gif
Или обрабатывать каждую переменную
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 написал(а):
да smile.gif

Спустя 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)
да smile.gif

Ваш вариант тоже не помог sad.gif

Нашёл в файле .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;

Появилась реакция user posted image

Только в результате вышли все возможные ошибки, типа не введено имя, емэйл и т.п.

Спустя 5 минут, 23 секунды (10.09.2009 - 15:15) Gabriel написал(а):
PHP
if ($action == "send"){

ето кнопка?

Спустя 1 минута, 33 секунды (10.09.2009 - 15:17) Gradus написал(а):
Gabriel,это адрес отправки формы smile.gif
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,это адрес отправки формы smile.gif
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 написал(а):
ОМГ user posted image
Прочитайте про get и post

Спустя 7 минут, 12 секунд (10.09.2009 - 15:38) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 12:30)
ОМГ user posted image
Прочитайте про get и post

Толку не будет, я не программист, и у меня туго с восприятием этого... sad.gif

Спустя 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;

Спасибо за добрые слова wink.gif
Наконец-то заработало всё, спасибо за помощь, очень выручили wink.gif

Спустя 15 минут, 34 секунды (10.09.2009 - 16:37) Gradus написал(а):
А где вознагрождение ? biggrin.gif

Спустя 4 минуты, 4 секунды (10.09.2009 - 16:41) anber написал(а):
Цитата (Gradus @ 10.09.2009 - 13:37)
А где вознагрождение ? biggrin.gif

Без вопросов, вышлите кошелёк Вебмани по личке wink.gif
Быстрый ответ:

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