Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не запоминается сессия
Форумы портала PHP.SU » » Вопросы новичков » не запоминается сессия

Страниц (1): [1]
 

1. foozzi - 15 Декабря, 2011 - 19:14:39 - перейти к сообщению
Есть скрипт авторизации на файлах, с использованием сессий
вот код:

Страница логина:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4. $info="";
  5.  
  6. if(isset($_POST['go']))
  7.  
  8.   {
  9.     $_POST['login']=trim($_POST['login']);
  10.  
  11.     $_POST['pasv']=trim($_POST['pasv']);
  12.  
  13.     if($_POST['login']!="" && $_POST['pasv']!="")
  14.  
  15.        {
  16.          $cont=file("data/adm.txt");
  17.  
  18.          if(md5(md5($_POST['login']))==trim($cont[0]) && md5(md5($_POST['pasv']))==trim($cont[1]))
  19.  
  20.             {
  21.  
  22.               $f=fopen("data/adm.txt","w");
  23.  
  24.               fwrite($f,$cont[0].$cont[1].session_id());
  25.  
  26.               fclose($f);
  27.  
  28.               echo "<meta http-equiv=refresh content='0; url=index1.php'>";
  29.  
  30.               exit();
  31.  
  32.             }
  33.  
  34.          $info="<font color=red>Неправильный логин или пароль</font>";
  35.  
  36.        }
  37.  
  38.   }
  39.  
  40.  
  41.  
  42. ?>


Страница удачного входа

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4. $cont=file("data/adm.txt");
  5.  
  6. if($cont[2]!=session_id())
  7.  
  8.   {
  9.         echo "<meta http-equiv=refresh content='0; url=index.php'>";
  10.  
  11.     exit();
  12.  
  13.   }
  14.  
  15.  
  16.  
  17. ?>
  18.  
  19. <h2>Вы удачно вошли</h2>


и файл adm.txt в котором хранится логин, на след. строке пароль и все это 2 раза ращифровано в md5, и на 3 строке находится имя сессии.

Проблема в след. я логинюсь отлично, но когда перехожу на страницу логина, опять требуется вводить пароль, подскажите как запомнить сессию и проверить ее из файла где она уже записана, и если сессия есть то редиректить сразу куда надо
2. kuller - 15 Декабря, 2011 - 19:21:47 - перейти к сообщению
логин с паролем надо саписать в сессию

PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['login'] = $login;
  3. $_SESSION['pass'] = md5($pass);
  4.  


на другой странице снова запускай сессию и попробуй вывести значения $_SESSION['login'] и $_SESSION['pass']

должно всё работать

P.S это я имею виду записать при авторизации.
3. foozzi - 15 Декабря, 2011 - 22:27:17 - перейти к сообщению
ну вот после получения post написал
PHP:
скопировать код в буфер обмена
  1.     $_SESSION['login'] = md5(md5($_POST['login']));
  2.     $_SESSION['pasv'] = md5(md5($_POST['pasv']));


не канает все равно
4. Okula - 15 Декабря, 2011 - 22:41:37 - перейти к сообщению
А ты идентификатор сессии в ссылки подставляешь? Если нет то у тебя в .htaccess должно быть прописано автоматическая подстановка идантификатора в ссылки.
php_value session.use_trans_sid 1
5. foozzi - 15 Декабря, 2011 - 23:25:48 - перейти к сообщению
сделал все намного проще, и все работает, зашол 1 раз, потом зашол с друго го браузера через некоторое время, ввожу логин/пасс но страница перезагружается и все.... как я понял требуется убивать сессию?

auth.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(!defined("IN_ADMIN")) die;
  3.  
  4. // Начинаем сессию
  5. // Помещаем содержимое файла в массив
  6. $access = array();
  7. $access = file("./data/passwd.txt");
  8. // Разносим значения по переменным – пропуская первую строку файла - 0
  9. $login = md5(md5(trim($access[1])));
  10. $passw = md5(md5(trim($access[2])));
  11. // Проверям были ли посланы данные
  12. if(!empty($_POST['enter']))
  13. {
  14.         $_SESSION['login'] = $_POST['login'];
  15.         $_SESSION['passw'] = $_POST['passw'];
  16. }
  17.  
  18. // Если ввода не было, или они не верны
  19. // просим их ввести
  20. if(empty($_SESSION['login']) or
  21.    $login != md5(md5($_SESSION['login'])) or
  22.    $passw != md5(md5($_SESSION['passw']))    )
  23.  
  24. {
  25.    ?>
  26.      <a href="index.php">Вернуться в администрирование гостевой книги</a>
  27.      <form action=index.php method=post>
  28.      Логин <input class=input name=login value="">
  29.      Пароль <input class=input name=passw value="">
  30.      <input type=hidden name=enter value=yes>
  31.      <input class=button type=submit value="Вход">
  32.    <?PHP
  33.    die;
  34. }
  35. ?>


index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. define("IN_ADMIN", TRUE);
  3.  
  4. // Проверяем права доступа
  5. include "auth.php";
  6.  
  7. // Получаем параметр op из URL
  8. $op = $_GET['op'];
  9.  
  10. // Выбираем нужное нам действие
  11. switch ($op)
  12. {
  13.         case 'index' : include "admin.php"; break;
  14.         default :  include "admin.php";
  15. }
  16. ?>
6. Okula - 16 Декабря, 2011 - 00:29:17 - перейти к сообщению
Сессия действительна только для одного клиента (одного браузера).
Для того чтобы очистить сессию воспользуйся функцией session_destroy()
7. foozzi - 16 Декабря, 2011 - 00:37:53 - перейти к сообщению
Okula пишет:
Сессия действительна только для одного клиента (одного браузера).
Для того чтобы очистить сессию воспользуйся функцией session_destroy()


все сделал как было изначально, а код перестал логинится совсем, и сессии убивал, и браузер менял
8. Мелкий - 16 Декабря, 2011 - 08:33:09 - перейти к сообщению
Okula пишет:
Сессия действительна только для одного клиента (одного браузера).

Сессия действительна для одной куки. Если куку перехватить - сессия будет и там тоже. Одновременно.

foozzi, покажите актуальный код.
9. foozzi - 16 Декабря, 2011 - 12:38:38 - перейти к сообщению
Мелкий пишет:
Okula пишет:
Сессия действительна только для одного клиента (одного браузера).

Сессия действительна для одной куки. Если куку перехватить - сессия будет и там тоже. Одновременно.

foozzi, покажите актуальный код.


актуальный код выше, я его не менял
10. foozzi - 18 Декабря, 2011 - 16:03:15 - перейти к сообщению
еще актуально

 

Powered by ExBB FM 1.0 RC1