Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите написать Авторизацию
 
 автор: welcome   (10.12.2005 в 20:14)   письмо автору
 
 

В общем у Меня проблема.

Я никак не могу написать авторизацию на сайт.
Есть - 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 !="")
{
//Показываем профайл юзера
}

   
 
 автор: WebTech   (10.12.2005 в 21:35)   письмо автору
 
   для: 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]'$loginmktime(0,0,0,01,01,2010)); // записываем логин
  
setcookie('site[passw]'$passwmktime(0,0,0,01,01,2010)); // пароль

$log mysql_fetch_array($res);
$_SESSION['user'] = $log['login']; // устанавливаем логин в переменную сессии

header('location: index.php');
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования