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

куки.....

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

  1. TROODON

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

    С нами с:
    4 ноя 2007
    Сообщения:
    112
    Симпатии:
    0
    PHP:
    1.             setcookie("login", "$_POST[name]", time()+60*60*24*30);
    2.             setcookie("pass", "$_POST[pass]", time()+60*60*24*30);
    3.             echo "Привет :  ".@$_COOKIE['login']."!";
    сначало на локалке работало всё прекрасно но как только перенёс на сервер стало писать не "Привет ТЕСТ!" а "Привет !"
    в чём косяк?


    PS на локалке PHP5, a на сервере PHP 4
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Удивительно, что Вы time()+60*60*24*3 в кавычки еще не заключили.
    Попробуйте так:
    PHP:
    1. <?php
    2. setcookie("login", $_POST["name"], time()+60*60*24*30);
    3. setcookie("pass", $_POST["pass"], time()+60*60*24*30);
    4. echo "Привет :  ".@$_COOKIE['login']."!";
    5. ?>
     
  3. TROODON

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

    С нами с:
    4 ноя 2007
    Сообщения:
    112
    Симпатии:
    0
    Kreker
    извините я не понял в чём различия с моим кодов? если вы про " <?php" и " ?>" то они присуствуют я часть кода выложил простокоторая отвечает за сохранение
     
  4. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Смотри как $_POST["name"] записан

    Найди 10 отличий :)
     
  5. TROODON

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

    С нами с:
    4 ноя 2007
    Сообщения:
    112
    Симпатии:
    0
    HTML:
    1. <form  method="post" enctype="multipart/form-data">
    2. <tr><td width =100>Имя*:</td><td><input type="text" name="name" maxlength="15" /></td></tr>
    3. <tr><td width =100>Пароль*:</td><td><input type="password" name="pass"/></td></tr>
    4. <tr><td width =100><input type='submit' name="enter" value='Войти' title='Войти' /></td></tr>
    5. </form>
    всё нормально :roll:
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ваш вариант:
    PHP:
    1. <?php
    2. setcookie("login", "$_POST[name]", time()+60*60*24*30);
    3. ?>
    Мой вариант:
    PHP:
    1. <?php
    2. setcookie("login", $_POST["name"], time()+60*60*24*30);
    3. ?>
    Смотрите на кавычки у поста. У вас name может определяться как константа, потому что без кавычек. Это зависит от настроек хостинга. Сам пост в кавычки брать не нужно. Используйте мой вариант - он правильный.
    В начало файла киньте error_reporting(E_ALL);
     
  7. TROODON

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

    С нами с:
    4 ноя 2007
    Сообщения:
    112
    Симпатии:
    0
    всё равно не помогает....(( на локалке всё отлично на серваке скрипт авторизировать отказывает
    на сервере php4 а на локалке php5 может с этим связано?
    Ещё при авторизации сравнивает получненое постом и БД и БД и сама страница в UTF-8

    ЗЫ код

    PHP:
    1. <?php
    2. include "header.php";
    3. if (isset($_GET['do'])){
    4. $do = $_GET['do'];
    5. }
    6. include "left.php";
    7.  
    8. if ($_POST[enter]){
    9.         if(!get_magic_quotes_gpc())
    10.         {
    11.             $password = $_POST['pass'];
    12.             $name     = mysql_escape_string($_POST['name']);
    13.         } else {
    14.             $password = stripslashes($_POST['pass']);
    15.             $name     = $_POST['name'];
    16.         }
    17.  
    18.         $password = md5($password);
    19.         $query = "SELECT * FROM `users` WHERE `name` = '".$name."' AND `pass` = '".$password."'";
    20.         $result = mysql_query($query);
    21.         if(!$result) exit("Ошибка°");
    22.  
    23.         if(mysql_num_rows($result))
    24.         {
    25.         $_POST[pass]=md5($_POST[pass]);
    26.             setcookie("login", $_POST["name"], time()+60*60*24*30);
    27.             setcookie("pass", $_POST["pass"], time()+60*60*24*30);
    28.             echo "Привет :  ".@$_COOKIE['login']."!";
    29.             echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
    30.         } else {
    31.             echo("<span style='margin-left:90px;'>Неверный пароль</span>");
    32.  
    33.         }
    34. }
    35. if($do = 'exit')    {
    36. setcookie("login", "", time()+30);
    37. setcookie("pass", "", time()+30);
    38. }
    39. $smarty->display('user_auth.tpl');
    40. include ("footer.php");
    41. ?>
    в config.php (включён во все файлы)

    PHP:
    1. if (isset($_COOKIE['login'])){
    2.  
    3.         $query = "SELECT * FROM `users` WHERE `name` = '".$_COOKIE['login']."' AND `pass` = '".$_COOKIE['pass']."'";
    4.  
    5.         $result = mysql_query($query);
    6.  
    7.         $row = mysql_fetch_array($result);
    8.  
    9.         if(!$result) exit("Ошибка");
    10.  
    11.         if(mysql_num_rows($result))
    12.  
    13.         {
    14.  
    15.         $user_name= $row["name"];
    16.  
    17.         $user_id= $row["id"];
    18.  
    19.  
    20.  
    21.         }
    посоветуйте как решить проблему....
     
  8. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Учите что такое куки и как они работают прежде чем ваять такое чудо.
     
  9. Professor

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

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Посоветовать по твоему случаю конкретно ничего немогу, но. Твой скрипт уязвим для SQL-инъекций. Если в поле name ввести "Professor/*", и get_magic_quotes_gpc() вернёт TRUE, я авторизируюсь с любым паролем, или совсем без него. Я так выиграл в споре 3 бутылки пива)
     
  10. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Скрипты в которых устанавливаешь и выводишь значение находятся в одной папке?
     
  11. TROODON

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

    С нами с:
    4 ноя 2007
    Сообщения:
    112
    Симпатии:
    0
    в одной

    но хтмл код в другой но тама смарти выводит

    защита пока мне не особа важна мне счейчас бы сделать так чтобы по кукав авторизировало а потом уже можно и с защитой покапаться