Как сделать перенос сессии с домена на поддомены? Все тодже проект но новый вопрос. Юзер авторизовывается на главной но когда попадает на блог сессия заканчивает свое существование, как сделать ее дублирование? _http://vtrigazety.ru место авторизации (p.s. авторизация доступна на всех страницах и поддоменах) _http://jquery.vtrigazety.ru блоги которые генерятся из _http://vtrigazety.ru/?blog=jquery при помощи .htaccess Код (Text): RewriteEngine On RewriteCond %{HTTP_HOST} ^(.{3,})\.vtrigazety\.ru$ RewriteRule (.*) http://vtrigazety.ru/index.php?blog=%1&uri=%{REQUEST_URI} [P,L]
index.php Код (Text): <?php if (isset($_GET['act'])) { require_once('header.php'); require('login.php'); require_once('action.php'); } else { if (!isset($_GET['show'])=='') { require_once('header.php'); require('login.php'); require_once('show.php'); } elseif (!isset($_GET['blog'])=='') { require_once('blogget.php'); } else { require_once('header.php'); require('login.php'); require_once('main.php'); } } ?>
login.php Код (Text): <?php define('INCLUDE_CHECK',true); require 'connect.php'; require_once('action.php'); // Those two files can be included only if INCLUDE_CHECK is defined session_name('tzLogin'); // Starting the session session_set_cookie_params(2*7*24*60*60); // Making the cookie live for 2 weeks if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe']) { // If you are logged in, but you don't have the tzRemember cookie (browser restart) // and you have not checked the rememberMe checkbox: $_SESSION = array(); session_destroy(); // Destroy the session } if(isset($_GET['logoff'])) { $_SESSION = array(); session_destroy(); header("Location: index.php"); exit; } if($_POST['submit']=='Login') { // Checking whether the Login form has been submitted $err = array(); // Will hold our errors 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']; // Escaping all input data $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM users WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'")); if($row['usr']) { // If everything is OK login $_SESSION['usr']=$row['usr']; $_SESSION['id'] = $row['id']; $_SESSION['rememberMe'] = $_POST['rememberMe']; // Store some data in the session setcookie('tzRemember',$_POST['rememberMe']); } else $err[]='Wrong username and/or password!'; } if($err) $_SESSION['msg']['login-err'] = implode('<br />',$err); // Save the error messages in the session header("Location: index.php"); exit; } else if($_POST['submit']=='Register') { // If the Register form has been submitted $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)) { // If there are no errors $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']); // Escape the input data 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']) { // The script below shows the sliding panel on page load $script = ' <script type="text/javascript"> $(function(){ $("div#panel").show(); $("#toggle a").toggle(); }); </script>'; } ?> <?php echo $script; ?> </head> <body> <!-- Panel --> <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><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><!--LiveInternet counter--><script type="text/javascript"><!-- document.write("<a href='http://www.liveinternet.ru/click' "+ "target=_blank><img src='//counter.yadro.ru/hit?t21.6;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "' alt='' title='LiveInternet: показано число просмотров за 24"+ " часа, посетителей за 24 часа и за сегодня' "+ "border='0' width='88' height='31'><\/a>") //--></script><!--/LiveInternet--><br /><!-- begin of Top100 code --> <img src="http://counter.rambler.ru/top100.cnt?2183797" alt="" width="1" height="1" border="0" /> <!-- end of Top100 code --> <!-- begin of Top100 logo --> <a href="http://top100.rambler.ru/home?id=2183797"> <img src="http://top100-images.rambler.ru/top100/banner-88x31-rambler-black2.gif" alt="Rambler's Top100" width="88" height="31" border="0" /></a> <!-- end of Top100 logo --> </div> <?php if (!isset($_GET['blog'])=='') { if(!$_SESSION['id']): ?> <div class="left"> <!-- Login Form --> <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"> <!-- Register Form --> <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"> <!-- Login Form --> <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"> <!-- Register Form --> <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> <!-- /login --> <!-- The tab on top --> <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> <!-- / top --> </div> </div> <!--panel -->
Код (Text): session_set_cookie_params(2*7*24*60*60); // Making the cookie live for 2 weeks ну кому я говорил про путь и продомены? ... Код (Text): session_set_cookie_params(2*7*24*60*60, "/", ".domain.ru"); // Making the cookie live for 2 weeks и поехали
все по перечитывал, все по перепробовал, все равно стою в тупике. в общем такая петрушка. Скрипт пропускает одну авторизацию на любом из поддоменов или на главном домене, дальше пропускать отказывается. PHP: ini_set('session.use_trans_sid', true); if ($_COOKIE['session_id']) { session_id($_COOKIE['session_id']); } session_start(); session_name('tzLogin'); ini_set('session.cookie_domain', $_SERVER['HTTP_HOST']); session_set_cookie_params(2*7*24*60*60, '/', '.vtrigazety.ru'); echo '<br />session_id: ' . session_id() . '<br />'; $_SESSION['usr']=$row['usr']; $_SESSION['id'] = $row['id']; $_SESSION['rememberMe'] = $_POST['rememberMe']; setcookie('session_id', session_id(), time()+3600, '/', '.vtrigazety.ru'); setcookie('tzRemember',$_POST['rememberMe'], time()+3600, '/', '.vtrigazety.ru'); http://vtrigazety.ru/ http://ajax.vtrigazety.ru/ http://jquery.vtrigazety.ru/ Suhosin не стоит панеь isp manareg php-5.3.2-2.el5 уже не знаю что делать с этим скриптом. голова кругом идет.