Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Админка

Сообщения:  [1-10]   [11-17] 

 
 автор: Лена   (25.12.2008 в 23:13)   письмо автору
 
   для: Николай2357   (25.12.2008 в 20:46)
 

Представляете, вот из-за этой черточки и не работало! Спасибо.
Просто вбиваю все сама и как-то пропустила. Буду внимательней.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 20:46)   письмо автору
 
   для: Лена   (25.12.2008 в 20:23)
 

Вот эта строчка:
<?
$_POST
['pass'] = mysql_escape_string($_POST['pass']);
у Вас явно лишняя, и может испортить всё дело.Инъекция и так не пролезет, Вы же подставляете в запрос хэш, а не значение переменной.
А вот тут Вы пропустили чёрточку ))):
<?
if(empty($POST['pass'])) $error['pass'] = "Введите пароль!";

  Ответить  
 
 автор: Лена   (25.12.2008 в 20:23)   письмо автору
 
   для: 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" появляется сообщение "Введите пароль!" и сама форма, хотя пароль уже введен и передан. В чем причина - не пойму.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 01:13)   письмо автору
 
   для: Trianon   (25.12.2008 в 01:03)
 

Можно не смотреть, если не хочет. А может потом поможет... А мне спать пора. Ни чё не Фу.

  Ответить  
 
 автор: Trianon   (25.12.2008 в 01:03)   письмо автору
 
   для: Николай2357   (25.12.2008 в 00:27)
 

человек хочет подумать сам. А Вы ему в этом нехитром желании отказали. Довольно редком, среди обитателей этого портала, между прочим... Фу.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 00:27)   письмо автору
 
   для: Лена   (24.12.2008 в 21:31)
 

Ну вот, стоп. На самом интересном месте... ))) А почему Вы сразу не хотите запрос по условию сформировать? Вроде так проще обработать потом:
<?
$sql 
"SELECT * FROM users WHERE login = '$_POST[name]' AND pass='".md5($_POST['pass'])."'";

  Ответить  
 
 автор: Лена   (25.12.2008 в 00:06)   письмо автору
 
   для: Valick   (24.12.2008 в 23:26)
 

print_r($_POST) выводит переданный массив. А страница пустая.
Дайте сама подумаю. Всем стоп!

  Ответить  
 
 автор: AcidTrash   (24.12.2008 в 23:39)   письмо автору
 
   для: Лена   (24.12.2008 в 23:00)
 

session_id();
А зачем вам оная нужна?

  Ответить  
 
 автор: devzorg   (24.12.2008 в 23:37)   письмо автору
 
   для: Лена   (24.12.2008 в 23:00)
 

а зачем сессию передавать в форме ?? она и так доступна всегда

  Ответить  
 
 автор: Valick   (24.12.2008 в 23:26)   письмо автору
 
   для: Лена   (24.12.2008 в 23:00)
 

print_r($_POST); 

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования