Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести сообщение под формой, при неправильном вводе 
:(
    Опции темы
stat007
Дата 18.8.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



Возникла такая проблема: есть 2 php файла, в одном из которых находится форма передаваемая методом post, во втором файле обработчик этой формы в котором написана проверка на правильность ввода логина и пароля в форму, если введено не верно, то возвращаемся обратно на форму, но необходимо сделать что бы не только возвращение происходило, но и выдовало сообщение что-то типа, неверный логин или пароль! А при простом обновлении просто перенаправляло назад на форму!
Как это сделать???

Во файл с формой: form.php
Код

<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login"><br>
Введите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>
</center>
</html>

Файл обработки: table.php
Код

if(empty($pswd))
{
header('location: ./index.html');
}
if($pass != $pswd)
{
header('location: ./index.html');
}


Вот куда прописать, что-бы вывело сообщение именно под формой в файле form.php ??
PM MAIL   Вверх
ZneP
Дата 18.8.2010, 11:22 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Сделай вывод формы в файле обработки данных

Файл form.php
Код

<?php
$errors = array();

// Если форма отправлена, проверяем на ошибки
// Кстати, откуда берется переменная $pswd????????

if ($_POST['submit']) {
   if (!isset($_POST['pass']) || empty($_POST['pass'])) {
      errors[] = 'Пароль пустой!';
   }
   else if ($_POST['pass'] != $pswd) {
      errors[] = 'Пароль введен не верно!';
   }
}

// Если есть ошибки, выводим форму снова и под формой ошибки
if ($errors) {
?>
<html>
<center>
<form action="form.php" method="post">
Введите логин:  <input type=text name="login"><br>
Введите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>

<?php
   foreach ($errors as $error) {
      echo '<span style="color:red;">'.$error.'</span><br />';
   }
?>

</center>
</html>

<?php
}
// Иначе, если ошибок не было...
else {
   // здесь уже выполняешь проверку на существование пары логин/пароль
   // и проводишь авторизацию пользователя в системе
}
?>






Либо можешь сделать так:
В файле обработки данных table.php делать подключение файла с формой

Файл table.php:
Код

<?php
$errors = array();

// Если форма отправлена, проверяем на ошибки
// Кстати, откуда берется переменная $pswd????????

if ($_POST['submit']) {
   if (!isset($_POST['pass']) || empty($_POST['pass'])) {
      errors[] = 'Пароль пустой!';
   }
   else if ($_POST['pass'] != $pswd) {
      errors[] = 'Пароль введен не верно!';
   }
}

// Если есть ошибки, подключаем файл с формой
if ($errors) {
   include('form.php');
}
// Иначе, если ошибок не было...
else {
   // здесь уже выполняешь проверку на существование пары логин/пароль
   // и проводишь авторизацию пользователя в системе
}
?>

Файл form.php:
Код

<html>
<center>
<form action="form.php" method="post">
Введите логин:  <input type=text name="login"><br>
Введите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>

<?php
   foreach ($errors as $error) {
      echo '<span style="color:red;">'.$error.'</span><br />';
   }
?>

</center>
</html>


Это сообщение отредактировал(а) ZneP - 18.8.2010, 11:35
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



ZneP, 
Почему то ничего не получилось, не первый не второй вариант..(( После обновления просто открывается пустая страница, т.е. даже форма пропадает.!
PM MAIL   Вверх
ZneP
Дата 18.8.2010, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Нашел бок

Код

if ($_POST['submit']) {
   if (!isset($_POST['pass']) || empty($_POST['pass'])) {
      errors[] = 'Пароль пустой!';
   }
   else if ($_POST['pass'] != $pswd) {
      errors[] = 'Пароль введен не верно!';
   }
}


замени на

if ($_POST['submit']) {
   if (!isset($_POST['pass']) || empty($_POST['pass'])) {
     $errors[] = 'Пароль пустой!';
   }
   else if ($_POST['pass'] != $pswd) {
      $errors[] = 'Пароль введен не верно!';
   }
}

Это сообщение отредактировал(а) ZneP - 18.8.2010, 12:23
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



Пробовал сделать просто так: т.е. в файле form.php прописать следующее, после самого html кода вывода формы:
Код

<?php

<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login"><br>
Ведите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>
</center>
</html>

<?php

if(login != pass)
{
echo "Логин или пароль введён не верно!";
}

?>


Но в данном случае сразу выводится echo, может как-то иначе проверку прописать нужно???
PM MAIL   Вверх
ZneP
Дата 18.8.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



if ($_POST['submit']) {
   if (!isset($_POST['pass']) || empty($_POST['pass'])) {
     $errors[] = 'Пароль пустой!';
   }
   else if ($_POST['pass'] != $pswd) {
      $errors[] = 'Пароль введен не верно!';
   }
}


ДА. Откуда берется переменная $pswd???
Через форму она не передается, в файлах не объявлена

Добавлено @ 12:27
Цитата(stat007 @  18.8.2010,  12:22 Найти цитируемый пост)
<?php
<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login"><br>
Ведите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>
</center>
</html>
<?php
if(login != pass)
{
echo "Логин или пароль введён не верно!";
}
?>


Здесь у тебя ошибки
перед <html> убеги <?php

if(login != pass)
замени на
if($login != $pass)

Форма должна быть в <body></body>

Это сообщение отредактировал(а) ZneP - 18.8.2010, 12:28
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



ZneP, 
$pswd объявлена в другом файле, который подключается к файлу table.php.

Добавлено через 4 минуты и 46 секунд
ZneP, 
Ничего не получается опять((.. Срочно нужно сделать это, помогите плиз..
PM MAIL   Вверх
ZneP
Дата 18.8.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Так.
Кидай теперь по новой исходники файлов сюда

Это сообщение отредактировал(а) ZneP - 18.8.2010, 12:58
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



ZneP, ок, вот 2 файла:
1) Файл form.php
Код

<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login"><br>
Ведите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>
</center>
</html>


2) Файл обработки table.php
Код

<?php
include "conf.php";

$login =$_POST['login'];
$pass = $_POST['pass'];

$myrow = mysql_fetch_array($q);
$pswd = $myrow[1];
$uid = $myrow[0];


if(empty($pswd))
{
header('location: ./index.html');
}

if ($pass == $pswd)
{
//Выполнение запросов
}

if($pass != $pswd)
{
header('location: ./index.html');
}

echo"
<center><table border='1' width='900'>

<tr BGCOLOR='#1E90FF'>
<td width='450'><center>��������</center></td>
<td width='450'><center>��������</center></td>
</tr>

<TR>
<TD>�����: </TD>
<TD>$login</TD>
</TR>

<TR>
<TD>�������� ����: </TD>
<TD>$myrow6[0]</TD>
</TR>

<TR>
<TD>������� ������: </TD>
<TD>$obr ���.</TD>
</TR>

<TR>
<TD>����� ��� ���������� � ���������: </TD>
<TD>$uid</TD>
</TR>

<TR>
<TD>Ip-�����: </TD>
<TD>$myrow3[7]</TD>
</TR>

<TR>
<TD>�������: </TD>
<TD>$myrow3[1] &nbsp;&nbsp; $myrow3[6]</TD>
</TR>

<TR>
<TD>���: </TD>
<TD>$myrow3[0]</TD>
</TR>

<TR>
<TD>�����: </TD>
<TD>$myrow3[3], $myrow3[4], $myrow3[5]</TD>
</TR>

<TR>
<TD>E-mail: </TD>
<TD>$myrow3[2]</TD>
</TR>

</table></center>
";
?>

PM MAIL   Вверх
ZneP
Дата 18.8.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Table.php
Код

<?php
include "conf.php";

$login =$_POST['login'];
$pass = $_POST['pass'];

$myrow = mysql_fetch_array($q);

$pswd = $myrow[1];
$uid = $myrow[0];

$errors = array();

if(empty($pswd))
{
header('location: ./index.html');
}

if($_POST['submit'])) { // Это чтобы ошибки выводились лишь после отправки формы
if(empty($pass))
{
$errors[] = 'Пароль пустой';
}
else if($pass != $pswd)
{
$errors[] = 'Пароль введен не верно!';
}
else if ($pass == $pswd)
{
//Выполнение запросов
}
}


// Если есть ошибки, подключаем файл с формой
if ($errors) {
   include './form.php';
}
else if ($_POST['submit']) { // Выводиться будет, если нет ошибок и форма была отправлена
   
echo"
<center><table border='1' width='900'>
<tr BGCOLOR='#1E90FF'>
<td width='450'><center>��������</center></td>
<td width='450'><center>��������</center></td>
</tr>
<TR>
<TD>�����: </TD>
<TD>$login</TD>
</TR>
<TR>
<TD>�������� ����: </TD>
<TD>$myrow6[0]</TD>
</TR>
<TR>
<TD>������� ������: </TD>
<TD>$obr ���.</TD>
</TR>
<TR>
<TD>����� ��� ���������� � ���������: </TD>
<TD>$uid</TD>
</TR>
<TR>
<TD>Ip-�����: </TD>
<TD>$myrow3[7]</TD>
</TR>
<TR>
<TD>�������: </TD>
<TD>$myrow3[1] &nbsp;&nbsp; $myrow3[6]</TD>
</TR>
<TR>
<TD>���: </TD>
<TD>$myrow3[0]</TD>
</TR>
<TR>
<TD>�����: </TD>
<TD>$myrow3[3], $myrow3[4], $myrow3[5]</TD>
</TR>
<TR>
<TD>E-mail: </TD>
<TD>$myrow3[2]</TD>
</TR>
</table></center>
";
}
?>



Form.php
Код

<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login"><br>
Ведите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>

<?php
   foreach ($errors as $error) {
      echo '<span style="color:red;">'.$error.'</span><br />';
   }
?>

</center>
</html>





Если не будет работать, я убьюсь об стену

Это сообщение отредактировал(а) ZneP - 18.8.2010, 13:24
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



ZneP, Вы не поверите, но не работает!((
Форма пропадает и всё...... белая страница грузится и всё!
PM MAIL   Вверх
ZneP
Дата 18.8.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Table.php
Код

<?php
include "conf.php";

if(isset($_POST['submit_s'])) {
    $login =(isset($_POST['login'])) ? $_POST['login'] : '';
    $pass = (isset($_POST['pass'])) ? $_POST['pass'] : '';
}

$myrow = mysql_fetch_array($q);

$pswd = $myrow[1];
$uid = $myrow[0];

$errors = array();

if(empty($pswd))
{
header('location: ./index.html');
}

if(isset($_POST['submit_s'])) { // Это чтобы ошибки выводились лишь после отправки формы
if(empty($pass))
{
$errors[] = 'Пароль пустой';
}
else if($pass != $pswd)
{
$errors[] = 'Пароль введен не верно!';
}
else if ($pass == $pswd)
{
//Выполнение запросов
}
}


// Если есть ошибки, подключаем файл с формой
if ($errors || !isset($_POST['submit_s'])) {
   include './form.php';
}
else if (isset($_POST['submit_s'])) { // Выводиться будет, если нет ошибок и форма была отправлена
   
echo"
<center><table border='1' width='900'>
<tr BGCOLOR='#1E90FF'>
<td width='450'><center>��������</center></td>
<td width='450'><center>��������</center></td>
</tr>
<TR>
<TD>�����: </TD>
<TD>$login</TD>
</TR>
<TR>
<TD>�������� ����: </TD>
<TD>$myrow6[0]</TD>
</TR>
<TR>
<TD>������� ������: </TD>
<TD>$obr ���.</TD>
</TR>
<TR>
<TD>����� ��� ���������� � ���������: </TD>
<TD>$uid</TD>
</TR>
<TR>
<TD>Ip-�����: </TD>
<TD>$myrow3[7]</TD>
</TR>
<TR>
<TD>�������: </TD>
<TD>$myrow3[1] &nbsp;&nbsp; $myrow3[6]</TD>
</TR>
<TR>
<TD>���: </TD>
<TD>$myrow3[0]</TD>
</TR>
<TR>
<TD>�����: </TD>
<TD>$myrow3[3], $myrow3[4], $myrow3[5]</TD>
</TR>
<TR>
<TD>E-mail: </TD>
<TD>$myrow3[2]</TD>
</TR>
</table></center>
";
}
?>



Form.php
Код

<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login"><br>
Ведите пароль: <input type=text name="pass"><br>
<input name="submit_s" type=submit value="Войти">
</form>

<?php
   foreach ($errors as $error) {
      echo '<span style="color:red;">'.$error.'</span><br />';
   }
?>

</center>
</html>





Вот так у меня работает. Проверил
Само собой я убирал инклуд конфига

Это сообщение отредактировал(а) ZneP - 18.8.2010, 14:52
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



ZneP, Отличненько, заработало это, теперь нужно ещё проверить, если оба поля пустые, вывести также соответствующую ошибку и если одно из полей пустые тоже ошибку вывести!
Постарался сам дописать в том месте где идут те проверки, но почемуто не хочет! Может что-то не так??
Код

if(empty($pass))
{
$errors[] = 'password empty';
}
else if($pass != $pswd)
{
$errors[] = 'password wrong!';
}
else if(empty($pass) && empty($pswd))
{
$errors[] = 'polya pustye!';
}
else if(empty($pass) || empty($pswd))
{
$errors[] = 'Odno pole pustoe!';
}

PM MAIL   Вверх
ZneP
Дата 18.8.2010, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Код

if (empty($login))
{
$errors[] = 'Login is empty!';
}

if(empty($pass))
{
$errors[] = 'Password is empty!';
}
else if($pass != $pswd)
{
$errors[] = 'Password is wrong!';
}

В случае, если пользователь не заполнит оба поля, выведется 2 ошибки: "Login is empty!" и "Password is empty!"


Для удобства интерфейса, можно ошибки добавлять в массив с ассоциативными ключами.
Например, если не заполнен логин:
$errors['login'] = "Login is empty!";
Если не заполнен пароль:
$errors['pass'] = "Password is empty!";
Ну и если пароль не совпадает:
$errors['pass'] = "Password is wrong!";

А в форме, на против соответствующего поля выводить ошибку:
Код

<html>
<center>
<form action="table.php" method="post">
Введите логин:  <input type=text name="login">
<? if(isset($errors['login'])) { ?>
   <span style="color:red;"><?= $errors['login'] ?></span>
<? } ?><br>
Ведите пароль: <input type=text name="pass">
<? if(isset($errors['pass'])) { ?>
   <span style="color:red;"><?= $errors['pass'] ?></span>
<? } ?><br>
<input name="submit_s" type=submit value="Войти">
</form>
</center>
</html>





else if(empty($pass) || empty($pswd))
{
$errors[] = 'Odno pole pustoe!';
}
Этот кусок не нужен, ведь у тебя пароль и логин проверяются отдельно.

Это сообщение отредактировал(а) ZneP - 18.8.2010, 15:22
PM MAIL ICQ Skype   Вверх
stat007
Дата 18.8.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -1
Всего: -4



ZneP, 
Чего-то не выводятся сообщения при обеих пустых полях, и при верхнем пустом поле..(
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.