Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> user login используя сессии 
:(
    Опции темы
alice18
Дата 13.3.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



я в пхп новичек...только начала изучать...вот пытаюсь организовать логин пользователя с использованием сессий. вот мой коды:
login.php:
Код

<? 
session_start(); 
include ("../functions/sessionhelpers.inc.php"); 
if (isset($_POST['login'])) 
{ 
    $userid=check_user($_POST['username'], $_POST['userpass']); 
    if ($userid!=false) 
        login($userid); 
    else 
        echo '<br><p class=error>Ihre Anmeldedaten waren nicht korrekt!</p>'; 
} 
if (!logged_in()) 
    echo '<form method="post"  action="login.php"> <br>
        <label class=news>Benutzername:</label><input class=datei name="username" type="text"><br> <br>
        <label class=news>Passwort: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><input class=datei name="userpass" type="password" id="userpass"><br> <br>
        <input type=submit name="login"  style="BACKGROUND-COLOR: #78B146; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 1em; width: 240px; color: #ffffff; height: 22px;" value="Einloggen" class=button>
    </form>'; 
else 
    echo "<br><p class=korrekt>Your login was successful</p><br>";
    echo '<br><a href="logout.php" class=error>Ausloggen</a><br><br>'; 
echo '<a href="logged_in.php" class=mehr>Check</a>'; 
?> 


logout.php
Код

<? 
session_start(); 
include ("../functions/sessionhelpers.inc.php"); 
logout();
echo '<br>Sie sind '; 
if (!logged_in()) 
    echo 'nicht mehr '; 
echo 'eingeloggt.<p />'; 
logout(); 
echo '<a href="login.php" class=korrekt>Einloggen</a>'; 
?> 


logged_in.php

Код

<? 
session_start(); 
include ("../functions/sessionhelpers.inc.php"); 
echo ' '; 
if (!logged_in()) {
    echo '<br><p class=error>Sie sind nicht eingeloggt.</p>'; }
else {echo '<br><p class=korrekt>Sie sind schon eingeloggt.</p>'; } 
echo '<a href="login.php" class=mehr>Start</a>'; 
?> 

sessionhelpers.inc.php
Код

<? 
function connect() 
{ 
     include ("../functions/config.inc.php");
     $con = mysql_connect($HOST,$ID,$PW) or die(mysql_error()); 
     mysql_select_db($DBProdukte,$con) or die(mysql_error()); 
} 

function check_user($name, $pass) 
{ 
    $sql="SELECT UserId 
    FROM users 
    WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') 
    LIMIT 1"; 
    $result= mysql_query($sql) or die(mysql_error()); 
    if ( mysql_num_rows($result)==1) 
    { 
        $user=mysql_fetch_assoc($result); 
        return $user['UserId']; 
    } 
    else 
        return false; 
} 

function login($userid) 
{ 
    $sql="UPDATE users 
    SET UserSession='".session_id()."' 
    WHERE UserId=".$userid; 
     mysql_query($sql); 
} 

function logged_in() 
{ 
    $sql="SELECT UserId 
    FROM users 
    WHERE UserSession='".session_id()."' 
    LIMIT 1"; 
    $result= mysql_query($sql); 
      return ( mysql_num_rows($result)==1); 
} 

function logout() 
{ 
    $sql="UPDATE users 
    SET UserSession=NULL 
    WHERE UserSession='".session_id()."'"; 
     mysql_query($sql); 
} 

connect(); 
?> 



все вроде работает, но вот только не знаю, как сделать так, чтобы сессия закрывалась по таймеру, через 5 минут после бездействия или когда пользоватль просто закрыл браузер...
PM MAIL   Вверх
PARROT
Дата 13.3.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Поймать закрытие браузера нельзя. 


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
alice18
Дата 13.3.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



а таймер??? такое можно сделать??
PM MAIL   Вверх
PARROT
Дата 13.3.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



таймер на яваскрипт http://javascripts.boom.ru/clock.htm


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
pnd_ku
Дата 13.3.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 25.9.2006

Репутация: 1
Всего: 1



Делаем на ДжаваСкрипт.
Примерно так.

...
Код

<head>
<title>.::.</title>
<script>
var tmr=window.setTimeout(" window.location='logout.php'; ",10); //1 параметр - код (он редиректит на страницу с логаутом), 2 параметр - время через которое сработает таймер
document.onmousemove=document.onkeypress=function()
{
//догадайся сама
}
</script>
</head>

...

то есь через какое то время (какое поставиш) сработает редирект на логаут..
ниже вешаем обработчик на движение мыши и на нажатие клавишы..
там где написано "догадайса сама" надо сделать обновление таймера, чтобы если юзер шевелица время срабатывания откладывалось smile инфу найдёш просто - линку уже дали smile
PM MAIL   Вверх
alice18
Дата 14.3.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



сделала так:
Код

<script>
var tmr=window.setTimeout(" window.location='logout.php'; ",10);
document.onmousemove=document.onkeypress=function()
{
clearTimeout(tmr);
}
</script>


но в какой из файлов вставить этот скрипт? Или его во все нужно добавить???
PM MAIL   Вверх
mishaSL
Дата 14.3.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



alice18, только подумай о том зачем тебе это надо. Пользователь которому это надоест просто отключит JavaScript. 
Тогда уж лучше записывать время каждого последнего действия в БД и при последующем проверять разницу во времени, если разница больше чем тебе нужна вырубать все сессии. Это будет надежнее.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
alice18
Дата 14.3.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



что то я совсем запуталась....
PM MAIL   Вверх
mishaSL
Дата 14.3.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(alice18 @  14.3.2007,  17:25 Найти цитируемый пост)
что то я совсем запуталась.... 


Путаться не надо. Надо внимательно поставить задачу, в первую очередь для себя. И решить для чего вам необходимы эти функции. Если для безопасности, то их не надо писать на JavaScript-е, т.к. если пользователь его отключит или он у него в принципе не был включен, то они не будут работать.







--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
alice18
Дата 14.3.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



задача то ясна:
будут созданы несколько пользователей, которым будет открыт доступ на скачивание файлов (у каждого индивидуальные), TO нужна авторизация. почитала инфу, кажется люди это с сессиями делают...

а вот как это сделать...не знаю
PM MAIL   Вверх
mishaSL
Дата 14.3.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Тогда я думаю вам будет полезна следующая информация:
http://vingrad.ru/PHP-PHPSCRIPTS-002849


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
alice18
Дата 14.3.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



уф...чем дальше в лес, тем больше дров. не думала, что все так сложно, но все равно спасибо за ссылку
PM MAIL   Вверх
Grom
Дата 16.3.2007, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: нет
Всего: 1



alice18, вообще я не знаю на сколько это верно с точки зрения безопастнсти и правельности работы, но писал на скорую руки и вроде работает smile

index.php
Код

<?
session_start();

include 'config.php';

if ((isset($_POST['login'])==true) and (isset($_POST['passw'])==true))
{
$_SESSION['login']=$_POST['login'];
$_SESSION['passw']=$_POST['passw'];
}

if (($_SESSION['login']!==$admin_login) or ($_SESSION['passw']!==$admin_passw))
{
//если авторизация НЕ прошла успешна
print ("<table align=center width=100% height=100%>
<td>
    <table border=1 cellspacing=0 align=center>
        <form action='index.php' method=post align=center>
            <tr><td>Логин</tr><td><input type='text' name='login'></tr></td>
            <tr><td>Пасс</tr><td><input type='password' name='passw'></tr></td>
            <tr><td colspan=2 align=center><input type='submit' value='Авторизация'></tr>
        </form>
    </table>
</td>
</table>");

}
else
{
//здесь то что если авторизация прошла успешна...
}
?>


config.php
Код

<?
Error_Reporting(E_ALL & ~E_NOTICE);
$admin_login="login";
$admin_passw="pass";
?>


Это сообщение отредактировал(а) Grom - 16.3.2007, 00:13
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.