<?php
$login = "admin";//Логин
$pass = "";//md5 кеш Пароля
# Проверка вода логина и пароля
if(isset($_POST['login'])){$vlogin = $_POST['login'];}
if(isset($_POST['pass'])){$vpass = md5($_POST['pass']);} // Если ввели пароль, кодируем md5 для дальнейшего сравнения
//==================================================================
// Остальная часть кода будет проверять схожесть логина и запись в Cookie
//==================================================================
if($_GET['auth']=='exit'){ //Если пользователь выходит из панели
// ADMIn EXIT
setcookie("user","");
setcookie("pass","");
header("Location: admin.php");
exit();
}else if($_GET['auth']=='yes'){
if($vlogin==$login){
if($vpass==$pass){
setcookie("user","$login",time()+ "9100");
setcookie("pass","$pass",time()+ "9100");
$_SESSION['admin'] = true;
}
}
header("Location: admin.php");
exit();
}else{
if($_COOKIE['user']=="$login" && $_COOKIE['pass']=="$pass"){
setcookie("user","$login",time()+ "9100");
setcookie("pass","$pass",time()+ "9100");
$_SESSION['admin'] = true;
}
}
?>
admin.php
<?php
include 'engine/auth_admin.php';
?>
<?if($_SESSION['admin']){?>
Вы успешно авторизовались!!
<? }else{ ?>
Вход в админпанель.
<FORM ACTION="admin.php?auth=yes" METHOD=POST>
LOGIN:<INPUT TYPE=TEXT NAME=login><br>
PASSWORD:<INPUT type="password" name="pass" SIZE=20>
<INPUT type=submit>
</FORM>
<? } ?>
Даже если ты узнаешь md5 кеш Пароля то войти все равно не сможешь :1124:
Кстати зачем копировать скрипты с других сайтов, а самому слабо написать?
15.04.2009, 17:59
asbury
#5 скажите пожалуйста, вот я не понимаю, как сессия будет читаться в начале других страниц если нё там указать просто как фунцию
<?
session_start();
/* эта функция открывающая или продолжающая работу с сессиями. Она должна быть задана в самом начале страницы до отправки заголовка страницы. */
check(); //наша функция проверки.
?>
Другое дело если инклюдом, или типа в хэше данные храняться?:)
21.06.2009, 20:10
locky-yotun
Добрый день!
Тема еще жива? ;)
Ситуация такая:
Пытаюсь реализовать авторизацию на своем сайте, используя код, предложенный Webmaster'ом в посте #4. С md5-хешем и экранированием спец-символов у меня этот код работать не захотел (пока?), так что от использования md5 и mysql_escape_string я временно отказался. В итоге login.php выглядит вот так:
//Проверка нажатия кнопки submit
if(!isset($_POST['subm'])) show_form('');
//Проверка на введенные данные
if(!isset($_POST['user']) OR !isset($_POST['pass']) OR empty($_POST['user']) OR empty($_POST['pass']))
show_form("Не правильная пара логин-пароль.");
// подключение к БД - соответственно прописываем свои данные доступа к базе данных
$connection = mysql_connect("localhost","root","") ;
mysql_select_db('mysite') ;
// НЕ смог достучаться до БД
if (mysql_error()) die();
$user = $_POST['user'];
$pass = $_POST['pass'];
// Проверяем есть ли пользователь с таким логином и паролем
$result = mysql_query("SELECT `id` FROM `checker` WHERE `name`='".$user."' AND `pass`='".$pass."'");
// если есть - впускаем
if(mysql_num_rows($result)==1)
$_SESSION['admin']=$adm;
// Если нет - пишем так.
else
show_form("Incorrect login-password.");
// Далее сообщение которое увидит вошедший пользователь
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" >
<meta http-equiv="refresh" content="3; url=news.html" >
Здравствуйте <?=mysql_escape_string($user);?>!
В итоге после ввода верной пары логин-пароль происходит редирект на news.html (это форма добавления новостей на сайт с внесением их в БД, должна быть доступна только администратору). НО! Если просто вбить в адресной строке %sitename%/news.html, то опять же попадаем на эту страницу, хотя логин и пароль не вводились.
Вопрос: что не так (если не так) в коде, и какой код надо добавить на news.html для того, чтобы зайти на них можно было только после аутентификации?
PS: Извиняюсь за возможную несвязность, надеюсь все понятно))
21.06.2009, 20:26
Apay
1) что такое $adm - эта переменная нигде не инициализируется, может лучше написать
// если есть - впускаем
if(mysql_num_rows($result)==1)
$_SESSION['admin']=$user;
2) сделайте не news.html, а news.php, в самом начале которого вставьте (такое нужно вставить в начало каждой защищенной страницы)
на всех страницах которые подлежат авторизации
вы должны добавить код проверяющий
есть ли в переменной
$_SESSION['admin'] какое либо значение
для этого в самом начале файло надо написать
<?
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin']) exit();
?>
21.06.2009, 23:03
locky-yotun
to Apay, Webmaster
Спасибо, разобрался, все работает! :)