За последние 24 часа нас посетили 17903 программиста и 1696 роботов. Сейчас ищут 1635 программистов ...

Помогите с сессиями.

Тема в разделе "PHP для новичков", создана пользователем NyaNeko, 27 сен 2010.

  1. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    Имеется простенький скрипт авторизации:
    PHP:
    1. <?php
    2. include_once("connect.php");
    3. if(isset($_POST['submit']))
    4.     {
    5.             $login = $_POST['login']; //Имя пользователя, введенное в форму
    6.             $password = $_POST['password']; // Пароль введенный в форму
    7.            
    8.             //Запрос из базы данных по проверки существования в базе введенного пользователя
    9.             //с введенным паролем
    10.             $query = "SELECT id, login, password
    11.                    FROM users
    12.                    WHERE login ='{$login}' AND password='{$password}'
    13.                    LIMIT 1";
    14.             $sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
    15.             if (mysql_num_rows($sql) == 1)
    16. {
    17.    $login = true;
    18.    $_SESSION['auth']=1;
    19.    break;
    20.                 echo 'Авторизация прошла успешно';
    21. }
    22.             else
    23.                    echo 'Неправильное имя или пароль';
    24.     }
    25. ?>
    Если вводим верные логин и пароль, выдает такую ошибку:
    Fatal error: Cannot break/continue 1 level in Z:\home\192.168.0.100\www\avtorization.php on line 21
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    NyaNeko
    Няшно ^_^

    А можешь пояснить зачем тебе там break нужен ?


    Ну и классическое $password = $_POST['password'] обдумай хорошенько... (в сбегай поиск по SQL-injection, а то как-то не кавайно будет если тебе сервак обрушат)
     
  3. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    NyaNeko
    А при чем здесь break? Я тут цикла или switch что-то не наблюдаю.

    p.s. Vladson, опередил на одну секунду =)
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ну не на одну а на 35 :) (50:53 / 51:28)
     
  5. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    С сессиями связываюсь впервые, делаю по примерам, поэтому там присутствует break = )

    Вот код без сессий, не могли бы Вы подсказать, как правильно организовать их? Нужно, чтобы после того, как пользователь авторизовался, данные об этом хранились в сессии, и при переходе на новую страничку сайта не приходилось авторизоваться снова.

    PHP:
    1. <?php
    2. include_once("connect.php");
    3. if(isset($_POST['submit']))
    4.     {
    5.             $login = $_POST['login']; //Имя пользователя, введенное в форму
    6.             $password = $_POST['password']; // Пароль введенный в форму
    7.            
    8.             //Запрос из базы данных по проверки существования в базе введенного пользователя
    9.             //с введенным паролем
    10.             $query = "SELECT id, login, password
    11.                    FROM users
    12.                    WHERE login ='{$login}' AND password='{$password}'
    13.                    LIMIT 1";
    14.             $sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
    15.             if (mysql_num_rows($sql) == 1)
    16.                 echo 'Авторизация прошла успешно';
    17.             else
    18.                    echo 'Неправильное имя или пароль';
    19.     }
    20. ?>
    Обязательно учту, но сперва хотелось бы разобраться с сессиями =)
     
  6. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Не вполне понимаю к чему эти танцы с $login и $_SESSION['auth'] но примерно так может заработать (может не точно, не проверял но почти)
    Код (Text):
    1.               if (mysql_num_rows($sql) == 1)
    2.               {
    3.                   $login = true;
    4.                   session_start();
    5.                   $_SESSION['auth']=1;
    6.                   echo 'Авторизация прошла успешно';
    7.               } else {
    8.                   $login = false;
    9.                   session_start();
    10.                   $_SESSION['auth']=0;
    11.                   echo 'Неправильное имя или пароль';
    12.               }
    А вообще учитывая что разбираешься с примерами, то посмотри другие, нормальные примеры...
     
  7. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    Vladson
    Спасибо большое, не ругается больше при правильной авторизации.
    Теперь такой вопрос,

    Код (Text):
    1. <?php
    2. session_start();
    3. if($_SESSION['auth']!=1)
    4. {
    5.  echo('Авторизуйтесь с главной страницы!');
    6.  exit;
    7. }
    8.  ?>
    Это мы записываем в самое начало файла, к которому хотим ограничить доступ незарегистрированным пользователям. Но эти странички все равно открываются по прямой ссылке и над содержанием пишет ошибку:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\127.0.0.1\www\users\index.php:5) in Z:\home\127.0.0.1\www\users\index.php on line 6
     
  8. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    NyaNeko
    в качестве аватрки разрешены только личные фото
     
  9. PetrOFF

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

    С нами с:
    13 май 2009
    Сообщения:
    102
    Симпатии:
    0
    где-то перед стартом сессии выводятся символы -> phpfaq.ru здесь все есть