[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сессии на поддомене с основного домена
Vantedur
Как сделать перенос сессии с домена на поддомены?

Юзер авторизовывается на главной но когда попадает на блог сессия заканчивает свое существование, как сделать ее дублирование?
_http://vtrigazety.ru место авторизации (p.s. авторизация доступна на всех страницах и поддоменах)

_http://jquery.vtrigazety.ru блоги которые генерятся из _http://vtrigazety.ru/?blog=jquery
при помощи .htaccess генерятся поддомены
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.{3,})\.vtrigazety\.ru$
RewriteRule (.*) http://vtrigazety.ru/index.php?blog=%1&uri=%{REQUEST_URI} [P,L]


пробовал
session_set_cookie_params(2*7*24*60*60,'/','.vtrigazety.ru');


пробовал
ini_set('session.cookie_domain','/','.vtrigazety.ru');


не выходит

система ISPmanager Light на Cent OS 5.x



Спустя 4 часа, 50 минут, 54 секунды (12.07.2010 - 11:18) vagrand написал(а):
Надо делать авторизацию не через сессии а через кукисы. И ставить куки на .domain.com

Спустя 19 часов, 17 минут, 48 секунд (13.07.2010 - 06:36) Vantedur написал(а):
Цитата (vagrand @ 12.07.2010 - 08:18)
Надо делать авторизацию не через сессии а через кукисы. И ставить куки на .domain.com

не подскажешь как это исправить? даю исходник на всякий случай.
<?php

define('INCLUDE_CHECK',true);
require 'bd.php';
require_once('sendmail.php');
session_name('userLogin'); // начинаем сессию
session_set_cookie_params(2*7*24*60*60); // куки живут 2 недели
if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
{
// если куки не включены в браузере то не отображаем запомнить меня
$_SESSION = array();
session_destroy();
// убиваем сессию
}
if(isset($_GET['logoff']))
{
$_SESSION = array();
session_destroy();
header("Location: index.php");
exit;
}
if($_POST['submit']=='Login')
{
$err = array();
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM users WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usr'])
{
// если все ништяк входим
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// записываем инфу в сессию
setcookie('tzRemember',$_POST['rememberMe']);
}
else $err[]='Wrong username and/or password!';
}
if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);
// записываем ошибки
header("Location: index.php");
exit;
}
else if($_POST['submit']=='Register')
{
// если регистрируемся
$err = array();
if(strlen($_POST['username'])<4 || strlen($_POST['username'])>32)
{
$err[]='Логин должен быть длинной от 4 до 20 символов!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
{
$err[]='Вы используете недопустимые символы!';
}
if(!checkEmail($_POST['email']))
{
$err[]='Вы указали недопустимый почтовый адрес!';
}
if(!count($err))
{
// если нет ошибок
$pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
// Generate a random password
$_POST['email'] = mysql_real_escape_string($_POST['email']);
$_POST['username'] = mysql_real_escape_string($_POST['username']);
mysql_query(" INSERT INTO users (usr,pass,email,regIP,dt)
VALUES(
'"
.$_POST['username']."',
'"
.md5($pass)."',
'"
.$_POST['email']."',
'"
.$_SERVER['REMOTE_ADDR']."',
NOW()
)"
);
if(mysql_affected_rows($link)==1)
{
send_mail( 'support@vtrigazety.ru',
$_POST['email'],
'Password from vtrigazety.ru for '.$_POST['username'],
'Для того чтобы сменить пароль воспользуйтесь этой формой: https://vtrigazety.ru/?show=changepassword
На данный момент у вашего аккауда пароль: '
.$pass );
$_SESSION['msg']['reg-success']='На ваш почтовый ящик был выслан пароль!';
}
else $err[]='Такой логин уже существует!';
}
if(count($err))
{
$_SESSION['msg']['reg-err'] = implode('<br />',$err);
}
header("Location: index.php");
exit;
}
$script = '';
if($_SESSION['msg'])
{
// отображаем кнопку отображения панелт
$script = '
<script type="text/javascript">
$(function(){
$("div#panel").show();
$("#toggle a").toggle();
});
</script>'
;
}
?>
<?php
echo $script; ?>
</head>
<
body>
<
div id="toppanel">
<
div id="panel">
<
div class="content clearfix">
<
div class="left">
<
h2>В три газеты</h2>
<
p class="grey"> На сайте В три газеты вы можете публиковать новости, полезную информацию или просто вести личный блог, любой пользователь обладает возможностью опубликовать информацию в любую из интересующей его газету, однако, владелиц газеты может закрыть доступ на публикацию информации, в этом случае ваша публикацию поступит к нему на модерацию.</p>
<
p class="grey">Для создания собственной газеты вам необходимо пройти регистрацию!</p>
<
p class="grey">Для публикации статей в чужих газетах без модерации обращайтесь к владельцам эллектронных газет с просьбой выдать вам статус журналиста!</p>
<
p class="grey">Email администрации сайта 1@dsns.ru</p>
</
div>
<?php
if (!isset($_GET['blog'])=='')
// если юзер находится в блоге то показываем
{
if(!$_SESSION['id']):
?>
<div class="left">
<
form class="clearfix" action="" method="post">
<
h1>Вход на сайт / Login</h1>
<?php
if($_SESSION['msg']['login-err'])
{
echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
unset($_SESSION['msg']['login-err']);
}
?>
<label class="grey" for="username">Логин:</label>
<
input class="field" type="text" name="username" id="username" value="" size="23" />
<
label class="grey" for="password">Пароль:</label>
<
input class="field" type="password" name="password" id="password" size="23" />
<
label><input name="rememberMe" id="rememberMe" type="checkbox" value="1" /> Запомнить меня!</label>
<
div class="clear"></div>
<
input type="submit" name="submit" value="Login" class="bt_login" />
</
form>
</
div>
<
div class="left right">
<
form action="" method="post">
<
h1>Нет логина с паролем? Зарегистрируйся!</h1>
<?php
if($_SESSION['msg']['reg-err'])
{
echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
unset($_SESSION['msg']['reg-err']);
}
if($_SESSION['msg']['reg-success'])
{
echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
unset($_SESSION['msg']['reg-success']);
}
?>
<label class="grey" for="username">Ваш будущий логин:</label>
<
input class="field" type="text" name="username" id="username" value="" size="23" />
<
label class="grey" for="email">Ваш почтовый ящик:</label>
<
input class="field" type="text" name="email" id="email" size="23" />
<
label>Вы получите свой пароль на почтовый ящик.</label>
<
input type="submit" name="submit" value="Register" class="bt_register" />
</
form>
</
div>
<?php
else:
?>
<div class="left">
<
h1>Members panel</h1>
<
p>Теперь вы можете добавлять обявления</p><br /><a href="http://vtrigazety.ru/index.php?show=sell">Ваши объявления</a><br /><br /><br />
<
a href="/?show=changepassword">СМЕНИТЬ ПАРОЛЬ</a><br />
<
p>----------</p>
<
a href="&logoff">ВЫХОД</a>
</
div>
<
div class="left right">
</
div>
<?php
endif;
}
else
// если юзер находится на освновном домене
{
if(!$_SESSION['id']):
?>
<div class="left">
<
form class="clearfix" action="" method="post">
<
h1>Вход на сайт / Login</h1>
<?php
if($_SESSION['msg']['login-err'])
{
echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
unset($_SESSION['msg']['login-err']);
}
?>
<label class="grey" for="username">Логин:</label>
<
input class="field" type="text" name="username" id="username" value="" size="23" />
<
label class="grey" for="password">Пароль:</label>
<
input class="field" type="password" name="password" id="password" size="23" />
<
label><input name="rememberMe" id="rememberMe" type="checkbox" value="1" /> Запомнить меня!</label>
<
div class="clear"></div>
<
input type="submit" name="submit" value="Login" class="bt_login" />
</
form>
</
div>
<
div class="left right">
<
form action="" method="post">
<
h1>Нет логина с паролем? Зарегистрируйся!</h1>
<?php
if($_SESSION['msg']['reg-err'])
{
echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
unset($_SESSION['msg']['reg-err']);
}
if($_SESSION['msg']['reg-success'])
{
echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
unset($_SESSION['msg']['reg-success']);
}
?>
<label class="grey" for="username">Ваш будущий логин:</label>
<
input class="field" type="text" name="username" id="username" value="" size="23" />
<
label class="grey" for="email">Ваш почтовый ящик:</label>
<
input class="field" type="text" name="email" id="email" size="23" />
<
label>Вы получите свой пароль на почтовый ящик.</label>
<
input type="submit" name="submit" value="Register" class="bt_register" />
</
form>
</
div>
<?php
else:
?>
<div class="left">
<
h1>Members panel</h1>
<
p>Теперь вы можете добавлять обявления</p><br /><a href="http://vtrigazety.ru/index.php?show=sell">Ваши объявления</a><br /><br /><br />
<
a href="/?show=changepassword">СМЕНИТЬ ПАРОЛЬ</a><br />
<
p>----------</p>
<
a href="?logoff">ВЫХОД</a>
</
div>
<
div class="left right">
</
div>
<?php
endif;
}
?>
</div>
</
div>
<
div class="tab"> <center><div class="zamok">
<
ul class="login">
<
li class="left"> </li>
<
li id="toggle">
<
a id="open" class="open" href="#"><?php echo $_SESSION['id']?'Профиль | Настройка':'Вход | Зарегистрироваться';?></a>
<
a id="close" style="display: none;" class="close" href="#">Спрятать панель!</a>
</
li>
<
li class="right"> </li>
</
ul>
</
div></center>
</
div>
</
div>

Спустя 34 минуты, 45 секунд (13.07.2010 - 07:11) Семён написал(а):
В фоновом режиме (ajax) производить действия на других доменах.

Спустя 42 минуты, 5 секунд (13.07.2010 - 07:53) Vantedur написал(а):
Цитата (Семён @ 13.07.2010 - 04:11)
В фоновом режиме (ajax) производить действия на других доменах.

И что же это будет за запрос если учесть то что любой зарегистрированный юзер может создать свой под домен, ну то есть юзер если хочет может свою газету создать, или если ему не хочется или нету времени вести свою линейку, то он может писать в чужие газеты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.