(session and cookie) перезапись в авторизации.

Печать RSS
279

F
Автор
Землянин
0
<?php
require_once('db.php');

$email = trim(htmlspecialchars(stripslashes($_POST['email'])));
$password = md5(md5(trim(htmlspecialchars(stripslashes($_POST['password'])))));
$remember = trim(htmlspecialchars(stripslashes($_POST['save'])));

class inLog{

    public $classEmail;
    public $classPass;
    public $classRem;

    function __construct($ce,$cp,$cr = false){
        $this->classEmail = $ce;
        $this->classPass = $cp;
        $this->classRem = $cr;

        $sql = mysql_query("SELECT * FROM users WHERE password = '" . $this->classPass . "' AND email = '" . $this->classEmail . "' LIMIT 1");
        // Если есть совпадения то работаем далее
        if($sql===false){ //если нет совпадений то логин фальш если есть то иднм далее и логин тру
            $login = false;
        }else{
            
            while($u = mysql_fetch_array($sql))//Выборка из БД
            {
            
                if($this->classRem){//условия ремэмберна
                    
                    function rand_string($len, $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')//функция строки 
                    { 
                        $string = ''; 
                        for ($i = 0; $i < $len; $i++) 
                        { 
                            $pos = rand(0, strlen($chars)-1); $string .= $chars{$pos}; 
                        } 
                        return $string; 
                    }
                    
                    function session_encrypt($string) //функция мд5 строки
                    { 
                        $salt = 'sdsfljkdfg'; 
                        return md5($salt . $string); 
                    }
                    
                    $cookie_auth= rand_string(10) . $email;
                    $auth_key = session_encrypt($cookie_auth);
                    $auth_query = mysql_query("UPDATE users SET auth_key = '" . $auth_key . "' WHERE email = '" . $this->classEmail . "'");
                    setcookie("auth_key", $auth_key, time() + 60 * 60 * 24 * 7);
                        
                }//Закрывает условия ремэмберна

F
Автор
Землянин
0
<?php
                session_start();
                session_regenerate_id(true);
                $session_id = $u[id];
                $session_username = $u[user_name];
                $session_email = $email;
                $session_level = $u[user_level];
                
                $_SESSION['user_id'] = $session_id;
                $_SESSION['user_level'] = $session_level;
                $_SESSION['user_email'] = $session_email;
                $_SESSION['user_name'] = $session_username;
                $_SESSION['user_lastactive'] = time();
                return true; 
            }//Закрывает закрывает цикл выборки
        }//Закрывает условие выборки
    }//Закрывает конструктор        
}//Закрывает класс

$user = new inLog($email, $password, $remember);
print_r($_COOKIE);
?> 

Кто сможет помочь? Cookie "auth_key" не перезаписываются, при том что в БД ключ обновляется в чем причина? Как очистить Cookie и записать новые?
Изменил: fhgdfhdfhdf (15.10.2012 / 01:06)
П

Пацак
0
6680 (15 Октября 2012 / 01:01)
<?php
$email = trim(htmlspecialchars(stripslashes($_POST['email'])));
...
$sql = mysql_query("SELECT * FROM users WHERE password = '" . $this->classPass . "' AND email = '" . $this->classEmail . "' LIMIT 1"); 
...
?>
Напишешь потом ссылку на этот сайт? smile Значения в массиве COOKIE не меняются сразу после setcookie, наверное, проблема в этом.
Изменил: Петр (15.10.2012 / 08:58)
F
Автор
Землянин
0
Im-ieee (15 Октября 2012 / 08:56)
Напишешь потом ссылку на этот сайт?

Зачем? Так легко взломать?))) Это не сайт это я изучаю безопасность сайто-строения + cookie + session + ООП.


smile Значения в массиве COOKIE не меняются сразу после setcookie, наверное, проблема в этом.

Не понял, как сделать так что бы очистить $_COOKIE['auth_key']? А потом записать туда тоже значения что записывается и в БД?
П

Пацак
0
4. 6680, $_COOKIE['auth_key']=$auth_key; очевидно. Насчет безопасности - тут SQL инъекция.
Изменил: Петр (15.10.2012 / 11:51)
F
Автор
Землянин
0
И что мне это даст? То что для данной странице $_COOKIE['auth_key'] равна тому что я указал а на других страницах тому что было указано ранее! НУ И ЧТО ТУТ ОЧЕВИДНО?
П

Пацак
0
6. 6680, то есть у тебя вообще не устанавливается cookie? Тогда стоит включить отображение ошибок.
Изменил: Петр (15.10.2012 / 12:33)
F
Автор
Землянин
0
Насчет безопасности - тут SQL инъекция. - можно по подробней об этом?

Добавлено через 01:52 сек.
Im-ieee (15 Октября 2012 / 12:32)
6. 6680, то есть у тебя вообще не устанавливается cookie? Тогда стоит включить отображение ошибок.
Так то ошибки показывает когда например будет вывод в браузер в переди, как сделать что бы все ошибки видно было, я не помню...
Изменил: fhgdfhdfhdf (15.10.2012 / 12:35)
П

Пацак
0
8. 6680, такой email: nothing' union select * from users where email='admin_email'# Отображение ошибок - error_reporting(E_ALL);
F
Автор
Землянин
0
Im-ieee (15 Октября 2012 / 12:39)
8. 6680, такой email: nothing' union select * from users where email='admin_email'#

Типо если вместо мыла вставить эту штуку и нажать вход, получишь данные из бд? или что? можно подробнее.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск