|
|
|
| В общем у Меня проблема.
Я никак не могу написать авторизацию на сайт.
Есть - Mysql4+php4
С помошью таблиц строится Дизайн сайта - в две колонки.
Слева Форма логина и еще фенечки, а справа текст...
Надо, что бы Формочка при входе появлялась...
Потом когда пользователь ввел логин+пароль - На этой же станице произошла авторизация!!!
+Что бы можно было автологин сделать...
Тоесть вот есть файл login.php и index.php - как произвести регистрацию(авторизацию пользователя)?
<login.php>
sesson_start();
$login=$_POST['login'];
$passw=$_POST['passw'];
$name_user=$_SESSION['name_user'];
$name_user="";
if(isset($autologin))
{
if(isset($login))
{
$sql="Select * from $dbtable_users Where name='$login' AND password='$passw'";
$result = mysql_query($sql) or die("Couldn't execute query_enter.php.");
$num_rows=mysql_num_rows($result);
}
if($num_rows>=1)
{
$sql="Select * from $dbtable_users Where name='$login' AND password='$passw'";
$query = mysql_query($sql) or die("Couldn't execute query1.");
$rows = mysql_fetch_array($query);
$name_user_id=$rows["id"];
$name_user=$rows["name"];
setcookie("user", "$login", time() + (86400 * 365) );
setcookie("user_id", "$name_user_id", time() + (86400 * 365) );
return $name_user;
}
}
else
{
if(isset($login))
{
$sql="Select * from $dbtable_users Where name='$login' AND password='$passw'";
$result = mysql_query($sql) or die("Couldn't execute query1.");
$num_rows=mysql_num_rows($result);
}
if($num_rows>=1)
{
$sql="Select * from $dbtable_users Where name='$login' AND password='$passw'";
$query = mysql_query($sql) or die("Couldn't execute query1.");
$rows = mysql_fetch_array($query);
$name_user_id=$rows["id"];
$name_user=$rows["name"];
setcookie("user", "$login");
setcookie("user_id", "$name_user_id");
return $name_user;
}
}
else
{
$name_user="";
return $name_user;
}
?>
<index.php>
if ($name_user=="")
{
///Показываем форму регистрации
}
if ($name_user !="")
{
//Показываем профайл юзера
} | |
|
|
|
|
|
|
|
для: welcome
(10.12.2005 в 20:14)
| | Тяжело чужой код разгребать :-)
Я авторизацию делаю так. Попробуй, может тебе понравится
В файле index.php имеем форму для авторизации с полями login и passw. И есть скрипт.
В нем получаем логин и пароль из кукиса. Если кукис есть, то пробуем по кукисному логину и паролю найти юзера в базе и если он (юзер) есть, то авторизуем его сразу, т.е. записываем его логин в переменную сессии типа $_SESSION['user']. Если такого юзера нет, то сессию делаем "гостевую". А формочка для авторизации постоянно торчит. Но можно ее и убрать. Т.е., например, проверить - если сессия не гостевая, то формочку убираем.
<?php
session_start();
$kuki = $_COOKIE['site'];
if ($kuki)
{
// addslashes, чтобы нельзя было подставить из кукиса всякую гадость :-)
$kuki_login = addslashes($kuki['login']); // получаем логин из кукиса
$kuki_pwd = addslashes($kuki['passw']); // пароль из кукиса
$res = mysql_fetch_array(mysql_query('select login, passw from table_users where
login="'.$kuki_login.'"'));
$nick = $res['nick'];
$db_login = $res['login'];
$db_pwd = $res['passw'];
// далее сравниваем логин и пароль из дб и из кукисов, если они совпадают, то начинаем сессию с
// кукисными значениями, если нет, то сессия гостевая
if ($db_login == $kuki_login and $db_pwd == $kuki_pwd) $sess = $db_login;
else $sess = 'guest';
}
else
$sess = 'guest';
$_SESSION['user'] = $sess;
?>
|
далее можно использовать переменную сессии как угодно. Открывать, например, нужный профайл в соответствии с ее значением.
В login.php просто получаем логин и пароль из формы. Затем проверяем, есть ли в базе такой юзер. Если он есть, то авторизуем его, т.е. устанавливаем соответствующую переменную сессии и устанавливаем куки. Всякие проверки, типа, если юзер уже авторизован, не делаем. Зачем? Если авторизованный юзер захочет еще раз авторизоваться, то пусть его авторизуется сколько хочет :-)
<?php
session_start();
$login = addslashes(trim($_POST['login']));
$passw = addslashes(trim($_POST['passw']));
if (!$login || !$pwd) // если не введен логин и/или пароль, то ошибка
{
echo 'Не введен логин и/или пароль';
exit;
}
$res = mysql_query('select login from users where login="'.$login.'" and passw="'.$passw.'"');
if (!mysql_num_rows($res)) // если введенный логин и/или пароль не существует, то ошибка
{
echo 'Введенный логин и/или пароль не существует';
exit;
}
// устанавливаем куки с именем site. Срок действия 1.01.2010
setcookie('site[login]', $login, mktime(0,0,0,01,01,2010)); // записываем логин
setcookie('site[passw]', $passw, mktime(0,0,0,01,01,2010)); // пароль
$log = mysql_fetch_array($res);
$_SESSION['user'] = $log['login']; // устанавливаем логин в переменную сессии
header('location: index.php');
?>
|
| |
|
|
|