|
|
|
| Как написать скрипт-обработчик формы входа на сайт, что-бы у разных пользователей были разные сессионыые переменные.
Например:
<?php
include "config.php";
session_start();
//В БД в таблице USERS пользователей есть строка со статусами пользователей
// User_status ENUM('admin', 'user', 'dear_friend') default 'user' NOT NULL,
//Часть кода со страницы скачивания файла
...
//Производим проверку на статус юзера в БД
$query="SELECT User_status FROM users";
$result=@mysql_query($query);
if($result) $status=@mysql_fetch_array($result);
...
//HTML-форма
echo "<html><head></head><body>";
echo "<table>";
echo "<tr><td><img src='http://some.site.ru/images/pict.gif' border="0"></td></tr>";//Рисунок-описание файла для скачивания
echo "<tr><td>";
//Далее идут допустимые действия для каждого юзера согласно статусу
if($status['admin'])
{
echo '<a href="http://some.site.ru/admin/index.php">Редактировать</a>';
}
else if($status['user'])
{
echo '<p>Классный рисунок?</p>';
}
else if($status['dear_friend'])
{
echo '<a href="http://some.site.ru/admin/index.php">Crfxfnm afqk</a>';
}
else echo '<p>Рисунок;)</p>';
echo "</td></tr>";
echo "</table></body></html>";
...
?>
|
| |
|
|
|
|
|
|
|
для: Lelik
(27.02.2006 в 18:21)
| | У разных юзеров и так будут разные сессионные переменные | |
|
|
|
|
|
|
|
для: partizan
(27.02.2006 в 18:22)
| | Неправильно объяснил.
Чтоб при входе разным юзерам(например если это админ) приписывалось(из ранее приведенного примера $status["admin"], или $status["dear_friend"]
Примерный файл-обработчик о котором я говорю:
<?php
include "config.php";
session_start();
$name= $_POST['name'];
$password=$_POST['password'];
$query = "SELECT * FROM users WHERE name=".$name." AND password=password(".$password.")";
$result=@mysql_query($query);
if(!$result)
{
echo "<p>Для вас вход невозможен</p>";
}
else
{
$user=@mysql_fetch_array($result);
if($user['User_status'] == 'user')
{
$_SESSION['user'] = $name;
//Далее следует автоматический переход на какую-то страницу
}
if($user['User_status'] == 'admin')
{
$_SESSION['admin'] = $name;
//Далее следует автоматический переход на какую-то страницу
}
...
?>
|
| |
|
|
|
|
|
|
|
для: Lelik
(27.02.2006 в 18:34)
| | Так в чем проблема? Этот кож будет работать | |
|
|
|
|
|
|
|
для: partizan
(27.02.2006 в 18:49)
| | Или это должна быть одна и таже сессия, только разные переменные? | |
|
|
|
|
|
|
|
для: partizan
(27.02.2006 в 18:50)
| | >Или это должна быть одна и таже сессия, только разные
>переменные?
Да | |
|
|
|
|
|
|
|
для: Lelik
(27.02.2006 в 20:22)
| | А зачем тогда вообще сессию использовать? Можно в БД переменные сохранять | |
|
|
|
|
|
|
|
для: partizan
(27.02.2006 в 21:13)
| | >А зачем тогда вообще сессию использовать? Можно в БД
>переменные сохранять
Не знаю я про такой прикол. А ну просвяти меня пожалуйста | |
|
|
|
|
|
|
|
для: partizan
(27.02.2006 в 18:50)
| | Весь набор переменных для каждого посетителя свой, и сессионные переменные одного посетителя никак не влияют на сессионные переменные другого. Не очень понятно, что вас затрудняет? | |
|
|
|
|
|
|
|
для: cheops
(28.02.2006 в 00:17)
| | Я хочу понять в этом месте правильно из БД вынимаються данные по-поводу статуса посетителя
<?php
//Почти полный скрипт-обработчик в каком-то моем предыдущем посте
...
$user=@mysql_fetch_array($result);
if($user['User_status'] == 'user')
{
$_SESSION['user'] = $name;
//Далее следует автоматический переход на какую-то страницу
}
if($user['User_status'] == 'admin')
{
$_SESSION['admin'] = $name;
//Далее следует автоматический переход на какую-то страницу
}
...
?>
|
| |
|
|
|
|
|
|
|
для: Lelik
(28.02.2006 в 15:49)
| | Да, по крайней мере никакой крамолы в коде нет. | |
|
|
|
|
|
|
|
для: cheops
(28.02.2006 в 23:24)
| | Я использовал этот код на локалхосте и вход не получался, может локалхост настроен неправильно | |
|
|
|
|
|
|
|
для: Lelik
(01.03.2006 в 04:37)
| | Гляньте, а этот скрипт-обработчик должен работать? Ибо у меня после входа на нем и зависает
<?php
include 'config.php';
include 'functions.php';
$name = htmlspecialchars(stripslashes($_POST['name']));
$password= htmlspecialchars(stripslashes($_POST['password']));
if($name && $password)
{
if(login($name, $password)
//Функция login из файла functions.php
//function login($name, $password)
// {
// $query = 'SELECT * FROM user WHERE name="$name"';
// $result = @mysql_query($query);
// if($result) $user_status = @mysql_fetch_array($result);
// if(!$result)
// return 0;
// if (mysql_num_rows > 0)
// return 1;
// else
// return 0;
// }
{
$query = 'SELECT * FROM user WHERE name="$name"';
$result = mysql_query($query);
$usay = mysql_fetch_array($result);
if($usay['status'] == 'user')
{
$_SESSION['user'] = $name;
echo '<html><head><meta http-equiv="Refresh" content="0; url=../index.php"></head></html>';
exit();
}
else if($usay['status'] == 'admin')
{
$_SESSION['admin'] = $name;
echo '<html><head><meta http-equiv="Refresh" content="0; url=../index.php"></head></html>';
exit();
}
else
{
echo 'Неверный логин или пароль. Повторите попытку входа';
exit();
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Lelik
(01.03.2006 в 16:44)
| | Этот файл включается при помощи include в другие файлы, а конкретно в ../index.php? | |
|
|
|
|
|
|
|
для: cheops
(01.03.2006 в 22:34)
| | Этот файл запускается посредством формы из файла входа
<html>
...
<form action="log.php" method="post">
...
</html>
|
| |
|
|
|
|
|
|
|
для: Lelik
(02.03.2006 в 11:22)
| | как сделать чтобы для каждого пользователя открывалась определенная страница, я делаю вот так
if ( $_SESSION['password']='pass1' && $_SESSION['user']== 'user1')
{ Header("Location: 1.html");}
а затем в 1.html
<?php
if(session_start())
{
if ( $_SESSION['password']="pass1" && $_SESSION['user']== "user1")
{
?>
<HTML><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<HEAD><script language="JavaScript">alert("привет"); </script> </HEAD><body>";
}
}
так как для каждого пользователя своя сессионная переменная, то получается что нужно проверять ее значение просто...и если значение переменной совпадает с именем пользователя и с паролем пользователя, то получается мы должны переходить именно на его страницу...
но у меня просто ничего не выдается...просто открывается пуста я страница | |
|
|
|
|
|
|
|
для: Lelik
(01.03.2006 в 04:37)
| | настройки базы
// Имя сервера базы данных
$dblocation = "localhost";
// Имя базы данных
$dbname = "test";
// Имя пользователя
$dbuser = "root";
// Пароль
$dbpasswd ="";
нва локальной машине работает, а для размещения в инете еще кое-что нужно...в зависимости от того какой провайдер у тебя | |
|
|
|