Авторизация для домена третьего уровня на домене первого уровня

Рейтинг: 0Ответов: 1Опубликовано: 10.10.2014

Приветствую.

Есть авторизация пользователей http://account.site.ru/login/ , не очень удобно: чтобы авторизоваться, надо было переходить на эту страницу.

Хочется сделать авторизацию путем выпадающей формы авторизации на http://site.ru, если авторизация успешно прошла, то направляем на страницу пользователя.

Только у меня проблема, написал код авторизации:

function generateCode($length=6) {

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";

    $code = "";

    $clen = strlen($chars) - 1;  
    while (strlen($code) < $length) {

            $code .= $chars[mt_rand(0,$clen)];  
    }

    return $code;

}

$json_output = array();

    if($_POST['email']!=='') {

        if($_POST['password']!=='') {

                # Вытаскиваем из БД запись, у которой логин равняеться введенному

                $query = mysql_query("SELECT id_staff,staff_password,out_time_account FROM staff WHERE email='".$_POST['email']."' LIMIT 1",$db);

                $data = mysql_fetch_assoc($query);

                # Соавниваем пароли

                if($data['staff_password'] === md5(md5($_POST['password'])))

                {

                    # Генерируем случайное число и шифруем его

                    $hash = md5(generateCode(10));

                    # Записываем в БД новый хеш авторизации и IP
                    $input = date("Y-m-d H:i:s");   // устанавливаем дату захода в админку
                    $ip = mysql_escape_string($_SERVER['REMOTE_ADDR']); // выясняем IP

                    mysql_query("UPDATE staff SET staff_hash='".$hash."', input='".time()."' WHERE id_staff='".$data['id_staff']."'",$db); // ставим время входа

                    mysql_query("INSERT INTO staff_input SET id_staff='".$data['id_staff']."', datetime = '".$input."', ip = '".$ip."'"); // записываем время входа и ip зашедшего

                    # Ставим куки
                    $date_del_cooke = time()+$data['out_time_account']*3600; // устанавливаем время жизни куки.
                    $SERVER_NAME = "account.site.ru";
                    setcookie("id", $data['id_staff'], $date_del_cooke, "/", $SERVER_NAME);

                    setcookie("hash", $hash, $date_del_cooke, "/", $SERVER_NAME);

                    # Переадресовываем браузер на страницу проверки нашего скрипта

                    //header("Location: /job"); exit();

                    $json_output = array('succes'=>1, 'param'=>'ok', 'msg'=>'Авторизация успешно прошла');

                } else {
                    $json_output = array('succes'=>0, 'param'=>'error_pass', 'msg'=>'неверный пароль');             
                }

        } else { 
            $json_output = array('succes'=>0, 'param'=>'password', 'msg'=>'Вы забыли ввести пароль'); 
        }

    } else { 
        $json_output = array('succes'=>0, 'param'=>'email', 'msg'=>'Вы не ввели ваш емайл'); 
    }

echo json_encode($json_output);

Записываю в куку данные, но почему-то когда пытаюсь напрямую зайти на страницу http://account.site.ru/job/ , авторизации, оказывается, нет.

Подскажите, в чем может быть проблема?

Ответы

▲ 1Принят

Чтобы кука распространялась на домен и все поддомены, нужно домену приписать точку в начало.

site.ru => .site.ru