За последние 24 часа нас посетили 62069 программистов и 1740 роботов. Сейчас ищут 877 программистов ...

авторизация на пхп

Тема в разделе "Вопросы от блондинок", создана пользователем Шаман, 20 июн 2009.

Статус темы:
Закрыта.
  1. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    здравствуйте, подскажите пожалуйста, в чем косяк скрипта авторизации(он работает но не совсем) :cry:

    index.php
    Код (Text):
    1. <?
    2. //mysql connect
    3.     session_start();
    4.     $res=mysql_query("SELECT * FROM users WHERE login='".$_SESSION['login']."'
    5.     AND pass='".$_SESSION['pass']."'");
    6.     if(mysql_num_rows($res)!=1)
    7.     {
    8.     include('login.php');
    9.         }
    10.     else
    11.     {
    12.     echo"привет!";
    13.     }
    14.     ?>
    login.php
    Код (Text):
    1. <?
    2. //mysql connect
    3. session_start();
    4. if(!isset($_POST['ok']))
    5.     {
    6.     echo"<form method='POST' action='login.php'>
    7.     Login: <input type='text' name='login' size='15'>
    8.     Pwd: <input type='password' name='pass' size='15'>
    9.     <input type='submit' name='ok' value='Вход'></form>
    10.     ";
    11.     }
    12. else{    
    13.     $res=mysql_query("SELECT * FROM users WHERE login='".$_POST['login']."' AND password='".$_POST['pass']."'");
    14.     if(mysql_num_rows($res)!=1)
    15.     {
    16.     echo "Введены не верные логин или пароль";
    17.     }
    18.     else{
    19.     $_SESSION['login']=$_POST['login'];
    20.     $_SESSION['pass']=$_POST['pass'];
    21.     header('Location:../index.php'); // если вместо хедера я поставлю echo"hello"; то скрипт выведет его
    22.     }
    23. }
    24. ?>
    а мне надо чтобы echo выводилось в файле index.php, а он все равно выводит пустую форму. так что возможно косяк в первом файле. подскажите плз
     
  2. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Чтото все помешались прям на этой авторизации последнее время. :)

    1. Не совсем понятно, что значит "работает, но не совсем". Объясни.

    2. Ставь следующий код перед запросом:
    PHP:
    1. <?php
    2. var_dump("SELECT * FROM users WHERE login='".$_SESSION['login']."' AND pass='".$_SESSION['pass']."'")
    Тебе высветит запрос - попробуй этот запрос выполнить в пхпМайАдмин и посмотреть на результат
     
  3. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    PHP:
    1. <?
    2. // Замени это:
    3. if(!isset($_POST['ok']))
    4. // На это:
    5. if(empty($_POST['login']))
    6. // Должно работать
    7.  
     
  4. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    мне надо чтобы echo выводилось в файле index.php, а он все равно выводит пустую форму

    в каких файлах? я вставил в обоих и сайт ваще упал 0_о
     
  5. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    а вот что пхпмайадмин выдал:

     
  6. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    блин....
     
  7. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    сайт тожже умирает
     
  8. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    var_dump - это echo для программиста.
    А где у тебя запрос в скрипте? Поищи.


    ты хочешь, чтобы вывелось "привет!", да?
     
  9. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Шаман, что говорит перед смертью? завещание тебе(мне) оставил?
     
  10. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    в первом случае белый экран, во втором тока бэкграунд из шапки :)
     
  11. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Код (Text):
    1. error_repporting(E_ALL)
    в начало каждого скрипта
     
  12. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    если логин.пхп такой:

    Код (Text):
    1. <?
    2. //mysql connect
    3. session_start();
    4. if(!isset($_POST['ok']))
    5.    {
    6.     echo"<form method='POST' action='login.php'>
    7.    Login: <input type='text' name='login' size='15'>
    8.     Pwd: <input type='password' name='pass' size='15'>
    9.    <input type='submit' name='ok' value='Вход'></form>
    10.     ";
    11.    }
    12. else{    
    13.     $res=mysql_query("SELECT * FROM users WHERE login='".$_POST['login']."' AND password='".$_POST['pass']."'");
    14.     if(mysql_num_rows($res)!=1)
    15.    {
    16.     echo "Введены не верные логин или пароль";
    17.     }
    18.     else{
    19.     $_SESSION['login']=$_POST['login'];
    20.     $_SESSION['pass']=$_POST['pass'];
    21.     echo"вы ввели верный логин и пароль";
    22.     }
    23. }
    24. ?>
    то в бланке выводит что верный логин и пароль, но мне надо в индексе вместо инклуды формы
     
  13. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    опять тока шапка, после вставки
     
  14. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    это на самом сайте, а на денвере он постоянно матерится на сессию, типа хедеры уже отправлены
     
  15. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    привет, $_SESSION['login']

    всмысле поищи? я чето туплю, ты коды мои видишь
     
  16. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Простите за оффтоп, но пишите одним сообщением, а не тремя ( х*р поймёшь всё так )
    Код (Text):
    1. if(mysql_num_rows($res)!=1)
    2.    {
    3.     echo "Введены не верные логин или пароль";
    4.     }
    А это что? О_о Проверка существования полей что ли? :shock:
     
  17. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Шаман
    Аватарку на фото смените или удалите. Читайте правила.
     
  18. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
  19. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    да. скрипт взят от сюда http://addphp.ru/php_script/4-ispolzova ... v-php.html . подскажите как лучше, если это не вариант
     
  20. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Лучше написать свой скрипт и выложить здесь, а мы проверим. Лучше не браться за то, что не знаешь как делать:)
    На этом форуме прекрасно могут наводить на мысль, а со скриптами, которые с и-нета не очень дружат многие
     
  21. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    Вот мой скрипт, но он работает при условии, что сайт построен одним файлом с гет переменными для страниц, а при нескольких файлах работает некорректно

    login.php

    Код (Text):
    1. <form action="enter.php" method="post">
    2. Login:<input type="text" name="login"><br>
    3. Password:<input type="password" name="pass"><br>
    4. <input type="submit" value="Sign In!">
    5. </form>
    enter.php

    Код (Text):
    1. <?php
    2. $l=stripslashes(htmlspecialchars($_POST['login']));
    3. $p=stripslashes(strip_tags($_POST['pass']));
    4. if(!$l || strlen($l)>12 || !$p || strlen($p)>32)
    5. {
    6. header('Location:login.php');
    7. }
    8. else
    9. {
    10. setcookie('username',$l);
    11. setcookie('password',$p);
    12. header('Location:index.php');
    13. }
    14. ?>
    index.php

    Код (Text):
    1. <?php
    2. include('func.php');
    3. if(user_logged_in())
    4. {
    5. echo 'You are logged in! Congratulations!';
    6. }
    7. else
    8. {
    9. echo 'You are not logged in!';
    10. }
    11. ?>
    func.php

    Код (Text):
    1. <?php
    2. function user_logged_in()
    3. {
    4. include('data.php');
    5. if($_COOKIE['username']==$valid_username && $_COOKIE['password']==$valid_password);
    6. {
    7. return true;
    8. }
    9. else
    10. {
    11. return false;
    12. }
    13. }
    14. ?>
    data.php

    Код (Text):
    1. <?php
    2. $valid_username='Guest';
    3. $valid_password='12345';
    4. ?>
    а мне надо при отдельных файлах для каждого раздела сайта
     
  22. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    не сохраняйте скрипты блокнотом в UTF, обо ВОМ потом всю кровь свернет
     
  23. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    я сохраняю коды в dreamweaver. пробовал в notepad++ без BOM'a , так все равно денвер ругается на сессию в первом скрипте
     
  24. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Научитесь отлаживать:
    1. Поставьте вывод ошибок на максимальный уровень
    2. Проработайте логику кода, на бумаге можете даже
    3. Проследите за данными, выводите их везде, где они проходят, чтобы выяснить, где что-то не так.
    4. Посмотрите, что база возвращает

    phpfaq.ru/debug
     
  25. Шаман

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

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    в том то и дело что ошибок, нет, но в том случае если сайт построен на нескольких файлах, авторизация не рушится, а при переходе на другую страницу просто не отображается факт авторизации, хотя достаточно эту страницу обновить, так сразу все в порядке становится
     
Статус темы:
Закрыта.