Помогите разобраться с PHP

12
totamon
На сайте с 12.05.2007
Offline
437
#11

RENT2016, ну проверьте 101 раз, posName из формы передается вернее должна передаваться...

добавьте перед if(empty($_POST['js'])){

print_r($_POST);

и проверьте все данные есть?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
RENT2016
На сайте с 31.01.2016
Offline
11
#12
totamon:
RENT2016
добавьте перед if(empty($_POST['js'])){
print_r($_POST);

Не сработало.

Данные есть. Вот HTML, если интересно:


<h1>Отправить сообщение</h1>
<method="post"><div class="input"><input type="text" id="posName" placeholder="Имя ..." /></div>
<div class="input"><input type="text" id="posEmail" placeholder="Электронный адрес ..." /></div>
<div class="input"><input type="text" id="posTell" placeholder="Телефон ..." /></div>
<div class="textField"><div class="textarea"><textarea id="posText" placeholder="Сообщение ..."><textarea></div>
<br><class="button " id="send"><span>Отправить</span></br>
LH
На сайте с 26.09.2013
Offline
89
#13

1) У вас начинается код с: if(empty($_POST['js']));

то есть вы спрашиваете: если в массиве $_POST['js'] пусто, то выполнить код..

В $_POST вам нужно передать данные из формы,

поэтому лучше использовать if(isset($_POST['js']));

2) Уберите проверку email и просто поставьте required;

3) Используйте $error как массив, а не переопределяйте переменную.

P.S В форме у вас нету action, проверьте, весь код на одной странице или нет.

MI
На сайте с 16.07.2008
Offline
74
#14

В send.php надо дописать var_export($_POST); отправить форму и посмотреть что вернётся.

У google chrome по F12 есть инструменты для разработчиков, там на вкладке network будет результат send.php если эти инструменты открыты до отправки формы.

Если кликнуть в network на send.php и потом на вкладку response, то можно будет посмотреть что возвращает send.php в ответ на отправку формы.

---------- Добавлено 01.06.2016 в 19:56 ----------

Leonid H, отправка формы идёт по ajax.

RENT2016
На сайте с 31.01.2016
Offline
11
#15
metadon.info:
В send.php надо дописать var_export($_POST)

Письмо не отправлено. Ответ на вкладке network: "не получены данные".

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

KB
На сайте с 10.08.2006
Offline
164
KGB
#16
RENT2016:
Имя, мыло, телефон, текст.

Если правильно вас понял, эта строчка должна выглядеть так?

if(empty($_POST["posName", "posEmail", "posTell", "posText"])){

В это строке, если уж она есть, надо проверять наличие чего нибудь, но никак не отсутствие.

По сути строка звучит так - если переменная $_POST['js'] отсутствует или ей не присвоено значение, то выполняем нижеследующий код.

Как следствие наоборот, если из формы эта переменная передается, то код не выполняется и никаких проверок не производится.

А сам код, хоть и кривой, работает.

Только вот это нахрена в нем: sleep(2); ?Чтоб создать видимость глубокой умственной работы скрипта?

RENT2016
На сайте с 31.01.2016
Offline
11
#17

Придется, видимо, полностью переделывать.

Всем спасибо за помощь!

Malcolm
На сайте с 02.05.2007
Offline
119
#18

Попробуйте во всех htmlspecialchars явно указать кодировку, бывает из-за этого глюки.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий