За последние 24 часа нас посетили 15804 программиста и 1666 роботов. Сейчас ищут 858 программистов ...

cookie!! помогите решить!

Тема в разделе "PHP для новичков", создана пользователем kolya7774, 12 окт 2011.

  1. kolya7774

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

    С нами с:
    3 мар 2011
    Сообщения:
    98
    Симпатии:
    0
    Есть форма авторизации:
    HTML:
    1. <h1>Авторизация</h1>
    2. <form action="" method="post" name="form_authorization">
    3.     <p><label class="label">Ваше имя: </label><input name="user2" type="text" value="<?php echo $user2; ?>" size="30" maxlength="100" />
    4.     <span style="color:#F03; margin-left:15px;"><?php echo $error4;?></span></p></p>
    5.     <p><label class="label">Ваш пароль: </label><input name="user_pass" type="password" size="30" maxlength="10" />
    6.     <span style="color:#F03; margin-left:15px;"><?php echo $error5;?></span></p></p>
    7.     <p><label><input name="rememberme" type="checkbox" value="1" />&nbsp;Запомнить меня</label></p>
    8.     <p><input name="authorization" type="submit" value="Войти" /></p>
    9.     <span style="color:#F63;"><?php echo $error; ?></span>
    10. </form>
    Есть обработчик, который размешен с самого верха:
    PHP:
    1. if (isset($authorization))
    2. {
    3. if (empty($user2)) {$error4 = "Заполните поле: \"Ваше имя\".";}
    4. elseif (!empty($user2) && !preg_match("/^[\sа-я\sА-Я\sa-z\sA-Z\s0-9\s]{3,50}$/u", $user2)) {$error4 = "Ваше имя должно быть не меньше 3 символов (букв или цифр).";}
    5. else {
    6.         $user2 = trim($user2);
    7.         $user2 = htmlspecialchars($user2);
    8.         $user2 = stripslashes($user2);
    9.         $user2 = mysql_real_escape_string($user2);
    10.         }
    11.  
    12. if (empty($user_pass)) {$error5 = "Заполните поле: \"Ваш пароль\".";}
    13. elseif (!empty($user_pass) && !preg_match("/^[а-яА-Яa-zA-Z0-9]{3,6}$/u", $user_pass)) {$error5 = "Пожалуйста, введите правильно свой пароль.";}
    14. else {
    15.         $user_pass = trim($user_pass);
    16.         $user_pass = htmlspecialchars($user_pass);
    17.         }
    18.        
    19. $result2 = mysql_query("SELECT * FROM registration WHERE user='$user2' or user_pass='".md5($user_pass)."' LIMIT 1", $db) or die("<p>Ошибка!<br />Не удалось проверить Ваши данные в базе. Попробуйте позднее!</p>");
    20. $myrow2 = mysql_fetch_array($result2);
    21. if ($myrow2['user'] !== $user2 && !$error4) {$error4 = "Извините, введённое вами имя неверное.";}
    22. if ($myrow2['user_pass'] !== md5($user_pass) && !$error5){$error5 = "Извините, введённый вами пароль не верный.";}
    23. if (!$error4 && !$error5 && $myrow2['user']==$user2 && $myrow2['user_pass']==md5($user_pass))
    24.     {
    25.         $_SESSION['user2'] = $myrow2['user'];
    26.         $_SESSION['id'] = $myrow2['id'];
    27.         $_SESSION['user_pass'] = $myrow2['user_pass'];
    28.         echo "<p>Вы успешно вошли на сайт!</p>";
    29.         }
    30.         else {$error = "<p>Вы ввели неверное имя или пароль.</p>";}
    31. ;}
    Есть скрипт для проверки существования юзера (скрипт размещен после формы):

    <?php
    if (!isset($_SESSION['user2']) && empty($_SESSION['user2']) || !isset($_SESSION['id']) && empty($_SESSION['id']))
    {
    echo "<p>Вы вошли на сайт, как гость</p>";
    }
    else {
    echo "<p>Вы вошли на сайт, как ".$_SESSION['user2']."<br /><a href='?exit'>Выйти</a></p>";
    }
    ?>[/php]

    1) Как мне правильно сделать запоминание юзера2 ("Запомнить меня" в форме) через куки. Я пробовал это сам сделать, но когда закрываю браузер и потом снова захожу, то приходится снова и снова вводить данные.

    2) И еще вопрос, когда я ввожу данные и нажимаю отправить, браузер автоматом спрашивает запомнить пароль, это не то самое что куки, ведь потом поля авто заполненные?

    Я делал так, после ($_SESSION['user2'] = $myrow2['user'];$_SESSION['id'] = $myrow2['id'];$_SESSION['user_pass'] = $myrow2['user_pass'];) писал
    PHP:
    1.  
    2. if (isset($_POST['rememberme']))
    3. {
    4. setcookie("user2", $myrow2['user'], time()+9999999);
    5. setcookie("user_pass", $myrow2['user_pass'], time()+9999999);
    6. }
    .
    Но после отправки мне выводилась ошибка.

    Что подскажите, друзья.
     
  2. kolya7774

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

    С нами с:
    3 мар 2011
    Сообщения:
    98
    Симпатии:
    0
    закрыть вопрос