Авторизация для домена третьего уровня на домене первого уровня
Приветствую.
Есть авторизация пользователей 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/ , авторизации, оказывается, нет.
Подскажите, в чем может быть проблема?
Источник: Stack Overflow на русском