За последние 24 часа нас посетили 20222 программиста и 1718 роботов. Сейчас ищут 1829 программистов ...

Непонятки с куками

Тема в разделе "PHP для новичков", создана пользователем PsiMagistr, 20 фев 2012.

  1. PsiMagistr

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

    С нами с:
    20 фев 2012
    Сообщения:
    5
    Симпатии:
    0
    Ребята, у меня такой вопрос. Есть два файла на PHP. Анализатор и активатор. Их смысл генерировать письмо активации сохраняя данные в куках пользователя. Потом когда пользователь нажмет активациоонную ссылку в своем письме, данные из куков перенесутся в базу, а куки удалятся...

    Анализатор ставит куки...

    Вот код:
    Код (Text):
    1.  
    2. <?php
    3.  
    4. if (isset($_POST['login'])) /* Если массив есть */
    5. {
    6. include("connection.php");
    7.  
    8. if ($_POST['login'] == '' OR $_POST['pass'] == '' OR $_POST['repass'] == '' OR $_POST['FirstName'] == '' OR $_POST['SirName'] == '' OR $_POST['LastName'] == '') /* Проверка на пустоту */
    9.  
    10. {
    11. header('Refresh: 1; URL=registration.php');
    12. $Descript = '<H3 align="center">Вы не заполнили все поля!</H3>
    13. <p align="center">Через 1 сек. вы будете перенаправлены на страницу регистрации</p>';
    14. /* exit; */
    15. }
    16.  
    17. else if($_POST['pass'] != $_POST['repass']) /* Проверка на неравенство паролей */
    18. {
    19. header('Refresh: 1; URL=registration.php');
    20. $Descript = '<H3 align="center">Пароли не совпадают.</H3>
    21. <p align="center">Через 1 сек. вы будете перенаправлены на страницу регистрации</p>';
    22. /* exit; */
    23. }
    24.  
    25. else
    26. {
    27. $result = mysql_query("SELECT FirstName FROM avtors WHERE AvtorMail='".$_POST['login']."'");
    28.  
    29. if (mysql_num_rows($result)>0) /* Проверка на наличие зписи */
    30. {
    31. header('Refresh: 3; URL=registration.php');
    32. $Descript = '<H3 align="center">РЕГИСТРАЦИЯ НЕВОЗМОЖНА! Пользователь с таким адресом почты уже есть!</H3>
    33. <p align="center">Через 3 сек. вы будете перенаправлены на регистрационную страницу нашего сайта.</p>';
    34. mysql_free_result($result);
    35. /* exit;  */
    36. }
    37. else
    38. {
    39. /* Кука */
    40. setcookie("login",$_POST['login'],time()+60*60);
    41. setcookie("FirstName",$_POST['FirstName'],time()+60*60);
    42. setcookie("SirName",$_POST['SirName'],time()+60*60);
    43. setcookie("LastName",$_POST['LastName'],time()+60*60);
    44. setcookie("pass",$_POST['pass'],time()+60*60);
    45. include("E-mailfunc.php");
    46.  
    47. send_mime_mail('Автор письма',
    48.                'sender@site.ru',
    49.                'Получатель письма',
    50.                $_POST['login'],
    51.                'utf-8',  // кодировка, в которой находятся передаваемые строки
    52.                'utf-8', // кодировка, в которой будет отправлено письмо
    53.                'Письмо-уведомление',
    54.                "<html>
    55. <head>
    56. <title>Активация</title>
    57. </head>
    58. <body>
    59. <p>Здравствуйте, уважаемый пользователь ".$_POST['FirstName']." ".$_POST['LastName'].".</p>
    60. Вы получили тестовое письмо.<br>
    61. Ссылка ниже поведет Вас на активационную страницу.<br>
    62. <p><a href='http://rifma.16mb.com/activation.php'>Активация</a></p>
    63. Если Вы не регистрировались на нашем аккаунте, просто проигнорируйте данное письмо.<br>
    64. </body>
    65. </html>
    66. ");
    67. mysql_free_result($result);
    68. header('Refresh: 1; URL=index.php');
    69. $Descript = '<H3 align="center">Благодарим Вас за регистрацию!</H3>
    70. <p align="center">Мы отправили Вам письмо с ссылкой на активацию.</p>';
    71. }
    72. }
    73.  
    74.  
    75.  
    76. }
    77. else
    78. {
    79. header("Location:index.php");
    80. }
    81. ?>
    82.  
    83.  
    84. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    85. "http://www.w3.org/TR/html4/loose.dtd">
    86. <html>
    87. <head>
    88. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    89. <title>Untitled Document</title>
    90. </head>
    91. <body>
    92. <?php
    93. echo("$Descript");
    94. ?>
    95. </body>
    96. </html>
    Активатор снимает с них информацию и пишет в бд, потом удалаяет куки. Вот его код.

    Код (Text):
    1.  
    2. <?php
    3. if (isset($_COOKIE['login']))
    4. {
    5. include("connection.php");
    6. mysql_query("INSERT INTO avtors (FirstName, SirName,LastName,AvtorMail,Password) VALUES ('".$_COOKIE['FirstName']."','".$_COOKIE['SirName']."','".$_COOKIE['LastName']."','".$_COOKIE['login']."','".$_COOKIE['pass']."')");
    7. setcookie("login","",time()-600*100);
    8. setcookie("FirstName","",time()-600*100);
    9. setcookie("SirName","",time()-600*100);
    10. setcookie("LastName","",time()-600*100);
    11. setcookie("pass","",time()-600*100);
    12. header('Refresh: 10; URL=index.php');
    13. echo('<html>
    14. <head>
    15. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    16. <title>Untitled Document</title>
    17. </head>
    18. <body>
    19. <H3 align="center">Ваш аккаунт активирован! </H3>
    20. <p align="center">Через 10 сек. вы будете перенаправлены на главную страницу нашего сайта, где сможете выполнить вход.</p>
    21. </body>
    22. </html>');
    23. }
    24. else
    25. {
    26. header('Refresh: 0; URL=index.php');
    27. }
    28. ?>

    САмое интересное состоит в том, что на моей машине все работает как часы. На других активатор ведет себя так словно никто не ставил куки. То есть редирект... КАким образом можно объяснить разное поедение PHP у разных людей. Спрашивал разрешены ли куки, говорят - да.
     
  2. jenya777777

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

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Можно сделать по другому, после регистрации занеси в базу все данные пользователя и добавь поле activation = 0. Если человек перейдет по ссылке с письма тогда активируй его и давай залогиниваться. Тогда проблемы с куками автоматом уйдут