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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> авторизация(ООП и процедура), процедурно работает,ооп-нет 
:(
    Опции темы
pr1de
Дата 26.7.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть скрипт авторизации который процедурно при вводе пароля и логина правельного пишет гуд.и есть тот же скрипт но я его переделал на ООП и при вводе правельного логина с паролем или не правельного без разницы пишет бэд!помогите пожалучта голова уже трещит.

процедурный исправный скрипт:

Код

<?php  


  include "../conf/config.php";



        $login=$_POST['login'];
        $password=$_POST['password'];
       
       
       
        $login=htmlspecialchars($login);
        $password=htmlspecialchars($password);

        $login=mysql_escape_string($login);
        $password=mysql_escape_string($password);
      
        if (isset($login) & isset($password))
        {
             $result=mysql_query("SELECT `name` FROM `conf` WHERE `admin_login`='$login' AND `admin_pass`='$password'") or die("admin error");


             if($val=mysql_num_rows($result)<1)
               {
                   print("bad");
                   
               }
             else
             {
                  print("good");

               }
}




     
        
?>



и вот ООПэшный в котором проблема(ошибку не выдает просто не правельнор фунциклирует) 
PM MAIL   Вверх
BSOD
Дата 26.7.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а где нерабочий скрипт-то?


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
pr1de
Дата 26.7.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



извиняюсь че то я забородил вот он:
<?php
include "../conf/config.php";
Код

class admin
{
    var $login;
    var $password;
    var $result;
    var $val;
    
   
    function auth()
    {
        $this->login=$_POST['login'];
        $this->password=$_POST['password'];
       
        print("$this->login<br>$this->password");
       
        $this->login=htmlspecialchars($login);
        $this->password=htmlspecialchars($password);

        $this->login=mysql_escape_string($login);
        $this->password=mysql_escape_string($password);
      
        if (isset($this->login) & isset($this->password))
        {
             $this->result=mysql_query("SELECT `name` FROM `conf` WHERE `admin_login`='$this->login' AND `admin_pass`='$this->password'") or die("admin error");


             if($this->val=mysql_num_rows($this->result)<1)
               {
                   print("bad");
                   print("$this->val");
               }
             else
             {
                  print("good");

               }
        }

    }
}



?>



PM MAIL   Вверх
NightmareZ
Дата 26.7.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Смысл оформлять всё это в класс?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
pr1de
Дата 26.7.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хочу свой форум переделать на классы,да и интересно почему не получается
PM MAIL   Вверх
Flashdown
Дата 26.7.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



PM MAIL ICQ   Вверх
NightmareZ
Дата 26.7.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(pr1de @  26.7.2007,  16:04 Найти цитируемый пост)
хочу свой форум переделать на классы,да и интересно почему не получается

Какое преимущество даёт то, что ты всё завернул в класс?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Fally
Дата 26.7.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По моему, надо бы вам сделать так:
Код

    function auth($log, $pwd)
    {
        $this->login = $log;
        $this->password = $pwd;
        // А дальше ваш код...
       


и соответственно вызывать:

Код

$obj->auth($_POST['login'], $_POST['password']);


Должно помочь.
NightmareZ, Хотя бы такие, что библиотеку можно будет повторно использовать (только если подредактировать, т.к. сейчас её не только повторно, но и вообще использовать нельзя ;))

Это сообщение отредактировал(а) Fally - 26.7.2007, 16:18


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Golda
Дата 26.7.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



Да, вариант Fally должен помочь и с точки зрения повторного использования кода он удобнее, поскольку не накладывает зависимости на источник получения login и password. А помочь он должен, поскольку обходится Ваша конкретная ошибка.

Цитата(pr1de @  26.7.2007,  15:01 Найти цитируемый пост)
        
        $this->login=$_POST['login'];
        $this->password=$_POST['password'];
       
        print("$this->login<br>$this->password");
       
        $this->login=htmlspecialchars($login);
        $this->password=htmlspecialchars($password);


Вы сначала пишете данные в поля класса $this->login, $this->password, а потом пытаетесь использовать не определенные ранее локальные переменные $login и $password. Они всегда пустые. Вот и результат всегда "bad".

P.S. Ну и к проблемам безопасности стоит отнестить внимательнее. Не стоит прямо в mysql_query() вставлять неэкранированные и нефильтрованные значения, прямо из $_POST


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
wolfmessing
Дата 27.7.2007, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И ещё на существование проверь  smile 

Код

$this->login=$_POST['login'];
$this->password=$_POST['password'];
        if ((empty($this->login)) || (empty($this->password))) die ('YOU ARE DEAD :)')
        print("$this->login<br>$this->password");


Ой сори извиняюсь опять не заметил 
Код

if (isset($this->login) & isset($this->password))


Тогда можно в md5 запяхнуть 
smile 
Код

$this->login = md5($_POST['login'])
$this->password=md5($_POST['password'])

 smile  ещё раз извиняюсь

Это сообщение отредактировал(а) wolfmessing - 27.7.2007, 09:33
PM MAIL WWW ICQ   Вверх
pr1de
Дата 27.7.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Golda @ 26.7.2007,  22:18)
Да, вариант Fally должен помочь и с точки зрения повторного использования кода он удобнее, поскольку не накладывает зависимости на источник получения login и password. А помочь он должен, поскольку обходится Ваша конкретная ошибка.

Цитата(pr1de @  26.7.2007,  15:01 Найти цитируемый пост)
        
        $this->login=$_POST['login'];
        $this->password=$_POST['password'];
       
        print("$this->login<br>$this->password");
       
        $this->login=htmlspecialchars($login);
        $this->password=htmlspecialchars($password);


Вы сначала пишете данные в поля класса $this->login, $this->password, а потом пытаетесь использовать не определенные ранее локальные переменные $login и $password. Они всегда пустые. Вот и результат всегда "bad".

P.S. Ну и к проблемам безопасности стоит отнестить внимательнее. Не стоит прямо в mysql_query() вставлять неэкранированные и нефильтрованные значения, прямо из $_POST

разве этого не хватит для защиты ?

Код

 $this->login=htmlspecialchars($login);
        $this->password=htmlspecialchars($password);

        $this->login=mysql_escape_string($login);
        $this->password=mysql_escape_string($password);

PM MAIL   Вверх
Fally
Дата 27.7.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



pr1deВозможно и хватит, утверждать не буду, т.к. сам всегда использую mysql_real_escape_string(), да и разработчиками она рекомендована. 
К тому же до сих пор не пойму 2 вещи в вашем коде:
1) зачем так обрабатывать пароль, не лучше ли его хранить в БД в виде MD5-хэша, и при сравнении его хэшировать? И SQL-injection по полю пароля вы точно не получите.
2) Поле с логином. Вопрос, а зачем вы допускаете потенциально опасные символы в логине. Мне кажется, что можно допускать для логина только символы: a-z, а-я, _, 0-9 . Всё, больше ничего не нужно. А проверить на корректность такой логин можно регулярным выражением.

Цитата

И ещё на существование проверь  smile 


Пишите проверь на существование, а проверяете пустая переменная или нет.. Определитесь с тем чего хотите и чего вы делаете ;)

Это сообщение отредактировал(а) Fally - 27.7.2007, 10:07


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
pr1de
Дата 27.7.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



большое спасибо всем кто помогал!
PM MAIL   Вверх
wolfmessing
Дата 27.7.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

проверяете пустая переменная или нет.. Определитесь с тем чего хотите и чего вы делаете ;)


ОК спосибо за замечание учту  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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