Перейти к содержимому

Сервис обмена электронных валют

Выбрать шаблон и создать сайт

Как сделать авторизацию на сайте?

#21 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8
0

Отправлено 04 Февраль 2010 - 23:48

phpuser, последний оффтоп.
На хабре сидят множество умников, которые считаю себя мега мега и умеют только хамить, а самим статьи написать... Них они не могут, только хамиться. Хотя я и не отрецаю, что пример с хабра про авторизацию, совсем нубский.
  • 0

#22 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2010 - 00:37

Выкладываю свой вариант авторизации.

Тока сильно не ругать! На Хабре того бедного паренька просто задавили своими комментами.
Я аж в шоке. Если он вроде норм. авторизацию написал то что уж говорить о моей.


index.php
<html>
<head><title>Login</title></head>
<body>
<?php if ($_GET['bad'] == 1) {?>
<font color="#FF0000">Bad login or password, please try again<br/></font>
<?php } ?>
<form action="login.php" method="post">
<table width="300" border="0" cellspacing="0" cellpadding="2">
<tr><td>User name:</td><td><input type="text" name="user" /></td></tr>
<tr><td>Password:</td><td><input type="password" name="password" /></td></tr>
<tr><td colspan="2"><center><input type="submit" value="Login" /></center></td></tr>
</table>
</form>
</body>
</html>


login.php
<?php
ini_set("include_path", '/home/localhost/www/php/pear/' . PATH_SEPARATOR . ini_get("include_path"));
require_once('pear/DB.php');
$dsn = 'mysql://root@localhost/phpbd';
$db =& DB::Connect($dsn, array( ));
if (PEAR::isError($db)) {die($db->getMessage( ));}
$res = $db->query("SELECT id FROM users WHERE name=? AND password=MD5(?)",array($_POST['user'], $_POST['password']));

$row = array(null);
if ($res != null)
$res->fetchInto($row);
if ($row[0] != null)
{
session_start();
$_SESSION['user'] = $row[0];
header("Location: welcome.php");
}
else
{
header("Location: index.php?bad=1");
}
?>


welcom.php
<?php
session_start( );
if ($_SESSION['user'] == null || $_SESSION['user'] < 1)
{
header("Location: index.php");
exit;
}
ini_set("include_path", '/home/localhost/www/php/pear/' . PATH_SEPARATOR . ini_get("include_path"));
require_once('pear/DB.php');
$dsn = 'mysql://root@localhost/phpbd';
$db =& DB::Connect($dsn, array());
if (PEAR::isError($db)) {die($db->getMessage( ));}
$res = $db->query("SELECT name FROM users WHERE id=?", array($_SESSION['user']));
$res->fetchInto($row);
?>
<html>
<head><title>Welcome</title></head>
<body>
Welcome <?php echo($row[0]); ?><br /><br />
<a href="logout.php">Logout</a>
</body>
</html>



logout.php
<?php
session_start();

session_destroy();

header("Location: index.php");
?>


Писал смотря в книги. Стоит пока только на локалке. Жду Ваших мнений можно ли её использовать в своих проектах?
  • 0
Вникаю в тему создания сайтов...


#23 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2010 - 02:37

phpuser, а ты уверен, что на каждом серваке стоит PEAR? Конечно можно и вручную подключать, но это уже не то.
А так, скрипт как я уже говорил... Разовый, ну или узкоспециализированный. Так как процедурный код встроить в крупный проект, это означает подогнать одно от другого.
Что же значит работа с классами. Мы реализуем класс, у которого есть интерфейс(открытые методы) и закрытые методы с состояниями. С помощью интерфеса мы можем воздействовать на состояния объекта. То есть методы выполняют операции над самим объектом.
То есть для использования твоего процедурного кода нам надо написать 5 файлов и как-то совместить их с системой. А если система усложняется. Нам остаётся только копаться в коде.
Суть класса же состоит в том, что он реализован так удобно, что для его использования достаточно создать объект и произвести над ним действия в виде 1-2 методов.
  • 0

#24 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2010 - 03:03

Ни понял ничего. Ты на русском говорил? ))
Ты мне лучше скажи этот скрипт использовать можно или он взламывается на раз?


  • 0
Вникаю в тему создания сайтов...


#25 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2010 - 13:33

phpuser, не вижу защиты от инъекций, стоит послать тебе левые данные, и твои базы улетят в гикуда. Конечно я не знаю PEAR, может там метод query сам экранирует все спецсимволы...
$res = $db->query("SELECT id FROM users WHERE name=? AND password=MD5(?)",array($_POST['user'], $_POST['password']));

И меня интересует, а разве текстовые значения не надо в одинарные кавычки заключать? У тебя не заключены...
  • 0

#26 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2010 - 15:51

Это делать не обязательно. А на счёт защиты от инъекций я подумаю.


  • 0
Вникаю в тему создания сайтов...


#27 register

register
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 20 Август 2010 - 06:10

Друзья! Давненько тут никто не писал... Хотелось бы узнать, а кто-нибудь писал авторизацию на ООП? Буду очень благодарен, если кто-нибудь приведет хоть маленький примерчик!
  • 0

#28 register

register
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 05 Сентябрь 2010 - 12:33

спасение утопающих - дело рук самих утопающих!.. посидел, подумал и написал сам ))
  • 0

#29 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Сентябрь 2010 - 14:45

register, извиняюсь, но писать авторизацию на ООП... Скажите мне, что твм будет классом, а что объектом?
Я тут только вижу выход в статическом классе.
Конечно можно написать ересь, в которой объектом будет какой-либо юзер, а классом пользователь и в данном классе определить методы авторизации, но это как-то странно, пользователь сам авторизует себя в системе? Вообщем я не вижу такого смысла в ООП.

спасение утопающих - дело рук самих утопающих!.. посидел, подумал и написал сам ))

Можно полюбопытствовать и глянуть на реализацию?
  • 0

#30 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 05 Сентябрь 2010 - 15:48

ООП создано для того, чтобы сделать более удобным сложные системы. А что может быть сложного в авторизации пользователей?
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru