| |
|
|
| | Сразу прошу Хеопс, не надо кучу ссылок давать :)) мнеб одну но конкртно по данной теме...
В общем есть вот такой вот код, вся инфа соответственно храница в БД...
<?php
$pass=md5($pass);
include ("config.php");
$query = "SELECT pass FROM user WHERE name='".$name."'";
$query2 = "UPDATE user SET last_time = NOW() WHERE name = '".$name."'";
mysql_query($query2);
$nme = mysql_query($query);
if(!$nme)
{
echo "Ошибка выполнения запроса";
exit();
}
if(mysql_num_rows($nme) > 0)
{
$passw = mysql_result($nme,0);
if ($pass == $passw) {setcookie("valid_user", $name, time()+604800);
header("Location:index.php");
exit; }
else
{
echo "Ошибка идентификации: неправильный пароль";
exit();
}
}
else
{
echo "Пользователь с таким именем не найден!<br>Вы можете зарегистрироваться <a href=members/registration.php>здесь</a>";
exit();
}
?>
|
я тут запутался жутко, мне нужно чтобы код распознавал Админа от простого пользователя, за счёт того что Админ является юзером с ID 1! тоесть нужн окаким то макаром сравнивать ID видимо и занасить в соответствии с этим в куки разные данные | |
| |
|
|
| |
|
|
| |
для: 10100100
(27.10.2005 в 15:45)
| | | Я бы так сделал:
После ввода в форму логина и пароля имеем две переменные типа POST
$log=$_POST['login'] и $pass=$POST['pass']
<?
$sql="select id from user where pass='".$pass."' and name='".$log."'";
$query=mysql_query($sql);
$res=mysql_fetch_assoc($query);
if(empty($res)) echo "А ты кто такой?";
else setcookie("pass", $pass, time()+604800);
?>
|
Вот... Теперь мы имеем в Куке пароль. А так как вы вводили логин/пароль админа, то и у вас на компе сохранится пароль именно админа. Соответственно далее в скрипте можно легко и элегантно вытащить его ID
<?
if(!empty($_COOKIE)){
$pass=$_COOKIE['pass'];
$sql="select id from user where pass='".$pass."'";
$query=mysql_query($sql);
$res=mysql_fetch_assoc($query);
$ID=$res['id'];
}else{
// подсовываеи страницу ввода логина/пароля
}
// Ну и далее понятно:
if($ID==1) echo "Здравствуйте, ваше сиятельство!!!";
else echo "Здорово, челядь!";
?>
|
| |
| |
|
|
| |
|
|
| |
для: Axxil
(27.10.2005 в 17:54)
| | | да вариант, но видиь если чел вообще не зарегин то ему выйдет сообщение "Здравствуй челядь", а он по идее не участник вовсе.. | |
| |
|
|
| |
|
|
| |
для: 10100100
(27.10.2005 в 18:29)
| | | разумно...
тогда можно так:
<?
if(!empty($_COOKIE)){
$pass=$_COOKIE['pass'];
$sql="select id from user where pass='".$pass."'";
$query=mysql_query($sql);
$res=mysql_fetch_assoc($query);
$ID=$res['id'];
}else{
// подсовываеи страницу ввода логина/пароля
$ID=0;
}
// Ну и далее понятно:
if($ID==1) echo "Здравствуйте, ваше сиятельство!!!";
elseif($ID==0) echo "добро пожаловать, гость";
else echo "Здорово, челядь!";
?>
|
| |
| |
|
|
| |
|
|
| |
для: axxil
(28.10.2005 в 00:08)
| | | о, точно - вполне разумно... хм..... отлично, спасибо, в процессе буду задавать вопросы :) | |
| |
|
|
| |
|
|
| |
для: axxil
(28.10.2005 в 00:08)
| | | Этот код подходит только если у меня на сайте нет формочки регистрации гденить в угла, а у меня она есть :) так что нужно сделать чтобы этот код был только обработчиком... я вот тут немного переделал его под себя - знаю что накосячил, только вот не могу разобраться.... помогите пожалуйста.
<?php
$pass=md5($pass);
include ("config.php");
$query2 = "UPDATE user SET last_time = NOW() WHERE name = '".$name."'";
mysql_query($query2);
if(!empty($_COOKIE)){
$pass=$_COOKIE['pass'];
$sql="select id_user from user where pass='".$pass."'";
$query=mysql_query($sql);
$res=mysql_fetch_assoc($query);
$ID=$res['id_user'];
}
if($ID==1); setcookie("admin", $name, time()+604800);
else setcookie("valid_user", $name, time()+604800);
?>
|
| |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 09:19)
| | | Ну так всё нормально... можно не подсовывать страницу регистрации... можно просто оставаться на нужной странице.
Мы получили ID пользователя... т.е мы его знаем, и теперь с помощью механизма сессий можно узнать этот ID в любой момент, на любой странице.
Если не знаете как и это вам интересно, спросите постараюсь объяснить | |
| |
|
|
| |
|
|
| |
для: Axxil
(28.10.2005 в 12:58)
| | | так Вы то мне дали код для ситуации со всплывающей формой . а мне другой нужен, вот я и переделал а оно не работает.. | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 13:34)
| | | А почему авторизацию не сделать на сессиях и для пользователя, и для админа? Не понимаю... | |
| |
|
|
| |
|
|
| |
для: lina
(28.10.2005 в 13:37)
| | | да сделать то можно, вопрос не в этом, а как оптличать админа от простого смертного... | |
| |
|
|
| |
|
|
| |
для: 10100100
(27.10.2005 в 15:45)
| | | >чтобы код распознавал Админа
В чём это должно проявляться? | |
| |
|
|
| |
|
|
| |
для: cheops
(27.10.2005 в 20:09)
| | | проявляться это должно в иной записи в Куки, тоесть для админа создаётся другая запись - НЕ VALID_USER... | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 08:47)
| | | а я ваще для админа отдельно всё сделал | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 08:47)
| | | Опасно - cookie на раз два подделать можно - у вас каждый второй админом будет. | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 13:22)
| | | Тоесть мне нужно будет сделать регистрацию на сессиях?
А как можно осуществить регистрацию для админа на сессиях а для пользователей на кукИ??? и чтобы при этом все данные (и админа и пользователей) вводились через одну и ту же форму??? | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 13:32)
| | | cheops Опасно - cookie на раз два подделать можно - у вас каждый второй админом будет.
А если, например хранить login зарегистрированного пользователя. А при загрузках страниц проверять валидность доступа данного пользователя к странице. | |
| |
|
|
| |
|
|
| |
для: lina
(28.10.2005 в 13:33)
| | | Если вы каждый раз будете запрашивать у него пароль, то ничего страшного, опасно когда в cookie пишется отличительный знак или аутентификация производится только по одному имени в cookie. | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 13:39)
| | | Да, в данном случае полностью согласна, т. к. пишется id, при чем для админа он всегда=1. Немного не правильный подход.
10100100:
А админ всегда один, их не может быть несколько? | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 13:32)
| | | Можно... у вас же админа всегда можно вычислить. | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 13:37)
| | | Дамы и господа, Вы вообще о чём? ))) чёт я запутался... :) | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 13:32)
| | | Блин...
Надо разделять понятия куки и сессии. Куки нужны для первоначальной автоматической авторизации зпрегистрированного пользователя. Всё, дальше, когда пользователя сайт узнал куки нафиг больше не нужны. Дальше уже пишем в базу ID номер пользователя, будь-то админ, модератор или Папа римский, без разницы, а вместе с этим ID записываем PHPSESSION - уникальный идентификатор текущего сеанса, который тащится за пользователем со страницы на страницу, давая возможность сайту узнавать его.
Это так сказать, теория... Вечером, если интересно могу практику добавить... | |
| |
|
|
| |
|
|
| |
для: Axxil
(28.10.2005 в 15:34)
| | | интересно - не то слово очень интересно, но на сколько мне известно при закрытии браузера - сессии дохнут.. | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 15:38)
| | | Во-первых, сессии можно сохранять.
Во-вторых, ну добавь ты в базу флаг для пользователя админ это или нет? | |
| |
|
|
| |
|
|
| |
для: lina
(28.10.2005 в 15:42)
| | | о а это как? я ж пока что ломак в этом деле.. | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 16:04)
| | | Тут то же есть не мало проблем. ID сессии сохраняется в кукисах. Для того, чтобы сессия сохранилась и после закрытия браузера устанавливается время хранения кукисов:
# Период хранения куки в секундах. Значение 0 означает "пока браузер не будет закрыт"
ini_set('session.cookie_lifetime',$n); //$n часов
|
Но при этом если кукисы выключены, возникают проблемы, сам понимаешь. ;-) | |
| |
|
|
| |
|
|
| |
для: lina
(28.10.2005 в 17:09)
| | | хм.. так это я понял, но я даже не представляю себе как должен выглядеть код.... так... смутновато.... | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 16:04)
| | | Моя гражданская позиция велит мне вас игнорировать, но я все же скажу: "я ж пока что ломак в этом деле" - никоим образом вас не оправдывает и, вместо того чтобы кянчить код в каждом сообщении, вы могли бы потратить час на изучение учебника (находящегося на этом же сайте), и пару часов на то чтобы сделать все те функции, которые вы уже неделю вымогаете у людей. Тем более что реализиция всего этого, требует от вас самых начальных знаний.
Все. Возвращаюсь к своей гражданской позиции:) | |
| |
|
|
| |
|
|
| |
для: Loki
(28.10.2005 в 17:45)
| | | Локи - спасип! ток не ругайся... я не кляньчу код, просто я реально не врубаюсь... и в данный момент не имею достаточного колличества времени.... а если я допустим попробую снова сделать чтолибо сам и выложу сдесь Вы мне поможите?
просто я с этими СЕССИЯМИ теперь ещё окончательно запутался, с куками я всё понял но вот сессии... | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 15:38)
| | | >но на сколько мне
>известно при закрытии браузера - сессии дохнут..
Это от настроек сервера зависит - можно и так и эдак настроить. | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 19:01)
| | | Получается эту инфу пробивать у хостера надо?
а если у него настройки другие то что мне тогда делать? | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 19:11)
| | | Хм... а в смысле чего делать? Ведь режим работы сессий не является критичным... | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 23:57)
| | | это как? | |
| |
|
|
| |
|
|
| |
для: 10100100
(29.10.2005 в 08:01)
| | | Сессионные войны. Часть 2.
Краткое содержание предыдущей серии:
Мы научились сохранять данные о пользователе на его собственном компьютере используя куки. Т.е при первом входе на сайт мы читаем куку пользователя, и если такая существует определяем по ней его ID.
Конец краткого содержания предыдущей серии
Для начала создадим библиотеку работы с сессиями session.php:
Создаём таблицу session в БД. В этой таблице создаём два поля
user_id | sess_id | crete_time
<?
function saveSession($user_id,$sid){
$sql='insert into session values('.$user_id.','\''.$sid.'\'')';
mysql_query($sql);
}
function getUserBySessionId($sid){
$sql='select user_id from session where sess_id=\''.$sid.'\'';
$query=mysql_query($sql);
$r=mysql_fetch_assoc($query);
if(!empty($r['user_id']))
return $r['user_id'];
else
return 0;
}
function clearSessions($hours){
// $hours - время жизни сессии в базе:
$sql='delete from session where create_time<DATE_SUB(NOW(),interval '.$HOURS.' HOUR)';
mysql_query();
}
?>
|
Далее в начале страницы до любого вывода в браузер пишем:
<?
require_once('session.php');
clearSession(1);
if(empty($_SERVER['PHPSESSION'])){
session_start();
$sid=session_id();
// функция извлечения ID из куки например getCockie() получаем $ID
if($ID>0) saveSession($ID,$sid);
}else{
$ID=getUserBySessionId($_SERVER['PHPSESSION']);
}
?>
|
Если добавить этот код на любую страницу, мы будем знать ID юзера всегда. | |
| |
|
|