За последние 24 часа нас посетили 61753 программиста и 1586 роботов. Сейчас ищут 965 программистов ...

Вопрос о сессиях и куках.

Тема в разделе "PHP и базы данных", создана пользователем eldor, 1 июн 2013.

  1. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    1. Как правильно и безопасно использовать сессии?
    2. Как правильно и безопасно использовать куки?
    3. Что хранить в сессиях и куках для перехода по страницам в рамках одного проекта, в котором используется авторизация?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    1. Сессии безопасны, опасность в криворукости программиста
    2. Куки хранятся на стороне клиента, что не безопасно, поэтому там можно хранить не нужную мелочь
    3. Все на что способна твоя фантазия

    Конкретней задавай вопросы а не обобщенные, для этого книги читать надо.
     
  3. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Если я буду хранить id пользователя в сессии для перехода по страницам, то это безопасно? Что Вы можете посоветовать?
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Храни, все ok.
     
  5. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Можно ли вкладывать сессии в инклуды таким образом?

    <?php
    //Проверка прохода не по прямой ссылке с помощью константы.
    if( !defined('CONNECT') ) exit;

    $db=mysql_connect("localhost","nik","123456") or die ('Ошибка соединения с сервером');
    mysql_select_db("qwerty",$db) or die('Ошибка выбора БД');;
    mysql_query("SET NAMES utf8");
    session_start();
    //Проверяем наличие сессии.
    if (isset($_SESSION['id']) and isset ($_SESSION['nik']))
    {
    $id = $_SESSION['id'];
    $nik = $_SESSION['nik'];
    }

    ?>

    Или сделать для сессии отдельный инклуд и расположить его в самом начале кода?
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Я не знаю как организованно твое приложение, поэтому посоветовать что то сложно.
    Если тебе так удобно делай так если хочешь вынести в отдельный файл и просто инклудить делай так.
    Все зависит от приложения.
    А зачем ты решил выносить?

    Две ;
     
  7. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Чтобы не писать в каждом файле session_start, $_SESSION['id'], $_SESSION['nik'] и т.д.
    Спс.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Если во всех надо сделай какой нибудь файл.
    Я вообще сторонник MVC там проще одна входная точка и работать удобней.

    Ну и так совет что ли переходи на PDO или MYQSLI, mysql_* устарел.
     
  9. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Спс за совет. Для перехода пока опыта маловато... Вот и делаю как знаю...
     
  10. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Поверьте на слово - лучше набивать опыт не на устаревших средствах. Запросы одинаковы, а надежность и скорость работы с БД - на порядки выше. Для начала, прочитайте эту статейку. Не пугайтесь, там нет ничего сложно: поэкспериментируйте пару-тройку раз и быстро втянитесь ;)
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    синтаксис запросов и принципы работы не отличаются. так что бояться нечего.
     
  12. eldor

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

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Погуглив, я понял, что PDO и mysqli не так страшны как мне казалось)))
     
  13. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Я понял принцип сессии на этом примере авторизации , может и вам поможет
    Код (Text):
    1. <?php
    2. session_start();
    3. if ($_POST['login'] == 'admin' && $_POST['pass'] == 'admin') $_SESSION['auth'] = '1';
    4. //можно еще  $_SESSION['login']=$_POST['login']
    5. if (isset($_GET['logout'])) unset($_SESSION['auth']);
    6. ?>
    7. <html>
    8. <body>
    9. <?php
    10. if (isset($_SESSION['auth']))
    11.  
    12. echo 'Вы авторизованы,
    13.  
    14. <a href="/test.php?logout">
    15.  
    16. Выход </a>';
    17.  
    18.  else {?><br>
    19.  
    20.  <form method='POST' action = 'test.php'>
    21.  
    22. <br>Логин<input type='text' name='login'><br>
    23.  
    24. <br>Пароль<input type='password' name='pass'><br>
    25.  
    26. <br><input type='submit' value='Авторизоваться'><br>
    27.  
    28. </form><br>вы не авторизованы <br><?}?><br>
    29.  
    30. </body></html>