[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оповещение о незаполненных полях при регистрации.
asdf
При регистрации новый пользователь заполняет личными данными поля формы. Как сделать чтобы перед отправкой переменных в "обработчик.php" производилась проверка заполнения полей "log" и "pas"? В том случае, если поля не заполнились, как сделать чтобы выводилось оповещение о пропущенных полях и лишь в том случае, если все заполнено, осуществляется отправка в "обработчик.php"?
HTML
<html>
<head>
</head>
<body>
<form action="обработчик.php" method="post" name="reg" target="_blank">
<table align="center">
<tr>
<td>Введите ваш логин:</td>
<td><input type="text" name="log" /></td>
</tr>
<tr>
<td>Введите ваш пароль:</td>
<td><input type="password" name="pas" /></td>
</tr>
</table>
<div align="center">
<input type="submit" name="but" value="Зарегистрироваться" />
</div>
</form>
</body>
</html>




Спустя 13 минут, 47 секунд (3.02.2009 - 23:27) twin написал(а):
Вообще то лучше это делать на сервере. Вернее необходимо. Так как JS может быть отключен, нечаяно или специально. Ну в крайнем случае - аякс с сессией. Как проверить на сервере, можете посмотреть здесь.

Спустя 9 часов, 59 минут, 53 секунды (4.02.2009 - 09:27) sergeiss написал(а):
"Предыдущий оратор" всё правильно сказал smile.gif Я только чуть подробнее поясню.

Лучше не в другой файл направлять данные, а в этот же (action=""). Тогда ты спокойно делаешь проверку наличия необходимых даннных тут же, на месте. Если есть всё - делаешь обработку. Если чего-то не хватает - пишешь сообщение об этом, а то, что заполнено, выводишь юзеру. Чтобы ему не пришлось вводить заново всё полностью, а только то, что он не ввёл.
Например, так
PHP
<input type="text" name="log" <?php if( isset($_POST['log'] ) echo 'value="'.$_POST['log'].'"'

А в начале где-то (или в конце?) пишешь
PHP
if( !isset( $_POST['log'] ) )
   echo 
'Введите параметр log!!!<br>';


Спустя 8 часов, 36 минут, 47 секунд (4.02.2009 - 18:04) asdf написал(а):
twin,
ознакомился с указанной Вами ссылкой, пока для меня тяжеловато.

sergeiss,
Цитата

Лучше не в другой файл направлять данные, а в этот же (action="").

именно это и нужно. Если я правильно понял, то можно написать следующим образом:
Код

<html>
<head>
</head>
<body>
<? /* Начало модуля РНР. */
<form action="обработчик.php" method="post" name="reg" target="_blank">
<table align="center">
<tr>
<td>Введите ваш логин:</td>
<td><input type="text" name="log" /></td>
if( isset($_POST['log'] )           /* Проверка существует */    
echo 'value="'.$_POST['log'].'"';   /* ли переменная $log .*/
</tr>
<tr>
<td>Введите ваш пароль:</td>
<td><input type="password" name="pas" /></td>
if( isset($_POST['pas'] )           /* Проверка существует */    
echo 'value="'.$_POST['pas'].'"';   /* ли переменная $pas .*/
</tr>
</table>
<div align="center">
<input type="submit" name="but" value="Зарегистрироваться" />
</div>
</form>
if( !isset( $_POST['log'] ) )         /* Если переменная $log не существует         */  
  echo 'Введите параметр log!!!<br>'; /* выводится надпись: Введите параметр log!!! */

if( !isset( $_POST['pas'] ) )         /* Если переменная $pas не существует         */
  echo 'Введите параметр pas!!!<br>'; /* выводится надпись: Введите параметр pas!!! */
?> /* Конец модуля РНР. */
</body>
</html>

Или я не правильно понял?

Спустя 3 часа, 36 минут, 4 секунды (4.02.2009 - 21:40) sergeiss написал(а):
В целом ты правильно понял smile.gif Но синтаксис написал неверный. Я покажу только в одном месте, всё остальное однотипно исправляй.
Вот ты написал:
Код

<td><input type="password" name="pas" /></td>
if( isset($_POST['pas'] )           /* Проверка существует */    
echo 'value="'.$_POST['pas'].'"';   /* ли переменная $pas .*/
</tr>

А где у тебя указание на то, что надо включить интерпретатор PHP? Нету этого. И, также, вывод value идет у тебя вне поля ввода.
Правильно будет так:
Код

<td><input type="password" name="pas"
<?php // начало работы вставки на PHP
if( isset($_POST['pas'] )  )         /* Проверка существует */    
echo 'value="'.$_POST['pas'].'"';   /* ли переменная $pas .*/
/*а далее PHP вставка заканчивается и потому только уже идет закрывающий тэг от инпута, и уже после него закрытие ячейки таблицы */ ?>
/></td>
</tr>


PS. И будь внимательнее с круглыми скобками. У тебя их (закрывающих) не хватает в нескольких местах.

Спустя 16 минут, 50 секунд (4.02.2009 - 21:56) asdf написал(а):
sergeiss,
вроде бы написал как Вы советовали:
Код

<html>
<head>
</head>
<body>
<form action="?" method="post" name="reg">
<table align="center">
<tr>
<td>Введите ваш логин:</td>
<td><input type="text" name="log"<?php if( isset($_POST['log'])) echo 'value="'.$_POST['log'].'"'; ?>/></td>
</tr>
<tr>
<td>Введите ваш пароль:</td>
<td><input type="password" name="pas"<?php if( isset($_POST['pas'])) echo 'value="'.$_POST['pas'].'"'; ?>/></td>
</tr>
</table>
<div align="center">
<input type="submit" name="but" value="Зарегистрироваться" />
</div>
</form>
<?php
if( !isset( $_POST['log'])) echo 'Введите параметр log!!!<br>';
?>
<?php
if( !isset( $_POST['pas'])) echo 'Введите параметр pas!!!<br>';
?>
</body>
</html>

но видимо что-то не доглядел. Может быть
PHP
<form action="?" method="post" name="reg">

если я правильно знаю, то знаком вопроса в экшене указывается возврат на себя после нажатия на
PHP
<input type="submit" name="but" value="Зарегистрироваться" />

Модули возврата\вывода сообщений
PHP
<?php
if( !isset( $_POST['log'])) echo 'Введите параметр log!!!<br>'; 
?>
<?php
if( !isset( $_POST['pas'])) echo 'Введите параметр pas!!!<br>';

поместил после закрытия формы.
..........................................................
И то, что совсем не ясно: почему-то после полей ввода логина и пароля в браузере появляются
HTML
/>

и ниже кнопки "Зарегистрироваться" появляется
HTML
'; ?> '; ?>

Хотя, вроде бы все корректно написано.

Спустя 31 минута, 24 секунды (4.02.2009 - 22:28) twin написал(а):
asdf
Цитата
ознакомился с указанной Вами ссылкой, пока для меня тяжеловато.
Подскажите, что там тяжело воспринимается, я перепишу. Вообще можно просто копировать листинг по порядку и запускать. Я вроде бы старался до манной каши разжевать... Вы может просто не видели это

Спустя 3 часа, 29 минут, 28 секунд (5.02.2009 - 01:57) asdf написал(а):
[off]
twin,
Цитата
Подскажите, что там тяжело воспринимается

в общем очень хорошие статьи. Но, видимо, в силу моей неопытности в программировании, некоторые вещи не получаются. Вчера, приступив к изучению Вашей статьи и пошаговому выполнению всех советов был вынуждет остановиться на второй странице. После выполнения
Цитата

Готово. Сохраните это в каталоге my_site с названием index и расширением php. Теперь откройте браузер и наберите в адресной строке это http://localhost/my_site

Денвер выдал 500-ую ошибку. Как с ней справиться пока не знаю.
[/off]
...........................................................
P.S. Как на этом форуме выделяется оффтоп? Стандартные теги [off] и [/off] не работают.

Спустя 7 часов, 33 минуты, 29 секунд (5.02.2009 - 09:31) sergeiss написал(а):
Убери знак вопроса из экшен, оставь пустое место (action=""), и тебе должно быть счастье smile.gif

Вопрос: а почему бы не написать информацию о том, что не были введены логин или пароль непосредственно перед инпутом, где они вводятся???

Цитата (asdf @ 4.02.2009 - 21:56)
И то, что совсем не ясно: почему-то после полей ввода логина и пароля в браузере появляются
HTML
/>

и ниже кнопки "Зарегистрироваться" появляется
HTML
'; ?> '; ?>

Хотя, вроде бы все корректно написано.

Тут не знаю в чем проблема. Скорее всего, это твой редактор так "умничает". Ты в чём текст скрипта пишешь?

Цитата
P.S. Как на этом форуме выделяется оффтоп? Стандартные теги [off] и [/off] не работают.

Да просто напиши слово Offtop: и после него всё, что надо smile.gif Люди тут все грамотные обитаются, поймут адекватно.

Спустя 25 минут, 6 секунд (5.02.2009 - 09:56) twin написал(а):
Цитата
Тут не знаю в чем проблема. Скорее всего, это твой редактор так "умничает". Ты в чём текст скрипта пишешь?
Тут все гораздо серъёзнее. Автор запускает это не как скрипт php а просто открывает в браузере. Без сервера.


asdf
Error 500 это ошибка конфигурации. Вы где то ошиблись при установке сервера. Попробуйте переустаеовить денвер, это совсем не сложно. Удалите вертуальный диск Z и запустите программу инсталляции заново. Если точно следовать рекомендациям при установке, проблем обычно не возникает.

Спустя 6 часов, 14 минут, 51 секунда (5.02.2009 - 16:11) asdf написал(а):
sergeiss,
Цитата

Тут не знаю в чем проблема. Скорее всего, это твой редактор так "умничает". Ты в чём текст скрипта пишешь?

twin,
Цитата

Error 500 это ошибка конфигурации.

дело в том, что я скрипты писал в стандартном Блокноте. После того, как тоже самое написал в Adobe Dreamweaver CS3 - все лишние знаки и пятисотая ошибка исчезла. Видимо, ошибка была в кодировке. Сейчас разбираюсь со скриптами дальше.
Быстрый ответ:

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