За последние 24 часа нас посетили 18792 программиста и 1638 роботов. Сейчас ищет 961 программист ...

сессии на поддомене с основного домена

Тема в разделе "Прочие вопросы по PHP", создана пользователем Vantedur, 9 июл 2010.

  1. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    Как сделать перенос сессии с домена на поддомены?

    Все тодже проект но новый вопрос.

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

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

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    дежавю? оО
     
  3. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    да я так и не решил этот трабл
     
  4. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    покажи код где сессии используешь и как их стартуешь
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    session_set_cookie_params
     
  6. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    index.php
    Код (Text):
    1. <?php
    2.  
    3.  
    4.  
    5.  
    6. if (isset($_GET['act']))
    7.  
    8. {
    9.     require_once('header.php');
    10.  
    11.     require('login.php');
    12.    
    13.     require_once('action.php');
    14.    
    15. }
    16.  
    17. else
    18. {
    19.    
    20. if (!isset($_GET['show'])=='')
    21.  
    22. {
    23.    
    24.     require_once('header.php');
    25.  
    26.     require('login.php');
    27.  
    28.     require_once('show.php');
    29.  
    30. }
    31.  
    32. elseif (!isset($_GET['blog'])=='')
    33.  
    34. {
    35.    
    36.  
    37.  
    38.     require_once('blogget.php');
    39.    
    40.  
    41. }
    42.  
    43.  
    44.  
    45. else
    46. {
    47.     require_once('header.php');
    48.  
    49.     require('login.php');
    50.    
    51.    
    52.     require_once('main.php');
    53. }
    54.  
    55. }
    56.  
    57.  
    58.  
    59. ?>
    60.  
     
  7. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    login.php
    Код (Text):
    1. <?php
    2.  
    3. define('INCLUDE_CHECK',true);
    4.  
    5. require 'connect.php';
    6.     require_once('action.php');
    7. // Those two files can be included only if INCLUDE_CHECK is defined
    8.  
    9.  
    10. session_name('tzLogin');
    11. // Starting the session
    12.  
    13. session_set_cookie_params(2*7*24*60*60);
    14. // Making the cookie live for 2 weeks
    15.  
    16.  
    17.  
    18. if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
    19. {
    20.     // If you are logged in, but you don't have the tzRemember cookie (browser restart)
    21.     // and you have not checked the rememberMe checkbox:
    22.  
    23.     $_SESSION = array();
    24.     session_destroy();
    25.    
    26.     // Destroy the session
    27. }
    28.  
    29.  
    30. if(isset($_GET['logoff']))
    31. {
    32.     $_SESSION = array();
    33.     session_destroy();
    34.    
    35.     header("Location: index.php");
    36.     exit;
    37. }
    38.  
    39. if($_POST['submit']=='Login')
    40. {
    41.     // Checking whether the Login form has been submitted
    42.    
    43.     $err = array();
    44.     // Will hold our errors
    45.    
    46.    
    47.     if(!$_POST['username'] || !$_POST['password'])
    48.         $err[] = 'All the fields must be filled in!';
    49.    
    50.     if(!count($err))
    51.     {
    52.         $_POST['username'] = mysql_real_escape_string($_POST['username']);
    53.         $_POST['password'] = mysql_real_escape_string($_POST['password']);
    54.         $_POST['rememberMe'] = (int)$_POST['rememberMe'];
    55.        
    56.         // Escaping all input data
    57.  
    58.         $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM users WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
    59.  
    60.         if($row['usr'])
    61.         {
    62.             // If everything is OK login
    63.            
    64.             $_SESSION['usr']=$row['usr'];
    65.             $_SESSION['id'] = $row['id'];
    66.             $_SESSION['rememberMe'] = $_POST['rememberMe'];
    67.            
    68.             // Store some data in the session
    69.            
    70.             setcookie('tzRemember',$_POST['rememberMe']);
    71.         }
    72.         else $err[]='Wrong username and/or password!';
    73.     }
    74.    
    75.     if($err)
    76.     $_SESSION['msg']['login-err'] = implode('<br />',$err);
    77.     // Save the error messages in the session
    78.  
    79.     header("Location: index.php");
    80.     exit;
    81. }
    82. else if($_POST['submit']=='Register')
    83. {
    84.     // If the Register form has been submitted
    85.    
    86.     $err = array();
    87.    
    88.     if(strlen($_POST['username'])<4 || strlen($_POST['username'])>32)
    89.     {
    90.         $err[]='Логин должен быть длинной от 4 до 20 символов!';
    91.     }
    92.    
    93.     if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
    94.     {
    95.         $err[]='Вы используете недопустимые символы!';
    96.     }
    97.    
    98.     if(!checkEmail($_POST['email']))
    99.     {
    100.         $err[]='Вы указали недопустимый почтовый адрес!';
    101.     }
    102.    
    103.     if(!count($err))
    104.     {
    105.         // If there are no errors
    106.        
    107.         $pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
    108.         // Generate a random password
    109.        
    110.         $_POST['email'] = mysql_real_escape_string($_POST['email']);
    111.         $_POST['username'] = mysql_real_escape_string($_POST['username']);
    112.         // Escape the input data
    113.        
    114.        
    115.         mysql_query("   INSERT INTO users(usr,pass,email,regIP,dt)
    116.                         VALUES(
    117.                        
    118.                             '".$_POST['username']."',
    119.                             '".md5($pass)."',
    120.                             '".$_POST['email']."',
    121.                             '".$_SERVER['REMOTE_ADDR']."',
    122.                             NOW()
    123.                            
    124.                         )");
    125.        
    126.         if(mysql_affected_rows($link)==1)
    127.         {
    128.             send_mail(  'support@vtrigazety.ru',
    129.                         $_POST['email'],
    130.                         'Password from vtrigazety.ru for '.$_POST['username'],
    131.                         'Для того чтобы сменить пароль воспользуйтесь этой формой: https://vtrigazety.ru/?show=changepassword
    132.                          На данный момент у вашего аккауда пароль: '.$pass );
    133.  
    134.             $_SESSION['msg']['reg-success']='На ваш почтовый ящик был выслан пароль!';
    135.         }
    136.         else $err[]='Такой логин уже существует!';
    137.     }
    138.  
    139.     if(count($err))
    140.     {
    141.         $_SESSION['msg']['reg-err'] = implode('<br />',$err);
    142.     }  
    143.    
    144.     header("Location: index.php");
    145.     exit;
    146. }
    147.  
    148. $script = '';
    149.  
    150. if($_SESSION['msg'])
    151. {
    152.     // The script below shows the sliding panel on page load
    153.    
    154.     $script = '
    155.     <script type="text/javascript">
    156.    
    157.         $(function(){
    158.        
    159.             $("div#panel").show();
    160.             $("#toggle a").toggle();
    161.         });
    162.    
    163.     </script>';
    164.    
    165. }
    166. ?>
    167.  
    168.  
    169.  
    170.    
    171.     <?php echo $script; ?>
    172. </head>
    173.  
    174. <body>
    175.  
    176. <!-- Panel -->
    177. <div id="toppanel">
    178.     <div id="panel">
    179.         <div class="content clearfix">
    180.             <div class="left">
    181.                 <h2>В три газеты</h2>
    182.                 <p class="grey"> На сайте В три газеты вы можете публиковать новости, полезную информацию или просто вести личный блог, любой пользователь обладает возможностью опубликовать информацию в любую из интересующей его газету, однако, владелиц газеты может закрыть доступ на публикацию информации, в этом случае ваша публикацию поступит к нему на модерацию.</p>
    183.                 <p class="grey">Для создания собственной газеты вам необходимо пройти регистрацию!</p>
    184.                 <p class="grey">Для публикации статей в чужих газетах без модерации обращайтесь к владельцам эллектронных газет с просьбой выдать вам статус журналиста!</p>
    185.                
    186.                
    187.                 <p class="grey">Email администрации сайта 1@dsns.ru</p><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><!--LiveInternet counter--><script type="text/javascript"><!--
    188. document.write("<a href='http://www.liveinternet.ru/click' "+
    189. "target=_blank><img src='//counter.yadro.ru/hit?t21.6;r"+
    190. escape(document.referrer)+((typeof(screen)=="undefined")?"":
    191. ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
    192. screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
    193. ";"+Math.random()+
    194. "' alt='' title='LiveInternet: показано число просмотров за 24"+
    195. " часа, посетителей за 24 часа и за сегодня' "+
    196. "border='0' width='88' height='31'><\/a>")
    197. //--></script><!--/LiveInternet--><br /><!-- begin of Top100 code -->
    198.  
    199. <img src="http://counter.rambler.ru/top100.cnt?2183797" alt="" width="1" height="1" border="0" />
    200.  
    201. <!-- end of Top100 code -->
    202. <!-- begin of Top100 logo -->
    203.  
    204. <a href="http://top100.rambler.ru/home?id=2183797">
    205. <img src="http://top100-images.rambler.ru/top100/banner-88x31-rambler-black2.gif" alt="Rambler's Top100"
    206. width="88" height="31" border="0" /></a>
    207.  
    208. <!-- end of Top100 logo -->
    209.  
    210.  
    211.  
    212.  
    213.             </div>
    214.            
    215.            
    216.             <?php
    217.            
    218.            
    219.            
    220.           if (!isset($_GET['blog'])=='')
    221.  
    222. {
    223.    
    224.  
    225.            
    226.            
    227.            
    228.            
    229.            
    230.            
    231.            
    232.            
    233.            
    234.            
    235.            
    236.            
    237.            
    238.            
    239.            
    240.            
    241.            
    242.            
    243.            
    244.            
    245.            
    246.            
    247.            
    248.             if(!$_SESSION['id']):
    249.            
    250.             ?>
    251.            
    252.             <div class="left">
    253.                 <!-- Login Form -->
    254.                 <form class="clearfix" action="" method="post">
    255.                     <h1>Вход на сайт / Login</h1>
    256.                    
    257.                     <?php
    258.                        
    259.                         if($_SESSION['msg']['login-err'])
    260.                         {
    261.                             echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
    262.                             unset($_SESSION['msg']['login-err']);
    263.                         }
    264.                     ?>
    265.                    
    266.                     <label class="grey" for="username">Логин:</label>
    267.                     <input class="field" type="text" name="username" id="username" value="" size="23" />
    268.                     <label class="grey" for="password">Пароль:</label>
    269.                     <input class="field" type="password" name="password" id="password" size="23" />
    270.                     <label><input name="rememberMe" id="rememberMe" type="checkbox"  value="1" /> &nbsp;Запомнить меня!</label>
    271.                     <div class="clear"></div>
    272.                     <input type="submit" name="submit" value="Login" class="bt_login" />
    273.                 </form>
    274.             </div>
    275.             <div class="left right">           
    276.                 <!-- Register Form -->
    277.                 <form action="" method="post">
    278.                     <h1>Нет логина с паролем? Зарегистрируйся!</h1>    
    279.                    
    280.                     <?php
    281.                        
    282.                         if($_SESSION['msg']['reg-err'])
    283.                         {
    284.                             echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
    285.                             unset($_SESSION['msg']['reg-err']);
    286.                         }
    287.                        
    288.                         if($_SESSION['msg']['reg-success'])
    289.                         {
    290.                             echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
    291.                             unset($_SESSION['msg']['reg-success']);
    292.                         }
    293.                     ?>
    294.                            
    295.                     <label class="grey" for="username">Ваш будущий логин:</label>
    296.                     <input class="field" type="text" name="username" id="username" value="" size="23" />
    297.                     <label class="grey" for="email">Ваш почтовый ящик:</label>
    298.                     <input class="field" type="text" name="email" id="email" size="23" />
    299.                     <label>Вы получите свой пароль на почтовый ящик.</label>
    300.                     <input type="submit" name="submit" value="Register" class="bt_register" />
    301.                 </form>
    302.             </div>
    303.            
    304.             <?php
    305.            
    306.            
    307.            
    308.            
    309.            
    310.            
    311.            
    312.            
    313.            
    314.            
    315.            
    316.            
    317.            
    318.            
    319.             else:
    320.            
    321.             ?>
    322.            
    323.             <div class="left">
    324.            
    325.             <h1>Members panel</h1>
    326.            
    327.             <p>Теперь вы можете добавлять обявления</p><br /><a href="http://vtrigazety.ru/index.php?show=sell">Ваши объявления</a><br /><br /><br />
    328.             <a href="/?show=changepassword">СМЕНИТЬ ПАРОЛЬ</a><br />
    329.             <p>----------</p>
    330.             <a href="&logoff">ВЫХОД</a>
    331.            
    332.             </div>
    333.            
    334.             <div class="left right">
    335.             </div>
    336.            
    337.             <?php
    338.             endif;
    339.        
    340.        
    341.        
    342.        
    343.        
    344.        
    345.        
    346.        
    347.        
    348.        
    349.         }
    350.  
    351. else
    352. {
    353.        
    354.        
    355.              
    356.            
    357.            
    358.            
    359.            
    360.            
    361.            
    362.            
    363.            
    364.            
    365.            
    366.            
    367.            
    368.            
    369.             if(!$_SESSION['id']):
    370.            
    371.             ?>
    372.            
    373.             <div class="left">
    374.                 <!-- Login Form -->
    375.                 <form class="clearfix" action="" method="post">
    376.                     <h1>Вход на сайт / Login</h1>
    377.                    
    378.                     <?php
    379.                        
    380.                         if($_SESSION['msg']['login-err'])
    381.                         {
    382.                             echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
    383.                             unset($_SESSION['msg']['login-err']);
    384.                         }
    385.                     ?>
    386.                    
    387.                     <label class="grey" for="username">Логин:</label>
    388.                     <input class="field" type="text" name="username" id="username" value="" size="23" />
    389.                     <label class="grey" for="password">Пароль:</label>
    390.                     <input class="field" type="password" name="password" id="password" size="23" />
    391.                     <label><input name="rememberMe" id="rememberMe" type="checkbox"  value="1" /> &nbsp;Запомнить меня!</label>
    392.                     <div class="clear"></div>
    393.                     <input type="submit" name="submit" value="Login" class="bt_login" />
    394.                 </form>
    395.             </div>
    396.             <div class="left right">           
    397.                 <!-- Register Form -->
    398.                 <form action="" method="post">
    399.                     <h1>Нет логина с паролем? Зарегистрируйся!</h1>    
    400.                    
    401.                     <?php
    402.                        
    403.                         if($_SESSION['msg']['reg-err'])
    404.                         {
    405.                             echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
    406.                             unset($_SESSION['msg']['reg-err']);
    407.                         }
    408.                        
    409.                         if($_SESSION['msg']['reg-success'])
    410.                         {
    411.                             echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
    412.                             unset($_SESSION['msg']['reg-success']);
    413.                         }
    414.                     ?>
    415.                            
    416.                     <label class="grey" for="username">Ваш будущий логин:</label>
    417.                     <input class="field" type="text" name="username" id="username" value="" size="23" />
    418.                     <label class="grey" for="email">Ваш почтовый ящик:</label>
    419.                     <input class="field" type="text" name="email" id="email" size="23" />
    420.                     <label>Вы получите свой пароль на почтовый ящик.</label>
    421.                     <input type="submit" name="submit" value="Register" class="bt_register" />
    422.                 </form>
    423.             </div>
    424.            
    425.             <?php
    426.            
    427.            
    428.            
    429.            
    430.            
    431.            
    432.            
    433.            
    434.            
    435.            
    436.            
    437.            
    438.            
    439.            
    440.             else:
    441.            
    442.             ?>
    443.            
    444.             <div class="left">
    445.            
    446.             <h1>Members panel</h1>
    447.            
    448.             <p>Теперь вы можете добавлять обявления</p><br /><a href="http://vtrigazety.ru/index.php?show=sell">Ваши объявления</a><br /><br /><br />
    449.             <a href="/?show=changepassword">СМЕНИТЬ ПАРОЛЬ</a><br />
    450.             <p>----------</p>
    451.             <a href="?logoff">ВЫХОД</a>
    452.            
    453.             </div>
    454.            
    455.             <div class="left right">
    456.             </div>
    457.            
    458.             <?php
    459.             endif;
    460.             }
    461.        
    462.        
    463.        
    464.        
    465.        
    466.             ?>
    467.         </div>
    468.     </div> <!-- /login --> 
    469.  
    470.     <!-- The tab on top -->
    471.    
    472.     <div class="tab">   <center><div class="zamok">
    473.         <ul class="login">
    474.             <li class="left">&nbsp;</li>
    475.            
    476.             <li id="toggle">
    477.                 <a id="open" class="open" href="#"><?php echo $_SESSION['id']?'Профиль | Настройка':'Вход | Зарегистрироваться';?></a>
    478.                 <a id="close" style="display: none;" class="close" href="#">Спрятать панель!</a>         
    479.             </li>
    480.             <li class="right">&nbsp;</li>
    481.         </ul>
    482.     </div></center> <!-- / top -->
    483.     </div>
    484. </div> <!--panel -->
     
  8. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    железка centos5.x + ISPmanager light
     
  9. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Код (Text):
    1. session_set_cookie_params(2*7*24*60*60);
    2. // Making the cookie live for 2 weeks
    ну кому я говорил про путь и продомены? ...

    Код (Text):
    1. session_set_cookie_params(2*7*24*60*60, "/", ".domain.ru");
    2. // Making the cookie live for 2 weeks
    и поехали :)
     
  10. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    не работает
     
  11. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    все по перечитывал, все по перепробовал, все равно стою в тупике.
    в общем такая петрушка.
    Скрипт пропускает одну авторизацию на любом из поддоменов или на главном домене, дальше пропускать отказывается.

    PHP:
    1. ini_set('session.use_trans_sid', true);
    2. if ($_COOKIE['session_id'])
    3. {
    4.     session_id($_COOKIE['session_id']);
    5. }
    6. session_name('tzLogin');
    7. ini_set('session.cookie_domain', $_SERVER['HTTP_HOST']);
    8. session_set_cookie_params(2*7*24*60*60, '/', '.vtrigazety.ru');
    9. echo '<br />session_id: ' . session_id() . '<br />';
    10. $_SESSION['usr']=$row['usr'];
    11. $_SESSION['id'] = $row['id'];
    12. $_SESSION['rememberMe'] = $_POST['rememberMe'];
    13. setcookie('session_id', session_id(), time()+3600, '/', '.vtrigazety.ru');
    14. 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

    уже не знаю что делать с этим скриптом. голова кругом идет.
     
  12. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    оказалось надо просто прописать в аксес php_value session.cookie_domain ".vtrigazety.ru"