[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: передача данных методом post
l@pteff
всем привет, в форме имеется поле для ввода пароля с id="password" и поле для подтверждения пароля с id="confirm_password". Соответствие полей проверяется след.скриптом:

if($_POST['password'] !== $_POST['confirm_password']) {
echo 'Пароли не совпадают';
}
else {echo 'Пароли совпадают';}

Выводится 'Пароли не совпадают' в любом случае. из-за чего это может быть?



Спустя 2 минуты, 48 секунд (13.03.2011 - 21:43) neadekvat написал(а):
Потому что id не передаются. Передаются name.
Вам бы html подучить, а уж потом в php.

Спустя 8 минут, 13 секунд (13.03.2011 - 21:51) l@pteff написал(а):
Цитата

Потому что id не передаются. Передаются name.
Вам бы html подучить, а уж потом в php.


name как и id имеют те же значения: "password" и "confirm_password"

Спустя 8 минут, 52 секунды (13.03.2011 - 22:00) neadekvat написал(а):
Тогда сделайте print_r($_POST) и покажите здесь.
И замените !== на !=, так, для успокоения совести.

Спустя 10 минут, 50 секунд (13.03.2011 - 22:11) l@pteff написал(а):
я изменил код на такой:
 
if($_POST['password'] != $_POST['confirm_password']) {
print_r($_POST);
}
else {echo 'Пароли совпадают';}


в оба поля вбил по 8 единиц. Выводится:

Цитата

Array ( [confirm_password] => 11111111 ) 

Спустя 11 минут, 55 секунд (13.03.2011 - 22:23) neadekvat написал(а):
А теперь посмотрите на свою форму. Вы уверены, что поля имеют разные имена? Быть может, все они называются confirm_password?

Спустя 9 минут, 34 секунды (13.03.2011 - 22:33) sergeiss написал(а):
Цитата (neadekvat @ 13.03.2011 - 23:23)
А теперь посмотрите на свою форму. Вы уверены, что поля имеют разные имена? Быть может, все они называются confirm_password?

Вопрос вполне логичный smile.gif
И даже более того, я предлагаю автору темы показать код формы. Возможно, у него там просто какой-то косяк.

Спустя 4 минуты, 23 секунды (13.03.2011 - 22:37) neadekvat написал(а):
Цитата (sergeiss @ 13.03.2011 - 19:33)
И даже более того, я предлагаю автору темы показать код формы. Возможно, у него там просто какой-то косяк.

Ну, вот.. Теперь есть большой шанс, что автор, вместо того, чтобы посмотреть самому, тупо скинет нам.

Спустя 7 минут (13.03.2011 - 22:44) l@pteff написал(а):
Полностью эти два поля выглядят вот так:


<label>Пароль</label>
<input
name="password" id="password" type="text" value="Введите пароль" size="36" class="required" title="Пожалуйста, введите Ваш пароль" onKeyDown="this.type='password'" onBlur="if(this.value == '') { this.value='Введите пароль'; this.type='text';}" >
<label>
Повторите пароль</label>
<input
name="confirm_password" id="confirm_password" type="text" value="Повторите пароль" id="confirm_password" size="36" class="required" title="Пожалуйста, повторите Ваш пароль" onKeyDown="this.type='password'" onBlur="if(this.value == '') {this.value='Повторите пароль'; this.type='text'; }" >


Спустя 3 минуты, 24 секунды (13.03.2011 - 22:47) neadekvat написал(а):
Чтд.

Спустя 44 секунды (13.03.2011 - 22:48) imbalance_hero написал(а):
l@pteff
Давай код обоих страниц сюда. И страницы HTML, и страницы обработчика. Сейчас заругаем тебя, но ошибку найдем!
Зачем одно и то же писать дважды? У тебя id дважды написано

Спустя 21 минута, 32 секунды (13.03.2011 - 23:10) l@pteff написал(а):
хорошо, вот этот html-фрагмент формы:


<label>Пароль</label>
<input
name="password" id="password" type="text" value="Введите пароль" size="36" class="required" title="Пожалуйста, введите Ваш пароль" onKeyDown="this.type='password'" onBlur="if(this.value == '') { this.value='Введите пароль'; this.type='text';}" >
<label>
Повторите пароль</label>
<input
name="confirm_password" id="confirm_password" type="text" value="Повторите пароль" size="36" class="required" title="Пожалуйста, повторите Ваш пароль" onKeyDown="this.type='password'" onBlur="if(this.value == '') {this.value='Повторите пароль'; this.type='text'; }" >

<span
id="mes_confirm" class="message"> </span> <!--span для вывода сообщения о соответствии полей-->


Небольшой кусок JS к форме:


$('#confirm_password').blur(function(){
var znach_cpassw=$('#confirm_password').val();
$.post('../php/conf_passw.php', {confirm_password:znach_cpassw}, function(data){
if (data.length>0){
$('#mes_confirm').html(data).css('color', 'red').fadeIn();
}
}
)
});

$('#confirm_password').focus(function(){
$('#mes_confirm').fadeOut();
});


Ну и собственно обработчик conf_passw.php:


if($_POST['password'] != $_POST['confirm_password']) {
echo 'Пароли не совпадают';
}
else {echo 'Пароли совпадают';}

Спустя 3 минуты, 7 секунд (13.03.2011 - 23:13) neadekvat написал(а):
Мне вот что интересно. Если ж имена у полей разные, то как при принт_р получился такой результат:
Array ( [confirm_password] => 11111111 ) 

Спустя 16 минут, 23 секунды (13.03.2011 - 23:29) Trianon написал(а):
AJAXом уходит поле всего одно. {confirm_password:znach_cpassw},

Смысл сравнивать на серверной стороне?

Спустя 1 минута, 52 секунды (13.03.2011 - 23:31) imbalance_hero написал(а):
l@pteff
form.submit(); , это пояснение, как надо, а вообще сделай нормально через кнопку сабмита, без JS извратов.

Спустя 2 минуты, 23 секунды (13.03.2011 - 23:33) neadekvat написал(а):
Тю.. я и не заметил аякса..

Спустя 13 минут, 24 секунды (13.03.2011 - 23:47) l@pteff написал(а):
Trianon, отправил аяксом оба поля и действительно проверка теперь проходит верно.


$('#confirm_password').blur(function(){
var znach_passw=$('#password').val();
var znach_cpassw=$('#confirm_password').val();
$.post('../php/conf_passw.php', {password:znach_passw, confirm_password:znach_cpassw}, function(data){
if (data.length>0){
$('#mes_confirm').html(data).css('color', 'red').fadeIn();
}
}
)
});

огромное спасибо всем за помощь!


Спустя 1 час, 4 минуты, 18 секунд (14.03.2011 - 00:51) Trianon написал(а):
Если уж Вы диалог аутентификации AJAXом устроили, то передавали бы не открытые пароли, а отклик по CRAM (challenge-response authentication method) технологии. Хоть какое-то оправдание, да и безопасность пожестче.
Быстрый ответ:

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