За последние 24 часа нас посетили 35057 программистов и 1695 роботов. Сейчас ищут 1022 программиста ...

куки, почему не сохраняет?

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

  1. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    Всем привет =)

    Есть небольшая проблема
    один и тот же скрипт в одном месте записывает данные в куки, а вдругой папке тот же самый скрипт не записывает

    //Если пользователь хочет входить на сайт автоматически
    setcookie("login", $_POST['login'], time()+9999999);
    setcookie("password", $_POST['password'], time()+9999999);
    setcookie("auto", "yes", time()+9999999);
    setcookie("id", $myrow['id'], time()+9999999);

    оба файла обрашаются к файлу testreg.php (оба одинаковых) для проверки в обоих файлах testreg.php после записи куки вывела

    echo $_COOKIE['login']."<br>";
    echo $_COOKIE['password']."<br>";
    echo $_COOKIE['auto']."<br>";
    echo $_COOKIE['id']."<br>";

    в первом случае анологично ничего не выводит
    во втором случае выводит данные

    Не могу понять в чем дело, может в файле php.ini, хотя для проверки удалила его, увы нет?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Как обращаются инклудом? Если в разных директориях может пути не правильные?

    Удалила php.ini и как php запустился?
     
  3. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    не инклудом
    <form action="testreg.php">
    находятся в одной дериктории
     
  4. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    хм, а можно код целиком посмотреть? обоих файлов
     
  5. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    index.php
    Код (Text):
    1. <?php
    2. session_start();
    3.  
    4. include ("bd.php");
    5.  
    6. if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
    7. {
    8.    //если есть необходимые переменные
    9.    if ($_COOKIE['auto'] == 'yes')
    10.    {
    11.       // если пользователь желает входить автоматически, то запускаем сессии
    12.       $_SESSION['password'] = md5($_COOKIE['password'])."b3p6f";
    13.       $_SESSION['login']=$_COOKIE['login'];//сессия с логином
    14.       $_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
    15.    }   
    16. }
    17.  
    18. if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
    19. {
    20.    //если существет логин и пароль в сессиях, то проверяем их
    21.    $login = $_SESSION['login'];
    22.    $password = $_SESSION['password'];
    23.    
    24.    $result = mysql_query("SELECT id FROM users WHERE login = '$login' AND password = '$password'",$db);
    25.    $myrow = mysql_fetch_array($result);
    26. }
    27. ?>
    28.  
    29. <html>
    30. <head>
    31. <title>Главная страница</title>
    32. </head>
    33.  
    34. <body>
    35. <h2>Главная страница</h2>
    36.  
    37. <?php
    38. if (!isset($myrow['id']) or $myrow['id']=='')
    39. {
    40.    //проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа.
    41.    echo "<form action='testreg.php' method='post'>
    42.    <p>
    43.    <label>Ваш логин:<br></label>
    44.    <input name='login' type='text' size='15' maxlength='15'>
    45.    </p>
    46.    <p>
    47.    <label>Ваш пароль:<br></label>
    48.    <input name='password' type='password' size='15' maxlength='15'>
    49.    </p>
    50.    <p>
    51.    <input name='autovhod' type='checkbox' value='1' checked> Автоматический вход.
    52.    </p>
    53.    <p>
    54.    <input type='submit' name='submit' value='Войти'>
    55.    <br>
    56.    <a href='reg.php'>Зарегистрироваться</a>
    57.    <br>
    58.    <a href='send_pass.php'>Забыли пароль?</a>
    59.    </p>
    60.    </form>
    61.    <br>
    62. Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка доступна только зарегистрированным пользователям</a>";
    63. }
    64. else
    65. {
    66.    //при удачном входе пользователю выдается все, что расположено ниже между звездочками.
    67.    //************************************************************************************
    68.  
    69.    echo "
    70.    |<a href='page.php?id=$_SESSION[id]'>Моя страница</a>
    71.    |<a href='index.php'>Главная страница</a>
    72.    |<a href='all_users.php'>Список пользователей</a>
    73.    |<a href='exit.php'>Выход</a>
    74.    <br>
    75.    <br>
    76.  
    77.    Вы вошли на сайт, как $_SESSION[login]<br>
    78.  
    79.    <a href='http://tvpavlovsk.sk6.ru/'>Эта ссылка доступна только зарегистрированным пользователям</a>";
    80.  
    81.    //************************************************************************************
    82.    //при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.
    83. }
    84.  
    85. ?>
    86. </body>
    87. </html>
    testreg.php
    Код (Text):
    1.  
    2. <?php
    3. session_start();
    4.          
    5. if (isset($_POST['login']))    { $login = $_POST['login']; if ($login == '')       { unset($login);} }
    6. if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    7.  
    8. if (empty($login) or empty($password))
    9. {
    10.    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); //останавливаем выполнение сценариев
    11. }
    12.  
    13. //удаляем лишние пробелы
    14. $login = trim($login);
    15. $password = trim($password);
    16.  
    17. // подключаемся к базе
    18. include ("bd.php");
    19.  
    20. $password = md5($password);//шифруем пароль
    21. $password = $password."b3p6f";
    22. //можно добавить несколько своих символов по вкусу, например, вписав "b3p6f"
    23.  
    24. $result = mysql_query("SELECT * FROM users WHERE login = '$login' AND password = '$password' AND activation = '1'",$db); //извлекаем из базы все данные о пользователе с введенным логином
    25.  
    26. //мы дописали «AND activation = '1'», то есть пользователь будет искаться только среди активированных.
    27.  
    28. $myrow = mysql_fetch_array($result);
    29. if (empty($myrow['id']))
    30. {
    31. exit ("Извините, введённый вами логин или пароль неверный."); //останавливаем выполнение сценариев
    32. }
    33. else
    34. {
    35.           //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
    36.           $_SESSION['password']=$myrow['password'];
    37.       $_SESSION['login']=$myrow['login'];
    38.           $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
    39.          
    40. //Далее мы запоминаем данные в куки, для последующего входа.
    41. //ВНИМАНИЕ!!! ДЕЛАЙТЕ ЭТО НА ВАШЕ УСМОТРЕНИЕ, ТАК КАК ДАННЫЕ ХРАНЯТСЯ В КУКАХ БЕЗ ШИФРОВКИ
    42.  
    43. if (isset($_POST['autovhod'])){
    44. //Если пользователь хочет входить на сайт автоматически
    45. setcookie("auto", "yes", time()+9999999);
    46. setcookie("login", $_POST["login"], time()+9999999);
    47. setcookie("password", $_POST["password"], time()+9999999);
    48. setcookie("id", $myrow['id'], time()+9999999);
    49.  
    50. echo $_COOKIE['login']."<br>";
    51. echo $_COOKIE['password']."<br>";
    52. echo $_COOKIE['auto']."<br>";
    53. echo $_COOKIE['id']."<br>";
    54. }
    55. }  
    56.  
    57. //перенаправляем пользователя на главную страничку, там ему и сообщим об удачном входе
    58. echo "<meta http-equiv='Refresh' content='2; URL=index.php'>";
    59. ?>      
    вот точно такой же файл в корневом каталоге работает до момента записи в куки echo $_COOKIE не работает
    а в папке test работает

    до этого не работало mail() по такому же принципу в корневом не отправляло а в папке test да
    потом техподдержка хостинга подсказала что в файле php.ini проблемы исправила и заработало
    на минутку удалила php.ini, не сработало не выводит echo $_COOKIE
     
  6. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    ошибка найдена, видимо опыта маловато
    оказывается куки нужно выводить до HTML