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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: не запоминается сессия

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
foozzi
Отправлено: 15 Декабря, 2011 - 19:14:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


Помог: 0 раз(а)




Есть скрипт авторизации на файлах, с использованием сессий
вот код:

Страница логина:
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 строке находится имя сессии.

Проблема в след. я логинюсь отлично, но когда перехожу на страницу логина, опять требуется вводить пароль, подскажите как запомнить сессию и проверить ее из файла где она уже записана, и если сессия есть то редиректить сразу куда надо


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
kuller
Отправлено: 15 Декабря, 2011 - 19:21:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




логин с паролем надо саписать в сессию

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


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

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

P.S это я имею виду записать при авторизации.

(Отредактировано автором: 15 Декабря, 2011 - 19:23:46)

 
 Top
foozzi
Отправлено: 15 Декабря, 2011 - 22:27:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


Помог: 0 раз(а)




ну вот после получения post написал
PHP:
скопировать код в буфер обмена
  1.     $_SESSION['login'] = md5(md5($_POST['login']));
  2.     $_SESSION['pasv'] = md5(md5($_POST['pasv']));


не канает все равно


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Okula
Отправлено: 15 Декабря, 2011 - 22:41:37
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




А ты идентификатор сессии в ссылки подставляешь? Если нет то у тебя в .htaccess должно быть прописано автоматическая подстановка идантификатора в ссылки.
php_value session.use_trans_sid 1
 
 Top
foozzi
Отправлено: 15 Декабря, 2011 - 23:25:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


Помог: 0 раз(а)




сделал все намного проще, и все работает, зашол 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. ?>


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Okula
Отправлено: 16 Декабря, 2011 - 00:29:17
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Сессия действительна только для одного клиента (одного браузера).
Для того чтобы очистить сессию воспользуйся функцией session_destroy()
 
 Top
foozzi
Отправлено: 16 Декабря, 2011 - 00:37:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


Помог: 0 раз(а)




Okula пишет:
Сессия действительна только для одного клиента (одного браузера).
Для того чтобы очистить сессию воспользуйся функцией session_destroy()


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


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Мелкий Супермодератор
Отправлено: 16 Декабря, 2011 - 08:33:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Okula пишет:
Сессия действительна только для одного клиента (одного браузера).

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

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


-----
PostgreSQL DBA
 
 Top
foozzi
Отправлено: 16 Декабря, 2011 - 12:38:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


Помог: 0 раз(а)




Мелкий пишет:
Okula пишет:
Сессия действительна только для одного клиента (одного браузера).

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

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


актуальный код выше, я его не менял


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
foozzi
Отправлено: 18 Декабря, 2011 - 16:03:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


Помог: 0 раз(а)




еще актуально


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB