[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация админки
GreatMax
Ребята подскажите как лучше сделать авторизацию для админки?
На сессиях или сокете?



Спустя 24 минуты, 54 секунды (29.11.2010 - 10:37) vinnie написал(а):
на сессиях

Спустя 59 секунд (29.11.2010 - 10:38) vinnie написал(а):
можешь воспользоваться базовой аутентификацией) как те угодно

Спустя 2 минуты, 20 секунд (29.11.2010 - 10:40) GreatMax написал(а):
на админку сделал сесиях, а на авторизацию пользователей?
Типа такого: http://irbis-team.com/15/7/5
????

Спустя 1 минута, 28 секунд (29.11.2010 - 10:42) vinnie написал(а):
да, ты именно так

Спустя 25 секунд (29.11.2010 - 10:42) GreatMax написал(а):
Надо, что бы пользователь обычный запоминался!
Но с сокетами не очень безопасно будет, так как проект с платежами.

Ребята посоветуйте как бытЬ?

Спустя 1 минута, 1 секунда (29.11.2010 - 10:43) GreatMax написал(а):
Цитата (vinnie @ 29.11.2010 - 07:42)
да, ты именно так

Но там же идёт запись в сокет!

Спустя 1 минута, 7 секунд (29.11.2010 - 10:44) vinnie написал(а):
вот те код, пользуйся

<?php
//Если юзер нажал кнопку отправки
if (isset ($_POST['ok']))
{
//Инициализируем переменные
$login = !empty ($_POST['login']) ? trim ($_POST['login']) : NULL;
$pass = !empty ($_POST['pass']) ? trim ($_POST['pass']) : NULL;
$pass2 = !empty ($_POST['pass2']) ? trim ($_POST['pass2']) : NULL;
$email = !empty ($_POST['email']) ? trim ($_POST['email']) : NULL;
//Массивы ошибок
$error = array;
$error2 = array;
//Если юзер ничего не вписал в поля, выводим сообщение об ошибке
if ($login == "" or $pass == "" or $pass2 == "")
$error[] = "Заполните все поля";
elseif ($pass !== $pass2)
$error[] = "Пароли не совпадают";
//Если введенный юзером e-mail не совпадает шаблону, опять выводим сообщение об ошибка
if (!preg_match ("#^([a-z0-9\_\-\.])+@(a-z0-9\_\-\.)\.([a-z]{2,6})$#i", $email))
$error[] = "Неправильный формат e-mail";
//Если нет ошибок, едем дальше
if (count ($error) == 0)
{
//Подключаемся
mysql_connect ("localhost", "root") or die ("Невозможно подключиться к серверу");
mysql_select_db ("php") or die ("Невозможно выбрать базу данных");
//Проверка на занятость введенного логина
$sql = "SELECT COUNT(*) AS `cnt` FROM `users`
WHERE `login` = '"
.mysql_real_escape_string ($login)."'";
$query = mysql_query ($sql);
if (mysql_result ($query, 0) > 0)
$error2[] = "Юзер с таким логином уже есть";
//Проверка на занятость введенного e-mail
$sql2 = "SELECT COUNT(*) AS `cnt` FROM `users`
WHERE `email` = '"
.mysql_real_escape_string ($email)."'";
$query2 = mysql_query ($sql2);
if (mysql_result ($query2, 0) > 0)
$error2[] = "Юзер с таким e-mail уже есть";
//Если все ок, топаем дальше
if (count ($error2) == 0)
{
$sql3 = "INSERT INTO `users` (`login`, `pass`, `email`)
VALUES ('"
.mysql_real_escape_string ($login)."',
'"
.md5($pass)."',
'"
.mysql_real_escape_string ($email)."')";
$query3 = mysql_query ($sql3);
if ($query3)
echo "Вы успешно зарегистрированы";
else
echo "Ошибка во время регистрации";
}
else
{
foreach ($error2 as $error_echo2)
echo $error_echo2."<br />";
}
}

else
{
foreach ($error as $error_echo)
echo $error_echo."<br />";
}

}

?>


<form action="" method="post">

<p><label>
Желаемый логин</label><br />
<input
type="text" name="login" maxlength="30" value="<?php echo htmlspecialchars ($login); ?>"/>
</p>

<p><label>
Пароль</label><br />
<input
type="password" name="pass" maxlength="30" value="<?php echo htmlspecialchars ($pass); ?>/>
</p>

<p><label>Подтвердите пароль</label><br />
<input type="
password" name="pass2" maxlength="30" value="<?php echo htmlspecialchars ($pass2); ?>/>
</p>

<p><label>
E-mail</label><br />
<input
type="text" name="email" maxlength="50" value="<?php echo htmlspecialchars ($email); ?>/>
</p>

<p><input type="
submit" name="ok" value="Зарегистрироваться" />
</p>

</form>


Спустя 1 минута, 35 секунд (29.11.2010 - 10:46) vinnie написал(а):
это для регистрации

Спустя 41 секунда (29.11.2010 - 10:46) vinnie написал(а):
ща авторизацию скину

Спустя 1 минута, 28 секунд (29.11.2010 - 10:48) GreatMax написал(а):
У меня свой есть! Регистрация сделана за 5 минут.
Мне сам вход для обычный пользователей и админа. Проблема в том, как запомнить пользователя, что бы при последующем обращение он входил без ввода пароля. Как это можно сделать на сессиях

Спустя 2 минуты, 3 секунды (29.11.2010 - 10:50) vinnie написал(а):
за 5 минут??? Ты крут!!! А пароль в md5 хранишь?

Спустя 35 секунд (29.11.2010 - 10:50) GreatMax написал(а):
<?php
if(!defined('IN_MAIN')) {
die('Hacking attempt!');
}
session_start();
$err_secure = array();
#session_destroy();
#ВХОД


if (isset($_POST['user']) || isset($_POST['pass']) )
{
$user_post = !empty($_GET['user'])?ClearVariable($_GET['user']):NULL;
$pass_post = !empty($_GET['pass'])?ClearVariable($_GET['pass']):NULL;
$pass_post = !empty($_GET['key'])?ClearVariable($_GET['key']):NULL;

if ($user_post=="" || $pass_post=="" || $key_post=="") {
$err_secure[]='Одно из полей формы не заполнено.';
}
if ($_SESSION["secret_number"] != $key_post) {
$err_secure[]='Неправильный секретный код';
}

$pass_post=md5(md5($pass_post));
$sql_secure_session=mysql_query("SELECT * FROM user_cms WHERE login_adm='".$user_post."' AND password_adm='".$pass_post."'");
$sql_secure_session_view = mysql_fetch_assoc($sql_secure_session);

if ($user_post!=$sql_secure_session_view['login_adm'] || $pass_post!=$sql_secure_session_view['password_adm']) {
$err_secure[] = "Не верно введено имя пользователя и пароль.";
}

if(count($err_secure) == 0) {
$_SESSION['user']=$user_post;
$_SESSION['password']=$pass_post;
$_SESSION['secure']=md5(md5(rand(1,1000000)));
mysql_query("UPDATE user_cms SET key_adm='".$_SESSION['secure']."' WHERE login_adm='".$sql_secure_session_view['login_adm']."' AND password_adm='".$sql_secure_session_view['password_adm']."'");
}
else {
echo'<html>
<head>
<title>Авторизация</title>
<style type="text/css">
body,html {
background:#6FA1D9;
color:#ffffff;
letter-spacing: -0.5px;
p {color:#ffffff;}
}
td {font:normal 13px Verdana;color:#ffffff;}
INPUT{
border: 1px solid #ccc;
background-color: #E6EFF6;
color: #2C5883;
}
h1 {text-align:center; font:bold 18px Verdana; color:#ffffff;}
</style>
<script src="http://www.'
.$_SERVER['HTTP_HOST'].'/templates/js/jquery.min.js"></script>
</head>
<body>'
;
$_SESSION['capcha']=$_SESSION['user']++;
echo '
<script type="text/javascript">
alert ("Пароль не верный");



<p><b>Возникли ошибки:</b></p>'
;
foreach($err_secure AS $error)
echo "alert ('.$error.')
</script></body></html>"
;
exit;
}

}

$sql_secure_session=mysql_query("SELECT * FROM user_cms WHERE login_adm='".$_SESSION['user']."' AND password_adm='".$_SESSION['password']."'");
$sql_secure_session_view = mysql_fetch_assoc($sql_secure_session);

#Если сессия пустая выводим форму входа.
if ($sql_secure_session_view['login_adm']!=$_SESSION['user'] || $sql_secure_session_view['password_adm']!=$_SESSION['password'] || $sql_secure_session_view['key_adm']!=$_SESSION['secure'] ||!isSet($_SESSION['user']) || !isSet($_SESSION['password']) || !isSet($_SESSION['secure']))
{

echo '<html>
<head>
<title>Вход в систему</title>
<style type="text/css">
body,html {
background:#fff;
letter-spacing: -0.5px;
}
td {font:normal 13px Verdana;}
INPUT{
border: 1px solid #ccc;
background-color: #E6EFF6;
color: #2C5883;
}
h1 {text-align:center; font:bold 18px Verdana;}
</style>
<script src="http://www.'
.$_SERVER['HTTP_HOST'].'/templates/js/jquery.min.js"></script>
</head>
<body>
<h1>Вход в систему управления</h1>
<form method="post">
<table align="center">
<tr><td>Логин</td><td><input name="user" value="'
.$POST['user'].'"></td></tr>
<tr><td>Пароль</td><td><input type="password" name="pass"></td></tr>'
;
if ($_SESSION['capcha']>=3) {
echo '<tr><td>Код</td><td><img src="../protect.php" border="1"></td></tr>
<tr><td><input type="submit" name="submit" value="Вход"></td><td><input name="key">
</td></tr>
<tr><td></td><td><input name="form[value4]" type="checkbox" value="1"> Запомнить Вас?</td></tr>'
;
}
else {
echo '
<tr><td><input type="submit" name="submit" value="Вход"></td>
<td><input name="save" type="checkbox" value="1"> Запомнить Вас?</td></tr>'
;

}
echo '</table>
</form>
</body>
</html>'
;
exit;
}

Спустя 1 минута, 41 секунда (29.11.2010 - 10:52) vinnie написал(а):
лови

<?php
//Если юзер нажал кнопку отправки
if (isset ($_POST['ok']))
{
//Инициализируем переменные
$login = !empty ($_POST['login']) ? trim ($_POST['login']) : NULL;
$pass = !empty ($_POST['pass']) ? trim ($_POST['pass']) : NULL;
$sql = mysql_query ("SELECT `id` FROM `users`
WHERE `login` = '"
.mysql_real_escape_string ($login)."'
AND `pass` = '"
.md5($pass)."'");
if (mysql_num_rows ($sql) < 0)
echo "Неверные данные";
else
{
session_start ();
$row = mysql_fetch_assoc ($sql);
$_SESSION['id'] = $row['id'];
$_SESSION['login'] = $row['login'];
header ("Location: secretnaya_zona.php");
}
}

?>

Спустя 51 секунда (29.11.2010 - 10:53) GreatMax написал(а):
А как тебе моя авторизация выше?

Спустя 37 секунд (29.11.2010 - 10:54) vinnie написал(а):

if (isset($_POST['user']) || isset($_POST['pass']) )


здест надо проверять на пустоту, а не на существование

Спустя 3 минуты, 21 секунда (29.11.2010 - 10:57) GreatMax написал(а):
Цитата (vinnie @ 29.11.2010 - 07:54)

if (isset($_POST['user']) || isset($_POST['pass']) )


здест надо проверять на пустоту, а не на существование

Проверка идёт ниже! если переменные не созданы то код не выполняется!

Р.S. Сокеты вообще не использовать для авторизации?

Спустя 49 секунд (29.11.2010 - 10:58) vinnie написал(а):
Сессии рулят!

Спустя 30 секунд (29.11.2010 - 10:58) vinnie написал(а):
твой сайт есть в инете?

Спустя 37 секунд (29.11.2010 - 10:59) GreatMax написал(а):
Цитата (vinnie @ 29.11.2010 - 07:58)
Сессии рулят!

Понятно, что рулят, не спорю!!!
Возможность же есть запомнить пользователя как то ещё?

Спустя 43 секунды (29.11.2010 - 11:00) vinnie написал(а):
куки, но лучше сессии

Спустя 36 секунд (29.11.2010 - 11:00) GreatMax написал(а):
Цитата (vinnie @ 29.11.2010 - 07:58)
твой сайт есть в инете?

Нет. Есть его облегчённые версии.

Спустя 19 секунд (29.11.2010 - 11:01) vinnie написал(а):
дай глянуть)

Спустя 2 минуты, 37 секунд (29.11.2010 - 11:03) GreatMax написал(а):
Цитата (vinnie @ 29.11.2010 - 08:01)
дай глянуть)

Скинул в личку. Но тот сайт очень старый
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.