[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация и вход на сайт
UnoMono
Здравствуйте.
Вопрос состоит в следующем: главная страница на сайте - index.php. На ней же обрабатывается форма входа. Как обработать форму так, чтобы сообщения об ошибочном вводе в поля логин и пароль выдавались в index.php.



Спустя 1 час, 6 минут, 2 секунды (27.03.2012 - 23:29) beginner95 написал(а):
UnoMono
Ну есть хотя бы набросок index'ной страницы ?

Спустя 7 минут, 2 секунды (27.03.2012 - 23:36) UnoMono написал(а):
Вопрос в том как это связать чтобы вывод неправильных полей был, например, внизу под формой? Пытался сделать сам но выводит сразу же первый $error. Как сделать, чтобы не выводил $error = "Вы ввели не всю информацию, вернитесь назад и заполните все поля!"; Ведь я только зашел на сайт и еще не успел ничего ввести(естесственно поля пустые).Если закоментить то сразу при загрузке index. php вылезает второй $error с неправильно набранным логином или паролем.

index.php

<?php  
session_start();
if(isset($_POST['login']))
{
$login = $_POST['login'];
if($login == '') unset($login);
}
if(isset($_POST['password']))
{
$password = $_POST['password'];
if($password == '') unset($password);
}
if(empty($login) or empty($password))
{
$error = "Вы ввели не всю информацию, вернитесь назад и заполните все поля!";
}
$login = stripcslashes($login);
$login = trim($login);
$login = htmlspecialchars($login);
$password = stripcslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);

include("bd.php");

$result = mysql_query("SELECT * FROM users WHERE login='$login'", $db);
$myrow = mysql_fetch_array($result);

if(empty($myrow['password']))
{
$error = "Извините, введенный выми логин или пароль неверный";
}
else
{
if($myrow['password'] == $password)
{
$_SESSION['login'] = $myrow['login'];
$_SESSION['id'] = $myrow['id'];
$error = "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";
}
else
{
$error = "Извините, введенный выми логин или пароль неверный.";
}
}





<form action="index.php">$error method="post" id="enter" >
<
b>Авторизация</b>
<
br></br>
<
label>Логин:<br></label>
<
input name="login" type="text" class="form-text"/>
<
br></br>
<
label>Пароль:<br></label>
<
input name="password" type="password" class="form-text"/>
<
br></br>
<
input name="submit" type="submit" value="Войти" class="but"/>
<
br></br>
<
a href="#dialog" name="modal">Регистрация</a>
<
br></br>
<
a href="">Забыли пароль?</a>
</
form>

?>

Спустя 3 минуты, 39 секунд (27.03.2012 - 23:40) m4a1fox написал(а):
UnoMono
Я у вас кода не увидел. sad.gif Код то покажите, можно будет подумать.

Спустя 8 минут, 33 секунды (27.03.2012 - 23:49) UnoMono написал(а):
отредактировал.
посмотрите выше.

Спустя 9 часов, 57 минут, 49 секунд (28.03.2012 - 09:46) Placido написал(а):
Вот это
if($login == '') unset($login);
...

if($password == '') unset($password);

лишнее. Тем более, что в этом случае, если пароль и(или) логин не введен, вы получите кучу нотисов, что переменная не определена, вот здесь
$login = stripcslashes($login);
$login = trim($login);
$login = htmlspecialchars($login);
$password = stripcslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);
...

$result = mysql_query("SELECT * FROM users WHERE login='$login'", $db);

Спустя 8 часов, 51 минута, 20 секунд (28.03.2012 - 18:38) UnoMono написал(а):
Теперь сразу после загрузки index.php вылезает
$error = "Извините, введенный выми логин или пароль неверный";

Спустя 1 час, 34 минуты, 21 секунда (28.03.2012 - 20:12) Placido написал(а):
У вас логика кода неверная. Если вкратце, то сначала нужно проверять, какой запрос - "пост" или "гет". Если "гет", то сразу отрисовывать форму с ошибкой (если ошибка есть в сессии) + ошибку из сессии удалить, если "пост", то проверять, введен ли логин-пароль, если нет - ошибку в сессию и редирект, если да, то проверять совпадает ли логин-пароль, если нет - ошибка в сессию и редирект, если да, запускать пользователя.

Спустя 2 часа, 38 минут, 49 секунд (28.03.2012 - 22:51) UnoMono написал(а):
подскажите как проверяется какой запрос делается get или post?
вообщем делаю свой первый сайт и вот столкнулся с этой проблемой.
можно конечно "забить" на это и результат запроса отображать на другой странице.
но хотелось бы сделать все как надо.
может есть какая нибудь книга, где описано как это делается?

Спустя 39 минут, 30 секунд (28.03.2012 - 23:30) Placido написал(а):
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{
значит, форма была отправлена, поэтому проводим проверку логина, пароля и т.д.
}
else
{
$error = isset($_SESSION['login']['error']) ? $_SESSION['login']['error'] : '';
$login = isset($_SESSION['login']['name']) ? $_SESSION['login']['name'] : '';

unset($_SESSION['login']);

include 'форма.tpl';
}

Спустя 2 минуты, 41 секунда (28.03.2012 - 23:33) UnoMono написал(а):
спасибо большое
буду разбираться
Быстрый ответ:

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