Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2009, 22:05   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию Авторизация & сессии

Написал скрипт для авторизации на сайте. Для сохранения информации о пользователе при переходе между страницами использую сессии. Если выйти из браузера и зайти через некоторое время, то данные в сессии по прежнему сохраняются. Это может быть опасно. Взять хотябы банальный пример в компьютерном клубе, когда у одного пользователя заканчивается время и на его место приходит посторонний человек. На многих проектах и интернет ресурсах видел, что при выходе из браузера и заходе на сайт снова, информация, введённая пользователем (логин, пароль) не сохраняются. Возможно ли осуществить такое же посредством PHP? Или тут задействована другая технология? Как эту проблему решаете вы?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 28.06.2009, 00:41   #2
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Я писал ради обучения ту - же авторизацию , использовал примитив , сессия не сохранялась после выхода из браузера , или при активном 1вом , открытие странички в другом браузере . Некоторые браузеры автоматически запоминают введённые данные и при обращении к странице ввода , заполняют их сами ..
У меня такой проблемы небыло
Lime вне форума Ответить с цитированием
Старый 28.06.2009, 01:06   #3
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Цитата:
использовал примитив , сессия не сохранялась после выхода из браузера , или при активном 1вом , открытие странички в другом браузере .
Нельзя ли поподробнее? Что использовали? Как?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 28.06.2009, 11:08   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Ну вообще то все правильно, ты же закрыл браузер и не удалил сессию. Сделай кнопку "Выход" и напиши её такой код unset($_SESSION['имя_твоей_сессии']);
profi вне форума Ответить с цитированием
Старый 28.06.2009, 11:27   #5
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Стрелка

login.php
PHP код:
<?
$login 
$HTTP_POST_VARS['login'];
$pass $HTTP_POST_VARS['pass'];
$action $HTTP_POST_VARS['action'];
$level $_SESSION['level'];
session_start();
define(login1,'admin');
define(pass1,'123');
define(login2,'client');
define(pass2,'555');
define(login3,'guest');
define(pass3,'guest');
if (!isset(
$_SESSION['username']) && empty($_SESSION['username'])) 
{
if (( ((
$login==login1) && ($pass==pass1)) or  (($login==login2) && ($pass==pass2)) or (($login==login3) && ($pass==pass3)) ) && empty($_SESSION['username']))
{
$_SESSION['username'] = $login;    
if (
$login==login1)
{
$_SESSION['level'] = 3;}    
if (
$login==login2)
{
$_SESSION['level'] = 2;}    
if (
$login==login3)
{
$_SESSION['level'] = 1;}    
}
else
{    echo 
"&nbsp&nbspНеобходима <a href=index.php >авторизация</a>.&nbsp&nbsp<br>";}}
 
?>
<!doctype html public "-//w3c//dtd html 3.2//en">
<html>
<head>
<title>Вход в систему : <? echo $login?></title>
</head>
<body bgcolor="#000000" text="#808080" link="#ff8040" vlink="#ff8000" alink="#ff0000">
<table  width="300" border="0" cellspacing="1" cellpadding="0" bordercolor="634225">
    <tr >
        <td background="pt6.gif">
  <b><font color=#faa73d>&nbsp;Меню :</font></b>

        </td>
    </tr >
    <tr>
        <td bgcolor="644419">

<font color=#b8a16f>
<?
echo "Добро пожаловать , ".$_SESSION['username']." <a href=index.php?do=exit>Выход</a><br>";
if (
$_SESSION['level']> 1) {print "<a href=addfile.php>Создать файл</a><br>";}
if (
$_SESSION['level']> 1) {print "<a href=fileedit.php>Просмотр файлов </a><br>";}
 if (
true
{
echo 
$login."<br>";
echo 
$pass."<br>";
echo 
$action."<br>";
//IP пользователя
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$Sender_IP=getenv('HTTP_X_FORWARDED_FOR');
}
{
$Sender_IP=getenv('REMOTE_ADDR');
}
$Sender_HOST gethostbyaddr("$Sender_IP");
echo 
$Sender_HOST;
echo 
'<br>';
echo 
$Sender_IP;
}
?>
</font>
        </td>
    </tr>
    <tr>
        <td height="12" background="pt6.gif"><img src="pointer.gif" width="1" height="1" alt=""></td>
    </tr>
</table>
</body>
</html>
index.php
PHP код:
<? 
$login 
$HTTP_POST_VARS["login"];
$pass $HTTP_POST_VARS["pass"];
$action $HTTP_POST_VARS["action"];
session_start();
if (
$_GET['do']= "exit"
{ unset(
$_SESSION['username']); // разрегистрировали переменную
  /* теперь имя пользователя уже не выводится */
  
unset($_SESSION['level']);
  
session_destroy(); // разрушаем сессию
}
?>
<!doctype html public "-//w3c//dtd html 3.2//en">

<html>

<head>
<title>(Введите заголовок страницы)</title>

</head>

<body bgcolor="#000000" text="#808080" link="#ff8040" vlink="#ff8000" alink="#ff0000">
<center>
<!-- HERE -->
<table width="98%"><tr valign="center"><td  align-center>
<table  width="230" border="0" cellspacing="1" cellpadding="0" bordercolor="634225">
    <tr >
        <!-- Строка 1 ; столбец 1 -->
        <td background="pt6.gif">
  <b><font color=#faa73d>&nbsp;Вход</font></b></td>
    </tr >
    <tr>
        <!-- Строка 2 ; столбец 1 -->
        <td bgcolor="644419">
<img src="pointer.gif" width="1" height="1" alt="">
<table  width="*" border="0" cellspacing="0" cellpadding="1" bordercolor="#9b7800">
    <tr>
        <!-- Строка 1 ; столбец 1 -->
        <td >

<form action="login.php" method="post">




<font color=#b8a16f>&nbsp;Логин : </font>
        </td>
        <!-- Строка 1 ; столбец 2 -->
        <td ><input type="text" name="login" size="20" maxlength="20" value='<? echo $login?>' style="border-color: ffba00;
border-width: 1px;
border-style: single;
border-color:000000;
height: 21;
background:663300;
color:b8a16f;"></td>
    </tr>
    <tr>
        <!-- Строка 2 ; столбец 1 -->
        <td ><font color=#b8a16f>&nbsp;Пароль : </font></td>
        <!-- Строка 2 ; столбец 2 -->
        <td ><input type="password" name="pass" size="20" maxlength="20" value="12345689" style="border-color: ffba00;
border-width: 1px;
border-style: single;
border-color:000000;
height: 21;
background:663300;
color:b8a16f;"><input type="hidden" name="action" value="post"></td>
    </tr>
    <tr>
        <!-- Строка 3 ; столбец 1 -->
        <td></td><td ><input type="submit" value="Вход" style="border-color: ffba00;
border-width: 1px;
border-style: single;
border-color:000000;
height: 21;
background:644419;
color:b8a16f;">
<? if (!empty($action)) {
if (empty(
$login)) {print "<br>Введите логин";}
if (empty(
$pass)) {print "<br>Введите пароль";}
}
?></td>

    </tr>
</table>
</form></td>
    </tr>
    <tr>
        <!-- Строка 3 ; столбец 1 -->
        <td height="12" background="pt6.gif"><img src="pointer.gif" width="1" height="1" alt=""></td>
    </tr>
</table>

</td></tr></table>
        <!-- /HERE -->
</center>
</body>

</html>
Есть некоторые ошибки , но сессии между браузерами и после закрыти их у меня не сохранялись ни разу ( другое дело - сохранение и автозаполнение пароля Оперой ).
Lime вне форума Ответить с цитированием
Старый 28.06.2009, 11:29   #6
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Самого смущает
Цитата:
$level = $_SESSION['level'];
session_start();
Но всёже работает ... уже и не помню почему писал так.
Lime вне форума Ответить с цитированием
Старый 28.06.2009, 12:56   #7
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Огромное спасибо
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 15.07.2009, 15:01   #8
Dimitri
Новичок
Джуниор
 
Регистрация: 24.09.2008
Сообщений: 1
По умолчанию

я изучал php для расширения кругозора.
по поводу сохранения данных. У кукисов есть время жизни т.е. время через которое кукис будет удален браузером, если время не было установлено, то кукис удаляется после закрытия браузера.
Также возможно другой случай когда данные сессии хранятся на стороне сервера, и удаляются после завершении сессии.
лично мене не удавалось сохранять кукисы после закрытия браузера.
Dimitri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сессии L_M PHP 3 06.06.2009 10:27
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
Сессии limon PHP 19 29.11.2008 22:46
Проблема с MVC++ 2005 && 2008 на висте NetGod Софт 1 09.08.2008 17:14
Delphi & Access & Ole vodila БД в Delphi 0 15.07.2008 11:11