|
|
|
| Я хочу сделать скрипт. Сейчас объясню, как он должен работать.
Есть файл index.php, в нем записан код:
1) Если $_POST['pass'] и $_SESSION['pass'] пусты то выводить форму с полем pass и с действием на index.php.
2) Если в $_POST['pass'] что-то есть, то проверять, если значение его равно "parol" и $_SESSION['pass'] пуста, то зарегистрировать переменную $_SESSION['pass'] равную $_POST['pass'], а если не пуста, написать "привет, $_SESSION['pass']".
3) Если $_POST['pass'] не равен "parol" или пуст, проверить равна ли $_SESSION['pass'] "parol". Если не равна, то переадесовать на index.php. (возможно, этот пункт писать не стоит, т.к. он очень похож на 1-ый)
4) Ко всему этому, если $_POST['pass'] пуст, а $_SESSION['pass'] равна "parol", написать "привет, $_SESSION['pass']".
Прошу, помогите написать этот скрипт, потому что я совсем запутался со всеми if и else. | |
|
|
|
|
|
|
|
для: Freddie_X
(30.09.2006 в 01:20)
| | Я сам немного не понял.
Вы хотите написать скрипт для входа на сайт.
Если так, то где у вас хранятся данные о пользователях? | |
|
|
|
|
|
|
|
для: Михалыч
(30.09.2006 в 01:26)
| | Причём данные о пользователях? Я просто создаю защищённую зону и всего есть только одно поле - pass, которое должно равняться "parol". | |
|
|
|
|
|
|
|
для: Freddie_X
(30.09.2006 в 01:36)
| | Вот выдернул из своей админки и немного упростил
форма index.php
<form action=authoriz.php method=post>
<table width="250" border="0" cellspacing="0" cellpadding="5">
<tr>
<td align="right" class="text">Логин :</td>
<td width="30" align="center"><input name=name type=text class="text"></td>
<td width="30" rowspan="2" align="center"><input name="Submit" type="image" src="pic/bootons/select.gif" alt="войти в систему"></td>
</tr>
<tr>
<td align="right" class="text">Пароль :</td>
<td width="30" align="center"><input name=password type=password class="text"></td>
</tr>
</table>
<br>
</form>
|
Код обработчика authoriz.php
<?php
$forname = substr($_POST['name'], 0, 8); // обрезка до 8 символов
$forname = trim($_POST['name']); // удаление пробелов
$forname = htmlspecialchars($_POST['name']);
$forname = stripslashes($_POST['name']); //Функция удаления обратных слешей
$forpassword = substr($_POST['password'], 0, 8); // обрезка до 8 символов
$forpassword = trim($_POST['password']); // удаление пробелов
$forpassword = htmlspecialchars($_POST['password']);
$forpassword = stripslashes($_POST['password']); //Функция удаления обратных слешей
$name = "имя"
$password = "пароль"
if (md5($forpassword) == $password && $forname == $name)
{
if(session_start())
{
$_SESSION['user'] = $_POST['name'];
$_SESSION['password'] = md5($_POST['password']);
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=main.php'></HEAD><body>";
}
}
else
{
echo "<table width=100% height=100%><tr><td align=center valign=middle>Ошибка идентификации: неправильный пароль</td></tr></table>";
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'></HEAD><body>";
exit();
}
?>
|
это в защищенные страницы например main.php
<?php
session_start();
$name = "имя"
$password = "пароль"
if ($_SESSION['password'] == $password && $_SESSION['user'] == $name)
{
//echo "Ok!";
if(!isset($_SESSION['user'])) {header("Location: ./index.php"); exit; }
if(!isset($_SESSION['password'])) {header("Location: ./index.php"); exit; }
}
else
{
echo "Hacker!";
unset($_SESSION['user']);
unset($_SESSION['password']);
echo "<table width=100% height=100%><tr><td align=center valign=middle>Ошибка идентификации: неправильный пароль</td></tr></table>";
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'></HEAD><body>";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: zavragnov
(30.09.2006 в 02:04)
| | добавьте одну строку в код
<?php
$forname = substr($_POST['name'], 0, 8); // обрезка до 8 символов
$forname = trim($_POST['name']); // удаление пробелов
$forname = htmlspecialchars($_POST['name']);
$forname = stripslashes($_POST['name']); //Функция удаления обратных слешей
$forpassword = substr($_POST['password'], 0, 8); // обрезка до 8 символов
$forpassword = trim($_POST['password']); // удаление пробелов
$forpassword = htmlspecialchars($_POST['password']);
$forpassword = stripslashes($_POST['password']); //Функция удаления обратных слешей
$name = "имя"
$password = "пароль"
//---------------------------------------------------------------------------------------------------------------------------
$password = md5($password);
// Ибо без этой строки вы в жизни в защищенную зону не зайдете
//---------------------------------------------------------------------------------------------------------------------------
if (md5($forpassword) == $password && $forname == $name)
{
if(session_start())
{
$_SESSION['user'] = $_POST['name'];
$_SESSION['password'] = md5($_POST['password']);
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=main.php'></HEAD><body>";
}
}
else
{
echo "<table width=100% height=100%><tr><td align=center valign=middle>Ошибка идентификации: неправильный пароль</td></tr></table>";
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'></HEAD><body>";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: Lelik
(30.09.2006 в 07:48)
| | Спасибо, хороший скрипт!
Но это немного не то, что я хотел. Я хотел поместить скрипт на одну страницу.
Но уже передумал, потому что очень сложно так сделать.
Буду использовать вашу схему. =) | |
|
|
|
|
|
|
|
для: Lelik
(30.09.2006 в 07:48)
| | это неплохой код. но тут нужно вручную задать на странице всех пользователей, которые имеют доступ. А это при просмотре кода страницы позволит узнать логин и пароль (хоть и в зашифрованом виде.
как организовать проверку например из базы данных на сервере? | |
|
|
|
|
|
|
|
для: FenikS
(19.10.2006 в 12:39)
| | Надеюсь и мне поможете, есть скрипт:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body><form action="" method="post" name="testlog">
<p>
<input name="login" type="text" />
</p>
<p>
<input name="passwd" type="password" />
<input name="log" type="submit" />
</p>
</form>
<? //Если кнопка была нажата то проверяем данные
if(isset($_POST['log'])) {
$login=$_POST['login'];
$passwd=$_POST['passwd'];
$passwd=md5($passwd);
//затем подключаемся к нащей базе
$hostname = "localhost";
$database = "phpless7";
$username = "phpless7";
$password = "ouehbKAP ";
$test = mysql_pconnect($hostname, $username, $password) or die("не могу подключиться к базе");
mysql_select_db($database) or die ("Немогу выбрать базу ");// выбираем базу
//проверяем существует ли такой логин и email в нащей базе
$result = mysql_query("SELECT true FROM users WHERE login = '".$login."' AND passwd='".$passwd."'");
if(@mysql_num_rows($result)>0 ) { //если да то извеняемся
echo "Вощёл";
}
else{echo "не вощёл";}
} else{
echo нажми;} ?>
</body>
</html>
|
но как и что дальще писать не пойму, то есть понимаю что нужна сессия но как её сделать, читаю мануал но там дальще
<?php
$login="admin";
$pass="pass";
if (!isset($HTTP_SERVER_VARS['PHP_AUTH_USER'])
|| $HTTP_SERVER_VARS['PHP_AUTH_USER']!=$login || $HTTP_SERVER_VARS['PHP_AUTH_PW']!=$pass) {
header("WWW-Authenticate: Basic realm=\"login\"");
header("HTTP/1.1 401 Unauthorized");
exit("Access Denied\n");
}
echo "Hi admin";
?>
| но это не то, совсем за парился.... | |
|
|
|