|
|
|
|
|
для: Николай2357
(25.12.2008 в 20:46)
| | Представляете, вот из-за этой черточки и не работало! Спасибо.
Просто вбиваю все сама и как-то пропустила. Буду внимательней. | |
|
|
|
|
|
|
|
для: Лена
(25.12.2008 в 20:23)
| | Вот эта строчка:
<?
$_POST['pass'] = mysql_escape_string($_POST['pass']);
| у Вас явно лишняя, и может испортить всё дело.Инъекция и так не пролезет, Вы же подставляете в запрос хэш, а не значение переменной.
А вот тут Вы пропустили чёрточку ))):
<?
if(empty($POST['pass'])) $error['pass'] = "Введите пароль!";
|
| |
|
|
|
|
|
|
|
для: Trianon
(25.12.2008 в 01:03)
| | Получилось вот что:
<?php
session_start();
include("configs/dbopen.php");
//ошибки
$error = array();
if(isset($_POST['Enter'])){
print_r($_POST);
// Защита от SQL-инъекции
if (!get_magic_quotes_gpc()){
$_POST['name'] = mysql_escape_string($_POST['name']);
$_POST['pass'] = mysql_escape_string($_POST['pass']);
}
//если есть ошибки, формируем массив ошибок
if(empty($_POST['name'])) $error['name'] = "Введите свой логин!";
if(empty($POST['pass'])) $error['pass'] = "Введите пароль!";
//Формируем и выполняем SQL-запрос имеется ли пользователь
//с именем $_POST['name']
$sql = "SELECT * FROM users WHERE login = '$_POST[name]' AND pass = '" . md5($_POST['pass']) ."'";
$res = mysql_query($sql);
if(!$res) exit("Error in $sql: ". mysql_error());
//Если запрос вернул результат - производим дальнейшую обработку
if(mysql_num_rows($res) > 0){
//вход посетителя
if(session_start()){
$_SESSION['name'] = $_POST['name'];
$_SESSION['pass'] = $_POST['pass'];
//статус пользователя
$_SESSION['status'] = mysql_result($res,0,"id_group");
if(!empty($_SESSION['name']))
echo "Добро пожаловать, " . $_SESSION['name'];
if(isset($_SESSION['status'])){
$sql = "SELECT type_group FROM groups WHERE id_group = '$_SESSION[status]'";
//print $sql;
$res = mysql_query($sql);
if(!$res) exit("Error in $sql: ". mysql_error());
$group = mysql_result($res,0,"type_group");
if($group == 'admin'){
echo "<br />Привет, админ ".$_SESSION['name'] . ". Заждались тебя...";
include("admin/cms.php");
}else
echo "Извините, уважаемый, но вы не админ! Уходите по-хорошему.";
}
}
}
}
if(!isset($_POST['Enter']) || $error){
//ошибки
foreach ($error as $e)
print "<center><strong><p style='color: #ff0000;'>" . $e . "</p></strong></center>";
//вывод формы
include("admin/admin_form.php");
}
?>
|
Когда не заполняю поля - появляются сообщения об ошибках, как и надо. А когда заполняю все поля, пост массив, допустим, такой Array ( [name] => admin [pass] => admin [Enter] => Войти ), то вместе с надписью "Добро пожаловать, admin" появляется сообщение "Введите пароль!" и сама форма, хотя пароль уже введен и передан. В чем причина - не пойму. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2008 в 01:03)
| | Можно не смотреть, если не хочет. А может потом поможет... А мне спать пора. Ни чё не Фу. | |
|
|
|
|
|
|
|
для: Николай2357
(25.12.2008 в 00:27)
| | человек хочет подумать сам. А Вы ему в этом нехитром желании отказали. Довольно редком, среди обитателей этого портала, между прочим... Фу. | |
|
|
|
|
|
|
|
для: Лена
(24.12.2008 в 21:31)
| | Ну вот, стоп. На самом интересном месте... ))) А почему Вы сразу не хотите запрос по условию сформировать? Вроде так проще обработать потом:
<?
$sql = "SELECT * FROM users WHERE login = '$_POST[name]' AND pass='".md5($_POST['pass'])."'";
|
| |
|
|
|
|
|
|
|
для: Valick
(24.12.2008 в 23:26)
| | print_r($_POST) выводит переданный массив. А страница пустая.
Дайте сама подумаю. Всем стоп! | |
|
|
|
|
|
|
|
для: Лена
(24.12.2008 в 23:00)
| | session_id();
А зачем вам оная нужна? | |
|
|
|
|
|
|
|
для: Лена
(24.12.2008 в 23:00)
| | а зачем сессию передавать в форме ?? она и так доступна всегда | |
|
|
|
|
|
|
|
для: Лена
(24.12.2008 в 23:00)
| | | |
|
|
|
|