Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Обработчик формы и форма в разных местах
Форумы портала PHP.SU » » Вопросы новичков » Обработчик формы и форма в разных местах

Страниц (1): [1]
 

1. Olegarh1a - 12 Февраля, 2021 - 12:16:07 - перейти к сообщению
Есть сама форма которая лежит в корне index.php и есть обработчик который лежит в папке ./php/proccesSignup.php
Если при успешной регистрации перенаправляем пользователя на главную страницу это есть.
Но как сделать вывод
Спойлер (Отобразить)
ошибок допустим напротив полей в файле index.php без ajax.
2. dcc0 - 12 Февраля, 2021 - 13:50:49 - перейти к сообщению
Доброго!
Суть вопроса до конца не уловил.
Есть как минимум два варианта перенаправления:
1) Через поле form, атрибут action - встроенное средство html
2) Перенаправление с помощью html/js/php по условию.

Т.е.:
1) Пользователь заполнил форму и нажал кнопку "отправить".
2) Скрипт на этой же странице обработал данные из формы.
Обработчик можно подключить через include.
3) Далее условие:
а) Если с формой всё в порядке, перенаправление на главную.
б) Если нет, то остаёмся на текущей странице и показываем сообщение.
3. Olegarh1a - 12 Февраля, 2021 - 14:52:30 - перейти к сообщению
dcc0 пишет:
Доброго!
Суть вопроса до конца не уловил.
Есть как минимум два варианта перенаправления:
1) Через поле form, атрибут action - встроенное средство html
2) Перенаправление с помощью html/js/php по условию.

Т.е.:
1) Пользователь заполнил форму и нажал кнопку "отправить".
2) Скрипт на этой же странице обработал данные из формы.
Обработчик можно подключить через include.
3) Далее условие:
а) Если с формой всё в порядке, перенаправление на главную.
б) Если нет, то остаёмся на текущей странице и показываем сообщение.


Ещё не могу сформулировать правильно вопрос попробую рассказать по действиям
И так Форма лежит в корне, а обработчик в папке
Пользователь переходит на форму регистрации ->
Заполняет поля:
Логин:
пароль:
email:
если всё правильно ввёл его перенаправляет на форму с авторизацией -> это я сделал
НО (сорри за капс)
если он не правильно заполняет поле допустим логин и нажимает регистрация
ему выводится ошибка
ошибка выводится по адрессу mysite.loc/php/proccesSignup.php
а мне надо что бы ошибка выводилась в самой форме mysite.loc/index.php
4. dcc0 - 12 Февраля, 2021 - 17:41:08 - перейти к сообщению
Иногда трудно понять уровень знаний.
1) Проверку формы можно сделать на JavaScript: до отправки формы проверять её и выводить сообщение.

2) Можно сделать возврат обратно на страницу с формой после проверки её скриптом /proccesSignup.php и вывести сообщение об ошибке уже здесь.

3) Можно подключать файл /proccesSignup.php через include по условию на странице с
формой и никуда не переходить. Всё будет происходить на одной странице.

4) Можно сделать проверку и переход на php и JS или html.

Пример. Это страница с формой. Здесь проверяем поля:

Спойлер (Отобразить)


В form не прописан атрибут action, переход произойдёт по условию выше
Спойлер (Отобразить)





P.S. Может быть, лучше показать, как сделано?!



(Добавление)
Второй вариант с возвратом.

Это файл index.php

Спойлер (Отобразить)

Спойлер (Отобразить)


Заполняем форму и уходим на страницу ./php/proccesSignup.php
Страница ./php/proccesSignup.php
Спойлер (Отобразить)


Для наглядности: http://comb[dot]org[dot]ru/test/index.php
5. Olegarh1a - 12 Февраля, 2021 - 21:07:48 - перейти к сообщению
dcc0 пишет:
Иногда трудно понять уровень знаний.
1) Проверку формы можно сделать на JavaScript: до отправки формы проверять её и выводить сообщение.

2) Можно сделать возврат обратно на страницу с формой после проверки её скриптом /proccesSignup.php и вывести сообщение об ошибке уже здесь.

3) Можно подключать файл /proccesSignup.php через include по условию на странице с
формой и никуда не переходить. Всё будет происходить на одной странице.

4) Можно сделать проверку и переход на php и JS или html.

Пример. Это страница с формой. Здесь проверяем поля:

Спойлер (Отобразить)


В form не прописан атрибут action, переход произойдёт по условию выше
Спойлер (Отобразить)





P.S. Может быть, лучше показать, как сделано?!



(Добавление)
Второй вариант с возвратом.

Это файл index.php

Спойлер (Отобразить)

Спойлер (Отобразить)


Заполняем форму и уходим на страницу ./php/proccesSignup.php
Страница ./php/proccesSignup.php
Спойлер (Отобразить)


Для наглядности: http://comb[dot]org[dot]ru/test/index.php
Я всунул обработчик там где и форма.

И вопрос ещё 1 как функцией htmlspecialchars обрабатывать данные c массива $data = $_POST
а то я был приятно удивлён когда в форме входа ввёл
PHP:
скопировать код в буфер обмена
  1. <body style="display:none;"</body>
6. dcc0 - 12 Февраля, 2021 - 21:24:10 - перейти к сообщению
Может быть, strip_tags?
7. Olegarh1a - 12 Февраля, 2021 - 21:31:37 - перейти к сообщению
[quote=dcc0][/quote]

сколько людей столько мнений мне уже посоветовали htmlentities
но всё же как обработать массив с данными ?
8. dcc0 - 12 Февраля, 2021 - 22:03:12 - перейти к сообщению
И так тоже возможно. Можно использовать также preg_match для проверки логина и пароля при регистрации.
9. Olegarh1a - 12 Февраля, 2021 - 22:11:12 - перейти к сообщению
dcc0 пишет:
И так тоже возможно. Можно использовать также preg_match для проверки логина и пароля при регистрации.


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once __DIR__. './../include/db.php';
  3.  
  4. $data = $_POST;
  5.     if(isset($data['signin'])) {
  6.         $errors = array();
  7.         $users = R::findOne('users', 'login = ?', array($data['login'])); //Создаём users ищем в таблице users столбец login, который введёт поьзователь с массива data[login]
  8.        
  9.             if( $users > 0 )
  10.             {
  11.                 if(password_verify($data['password'], $users->password))
  12.                 {
  13.                     echo 'Вы зашли'; //
  14.                 }else
  15.                 {
  16.                     $errors[] = 'Не верно введён пароль';
  17.                 }
  18.             }else
  19.             {
  20.                 $errors[] = 'Пользователь с таким ником не найден ';
  21.             }
  22.         if(!empty($errors))
  23.         {
  24.             echo '<div>'.array_shift($errors). '</div>';
  25.         }
  26.     }


Как экранировать теги наэтом примере при помощи htmlentities
10. dcc0 - 12 Февраля, 2021 - 23:20:51 - перейти к сообщению
http://forum.php.su/topic.php?fo...1&topic=4120

Здесь же на форуме.
Вероятно, как-то так:

Спойлер (Отобразить)

Это где-то в самом начале должно быть.

Может быть, даже, как в этом примере, внизу, циклом:
https://stackoverflow[dot]com/questi[dot][dot][dot]htmlspecialchars



P.S.
Я только подзабыл: нужно ли переопределять $_POST и $_GET или лучше прямо с ними работать для регистрации и авторизации?!
11. Olegarh1a - 12 Февраля, 2021 - 23:34:30 - перейти к сообщению
dcc0 пишет:
http://forum.php.su/topic.php?fo...1&topic=4120

Здесь же на форуме.
Вероятно, как-то так:

Спойлер (Отобразить)

Это где-то в самом начале должно быть.

Может быть, даже, как в этом примере, внизу, циклом:
https://stackoverflow[dot]com/questi[dot][dot][dot]htmlspecialchars



P.S.
Я только подзабыл: нужно ли переопределять $_POST и $_GET или лучше прямо с ними работать для регистрации и авторизации?!


Вот оно как теперь всё стало на свои места. я $data полностью переписывал(тупоголовый)
спасибо.
А ведь я сам ответил на свой вопрос когда задал его Радость
у меня на этом сайте не работает переадресация в поиске ввожу пишет
Обработка запроса выполнена.
Найдено тем: 488
Ожидайте результаты.
и перенаправление не работает
12. dcc0 - 12 Февраля, 2021 - 23:53:49 - перейти к сообщению
Только у меня в примере GET, а надо POST. У себя тестировал. Поправил выше.

У меня как-то вот сработало:
Спойлер (Отобразить)

По отдельности не работает Недовольство, огорчение

 

Powered by ExBB FM 1.0 RC1