Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/32: Рейтинг темы: голосов - 32, средняя оценка - 4.81
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
1

Обработка формы и возврат из обработчика. submitHandler

15.03.2015, 11:11. Показов 6699. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, как правильно обработать форму в обработчике handler_reg.php и принять результат обработки в скрипте js ?
HTML5
1
2
3
4
5
6
7
8
9
10
11
<form action="/reg/handler_reg.php" id="form_reg" method="post">
<p class="reg_message"></p>
<div class="block-form-reg">
<ul>
<li><label for="reg_login">Логин</label><span>*</span><input type="text" id="reg_login" name="reg_login"/></li>
                <li>
                    <label for="reg_pass">Пароль</label><span>*</span>
                    <input type="password" id="reg_pass" name="reg_pass"/><span class="genpass">Сгенерировать</span>
                </li>
...
<li><input type="submit" id="reg_submit" name="reg_submit" value="Регистрация"/></li>
handler_reg.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
include("../include/db_connect.php");
...
$login = strtolower(clear_string($_POST["reg_login"]));
$pass = strtolower(clear_string($_POST["reg_pass"]));
...
$error = array();
if(strlen($login) < 5 or strlen($login) > 15) {
    $error[] = "Логин должен быть от 5 до 15 символов!";
}
else {
    $result = mysql_query("SELECT login FROM reg_user WHERE login = '$login'", $link);
    if (mysql_num_rows($result) > 0) {
        $error[] = "Логин занят!";
    }
}
if(strlen($pass) < 7 or strlen($pass) > 15) { $error[] = "Укажите пароль от 7 до 15 символов!"; }
if(count($error)){
    echo implode("<br />", $error);
} else {
mysql_query("INSERT INTO reg_user(login,pass)
                VALUES(
                       '".$login."',
                       '".$pass."'
                    )", $link);
    echo 'true';            ///// Здесь должен быть выход из обработчика в скрипт js! Как это сделать?
}
script.js
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$("#form_reg").validate(
{
    rules:{
        "reg_login":{
            required: true,
            minlength:5,
            maxlength:15,
 
        },
        "reg_pass":{
            required: true,
            minlength:7,
            maxlength:15
        }
    },  /*rules*/
    messages:{
        "reg_login":{
            required: "Укажите логин!",
            minlength:"От 5 до 15 символов!",
            maxlength:"От 5 до 15 символов!",
            remote:"Логин занят!"
        },
        "reg_pass":{
            required: "Укажите пароль!",
            minlength:"От 7 до 15 символов!",
            maxlength:"От 7 до 15 символов!"
        }
    },
    submitHandler: function(form){    ////////////////////////////   submitHandler    /////////////////////////////////////
    $(form).ajaxSubmit({
        success: function(data){
            if(data == "true"){        //в обработчике echo 'true', но возврата не происходит!
                $(".block-form-reg").fadeOut(300, function(){
                    $("#reg_submit").hide();
                    $(".reg_message").addClass("reg_mess_good").fadeIn(400).html("Вы успешно зарегистрированы!");
                })
            }
            else {
                $(".reg_message").addClass("reg_mess_error").fadeIn(400).html(data);
            }
        }
    });
}
}
);
Обработчик handler_reg.php выводит true на пустом экране после обработки, но возврата на страницу регистрации не происходит!
Как сделать возврат на страницу регистрации?

Добавлено через 7 часов 42 минуты
Подскажите, что я неправильно делаю?
Или посоветуйте пожалуйста, может нужно как-то по другому обрабатывать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2015, 11:11
Ответы с готовыми решениями:

Возврат из обработчика прерывания.
Продублирую вопрос сюда, ибо в &quot;Мелких вопросах&quot; висит он неприкаянно: Как осуществить возврат...

Возврат из обработчика прерываний в основную программу
Приветствую, уважаемые форумчане! Продолжаю &quot;грызть&quot; Финогенова, добрался, наконец, до прерываний,...

Разделение обработчика и формы
Доброй ночи уважаемые форумчане, потихоньку учу php и сегодня решил разделить обработчик и форму на...

Создание формы и обработчика
Не отображается информация,введенная в форму..помогите исправить ошибку код формы &lt;html&gt; &lt;head&gt;...

11
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
15.03.2015, 12:16 2
В консоли браузера показываются какие-нибудь ошибки?

И где сам редирект?
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
15.03.2015, 12:32  [ТС] 3
Цитата Сообщение от Jodah Посмотреть сообщение
В консоли браузера показываются какие-нибудь ошибки?
нет ошибок
Цитата Сообщение от Jodah Посмотреть сообщение
И где сам редирект?
я начинающий, поэтому возможно где-то что-то не указал в коде из-за отсутствия опыта.
Что за редирект и где он должен быть?
Подскажите пожалуйста, очень хочется разобраться в обработке формы.
Из своего кода я выделил и привёл здесь самое основное, без всяких сессий, и полей input для адреса и почты.
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
15.03.2015, 13:44 4
phpk,
Цитата Сообщение от phpk Посмотреть сообщение
но возврата на страницу регистрации не происходит!
Куда должен происходить возврат и как вы пытаетесь его реализовать?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
15.03.2015, 16:10 5
Цитата Сообщение от phpk Посмотреть сообщение
Подскажите пожалуйста, как правильно обработать форму в обработчике handler_reg.php и принять результат обработки в скрипте js ?
JS будет проверять до отправки в handler_reg.php его надо подключить на страницу с формой, если прошли проверки то тогда уже переход в handler_reg.php. В handler_reg.php
Цитата Сообщение от phpk Посмотреть сообщение
echo 'true'; * * * * * *///// Здесь должен быть выход из обработчика в скрипт js! Как это сделать?
}
тут добавить строку
PHP
1
header('location:index.php');
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
15.03.2015, 18:44  [ТС] 6
Виталюска, скрипт подключен как и полагается в файле с формой!
тут добавить строку
PHP
1
header('location:index.php');,
на данный момент нет возможности проверить, проверю только вечером, но я так предполагаю, что это немного не то что надо.
Я так понимаю, что после этой команды (header) произойдет переход на страницу с формой без возврата результата обработки в массиве error.А мне нужно, чтобы результат обработки вернулся в скрипт с формой, который приведен в 1-м посте, чтобы на странице с формой скрипт вывел сообщение "Вы успешно зарегистрированы"
Javascript
1
2
3
4
5
6
7
8
9
submitHandler: function(form){ * *//////////////////////////// * submitHandler * */////////////////////////////////////
* * $(form).ajaxSubmit({
* * * * success: function(data){
* * * * * * if(data == "true"){ * * * *//в обработчике echo 'true', но возврата не происходит!
* * * * * * * * $(".block-form-reg").fadeOut(300, function(){
* * * * * * * * * * $("#reg_submit").hide();
* * * * * * * * * * $(".reg_message").addClass("reg_mess_good").fadeIn(400).html("Вы успешно зарегистрированы!");
* * * * * * * * })
* * * * * * }
Добавлено через 16 минут
Виталюска, скрипт подключен как и полагается в файле с формой!
и скрипт jquery.validate.js также подлючен в этом файле с формой!
Или может посоветуйте, как это реализовать более правильным путем, т.е. передача данных из обработчика handler_reg.php в скрипт с формой

Добавлено через 10 минут
или может правильней будет получать данные от обработчика handler_reg.php без использования $.validate(), срествами $.ajax
типа этого
Javascript
1
2
3
4
$("#myForm").submit(function() {
* * * * $.ajax({
* * * * * * type: "POST",
* * * * * * url:"name_files.php",
Добавлено через 2 минуты
просто хотелось разобраться, почему $.validate() не получает данные из обработчика
0
Эксперт PHP
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
15.03.2015, 19:00 7
Javascript
1
2
$("#myForm").submit(function(event) {
    event.preventDefault();
обязательно надо отключить системную отправку формы
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
15.03.2015, 20:37 8
Цитата Сообщение от phpk Посмотреть сообщение
просто хотелось разобраться, почему $.validate() не получает данные из обработчика
потому что вы их туда не передаете.
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
15.03.2015, 20:39  [ТС] 9
Цитата Сообщение от Виталюска Посмотреть сообщение
тут добавить строку
Ошибка
Warning: Cannot modify header information - headers already sent by...
Цитата Сообщение от Poznakomlus Посмотреть сообщение
обязательно надо отключить системную отправку формы
нет, не помогает!
Неужели это так сложно реализовать?!!

Добавлено через 21 секунду
Цитата Сообщение от Виталюска Посмотреть сообщение
потому что вы их туда не передаете.
а как передавать?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
15.03.2015, 20:42 10
Цитата Сообщение от phpk Посмотреть сообщение
Warning: Cannot modify header information - headers already sent by...
скорей всего до отправки заголовка есть вывод данных и файл должен быть в кодировке UTF8 без BOM

phpk, покажите куда вставили строку
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
15.03.2015, 22:06  [ТС] 11
я уже решил проблему. Просто с использованием $.ajax, без плагина $.validate()
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$("#form_reg").submit(function(event) {
        event.preventDefault(); // прерываем отправку формы
        var data = $('#form_reg').serialize();
        $.ajax({
            type: "POST",
            url:"/reg/handler_reg.php",
            data:data,
            error:function(){
                $(".reg_message").addClass("reg_mess_error").fadeIn(400).html(data);
            },
            beforeSend: function() {
                $(".reg_message").html('Загрузка...');
            },
            success: function(html){
                $(".block-form-reg").fadeOut(300);
                $(".reg_message").addClass("reg_mess_good").fadeIn(400).html("Вы успешно зарегистрированы!");
            }
        });
 
        return false;
    });


Добавлено через 36 секунд
может кому пригодится
1
0 / 0 / 0
Регистрация: 21.06.2015
Сообщений: 1
08.01.2016, 16:35 12
phpk, а куда ты вставил этот файл? отдельно или в registration.php? я тоже по Журу делаю, но у меня не получается..
0
08.01.2016, 16:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2016, 16:35
Помогаю со студенческими работами здесь

Обращение к элементу формы из обработчика
Есть обработчик для нескольких текстбоксов static public void FrequecyInput(object sender,...

Двойное выполнение обработчика формы
Привет всем. Помогите решить вопрос. Есть обработчик handler.php &lt;?php if ($_SERVER != 'POST')...

Получение ответа от обработчика формы
Доброго времени суток. Есть js $.ajax({ type: 'POST', url:...

Не работает код обработчика формы
пОЧЕМУ НЕ РАБОТАЕТ КОД?... форма &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;content-type&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru