Имеется форма авторизации login.html
<html>
<body>
<center>
<hr>
<form action=validate.php method=POST>
Имя:<input type=text name=name>
Пароль:<input type=password name=pass>
<input type=submit value=Войти>
</form>
<center><a href=reg.html><b>Регистрация</b></a></center>
<hr>
</center>
</body>
</html>
Имеется файл записи пользователей в масив base.txt
<?php
$mass = file("base.txt");
$mass[count($mass)-1]="/".$_POST["name"]."=".$_POST["pass1"]."/";
$mass[count($mass)]="?>";
$fp=fopen("base.txt", "w");
for($i=0;$i<count($mass);$i++)
{
if ($i==count($mass)-1)
fputs($fp,"\r\n");
fputs($fp, $mass[$i]);
}
?>
Имеется проверка логинов и паролей validate.php
<?php
require "base.txt";
if (!isset($base[$name]))
{
require "login.html";
echo "<b><center><font color=red>Неправильно указан пользователь!</center></font></b>";
exit;
}
if (md5($pass) !== $base[$name])
{
require "login.html";
echo "<b><center><font color=red>Неверный пароль!</center></font></b>";
exit;
}
Header("Location: private.php");
?>
base.txt
<?php
?>
Форма регистрации reg.html
html>
<body>
<center>
<hr>
<form action=reg.php method=POST> //обработка данных будет происходить в reg.php
<table border=0> //для удобства выводим поля для заполнения в таблице
<tr><td>
Имя:</td><td><input type=name name=name>
<td></tr>
<tr><td>Пароль:</td><td><input type=password name=pass1>
</tr><tr><td>
<tr><td>Еще раз:</td><td><input type=password name=pass2>
</tr><tr><td>
Почта:</td><td><input type=text name=email>
</tr></td>
</table><br>
<input type=submit value=Зарегистрироваться>
</form>
<center><a href=localhost/login.html><b>Вход</b></a></center>
<hr>
</center>
</body>
</html>
Имеется защищенная страница private.php
<?php
if ($HTTP_REFERER !== "localhost/login.html")
{
echo "Хакать надумали? ";
exit;
}
?>
<html>
<body>
<br><br>
<br><br>
<center>
<font color=red size=7>
Private page!
</font>
</center>
<br><br>
<br><br>
</body>
</html>
13 февраля 2009 в 11:03
И вообще всё можно делать через аякс там я бы сказал даже удобней в этом случае.
И лучшая среда разработки это gVim поддерживает кучу языков программирования. notepad++ отдыхает.
Zend выводит слишком много лишней инфы но незаменим при отладке(в данном случае это не нужно).
Dreamweaver это попытка сделать ещё один front page по моему мнению ерунда.
13 февраля 2009 в 4:03
=))))))))
13 февраля 2009 в 4:02
Вот тебе файл записи пользователей в массив
<?php
each($_POST);
// проверяем откуда пришёл
if($_GET['HTTP_REFERER']!=$_GET['HTTP_HOST']."/reg.html")
{
// отправляем отуда он пришёл
$location=$_GET['HTTP_REFERER'];
}
else
{
// если пропущен один из параметров
if(!isset($name) || $name=='' || !isset($pass1) || $pass1=='' || $pass2=='' || !isset($pass2))
{
$location=$_GET['HTTP_REFERER'];
}
else
{
// Тут склеим в одну линию логин и пароль как он записан в базе то есть в строчку
$addUserLine=$name."=".md5($pass)."/";
// Проверяем существует ли файл
if(file_exsist("base.txt"))
{
// Открываем для записи
$fData=fopen("base.txt", "a+");
/// блокируем для записи
flock($fData, LOCK_EX);
// добавляем пользователя
$addUser=fwrite($fData, $addUserLine);
// проверяем добавился ли
if($addUser==strlen($addUserLine))
{
//перенаправление после регистраци кудалибо для примера
$location=$_GET['HTTP_HOST']."private.php;
}
// если не добавился то тоже самое можно предложить заново зарегистрироваться
else
{
$location=$_GET['HTTP_HOST']."/reg.html";
}
// снимаем блокировку
flock($fData, LOCK_UN);
// закрываем файловый поток
fclose($fData);
}
}
}
// перенаправляем куда надо
Header("Location: $location");
?>
вот тебе проверка
<?php
each($_POST);
// если пользователь пришёл не оттуда
if($_GET['HTTP_REFERER']!=$_GET['HTTP_HOST']."/login.html")
{
// отправляем отуда он пришёл
$location=$_GET['HTTP_REFERER'];
}
else
{
// если пропущен один из параметров
if(!isset($name) || $name=='' || !isset($pass) || $pass=='')
{
// идёт туда откуда пришли
$location=$_GET['HTTP_REFERER'];
}
else
{
// Тут склеим в одну линию логин и пароль как он записан в базе то есть в строчку
$controlLine=$name."=".md5($pass);
// Проверяем существует ли файл
if(file_exsist("base.txt"))
{
// открываем файловый поток
$fData=fopen("base.txt", "r");
// блокируем
flock($fData, LOCK_EX);
// читаем пока файл незакончиться
$findArr=fread($fData, filesize($fData));
// разбиваем на массив
$findLines=$explode("/", $findArr);
// снимаем блокировку
flock($fData, LOCK_UN);
// закрываем поток
fclose($fData);
// вроде необязательно
i=0;
// перебираем массив
while(i!=count($findLines))
{
// если нашли искомое
if($findLines[$i]==$controlLine)
{
// перенаправляем
$location=$_GET['HTTP_HOST']."private.php";
}
// это оставить
i++;
}
// если не нашли на страницу логина
$location=$_GET['HTTP_HOST']."/login.html";
}
}
// а вот теперь перенаправляем туда куда надо
header("Location: $location");
?>
Прочти каждый комментарий
13 февраля 2009 в 0:05
и еще:
Переменные из формы(post) получают так
$_POST['name']
13 февраля 2009 в 0:05
короче нужно сравнить введеную name ..вот это name передается в action="validate.php"
и вызвать записанный name из базы base.txt тоже в validate.php
у меня он так называется $base['nams']
Соединив всё в одном файле validate.php
13 февраля 2009 в 0:05
Алексей ..спс об этом не знал..
А $base – тоже какую-то функцию выполняет
13 февраля 2009 в 0:04
substr_count($base['nams'],"base.txt") – точку с запятой на конце нужно ставить? и вообще смысл этой строки непонятен.
name_Edit=$name]; – это вообще непонятно что. Смайлик на конце что-ли?
if($base['nams']=="$name")это что ты сравниваешь?
header(location: private.html) – опять точку с запятой забыл
13 февраля 2009 в 0:04
И еще
header(location: private.html)
строку указывают в кавычках
13 февраля 2009 в 0:03
напишите…плиз ..
Я уже неделю разбераюсь в этом ,никак не могу разобраться..
<input type=text name=name>это форма входа
нужно привязать вот это name с записанным в базе
В базе вот это..
——————————
$base['nams']= "nick"
——————————-
У меня вот так,но это не работает..
Прошу сделайте validate.php
<?php
substr_count($base['nams'],"base.txt")
name_Edit=$name];
if($base['nams']=="$name")
{
eacho header(location: private.html)
{
?>
11 февраля 2009 в 12:00
Linux + PHP IDE (например зенд или пхп дизайнер) + SVN
и можно кодить и кодить, кодить и кодить
11 февраля 2009 в 11:02
#17 //ru.php.net/substr_count . Вообще, на php.netесть все.)
#18 Одной книги порой мало.)Я вот на эту книгу просто молюсь: //www.books.ru/shop/books/367978
11 февраля 2009 в 10:02
прочти одну умную книжку и будешь PHP кодером
мне, например, в свое время вот эта понравилась //oz.by/books/more1013570.html
ЗЫ. а если ты не пхп кодер, так, имхо, нехер реализовывать простую форму PHP авторизации… и людей тупыми вопросами мучать…
11 февраля 2009 в 3:00
Можешь рассказать как ей воспользоваться..
просто я не php кодер..))
11 февраля 2009 в 1:05
Попробуй с помощью substr_count искать полностью строку в файле.
11 февраля 2009 в 1:02
Вот так написал вроде работает!!! файл регистрации пароля
——————————————
<?php
$mass = file("base.txt");
$mass[count($mass)-1]= "\$base['".name."'] = \"".$_POST["pass1"]."\";";
$mass[count($mass)]="?>";
$fp=fopen("base.txt", "w");
for($i=0;$i<count($mass);$i++)
{
if ($i==count($mass)-1)
fputs($fp,"\r\n");
fputs($fp, $mass[$i]);
}
?>
————————————–
В base .txt получается…
———————————–
<?php
$base['pass'] = "1234";
?>
————————————
Вопрос такой как связать данные пароля базы с введенными в форме login.htmlв файле validate.php ????????? =)
Я пытаюсь как-то так сделать
Validate.php
<?php
require "base.txt"; //подключаем базу пользователей
if ($base['pass'] =$pass1); вот здесь запара,тк я не знаю правильно я сделал…
echo require "private.php";
exit;
?>
ПОМОГИТЕ !!!! )))
9 февраля 2009 в 16:05
#13, ага, error_reporting(E_ALL); и вперед.) Хотя…О других средах разработки задумывался, даже хотел на них перелезть. Но все время, как около компа, забываю об этом. Спасибо, что напомнили. =)
9 февраля 2009 в 16:01
Даниил Drimean Малых,
а дебажить с Notepad++ как? через эхо в браузер? (сам так лет пять назад делал… как вспомню – мурашки по коже…)
9 февраля 2009 в 15:04
руки надо отрывать за такой говнокод
9 февраля 2009 в 14:04
вопрос к ТС:
А мускула на хосте нету?
Нафиг такие извращения с файлами?!
9 февраля 2009 в 14:02
Кстати, по validate.php. Может проще формировать строку, идентичную той, что записываетя в файл, и далее substr_count'омпроверять?
9 февраля 2009 в 14:01
#8 Согласен, ужас.) Может, лучше так?
$content = "/".$_POST["name"]."=".$_POST["pass1"]."/ \r\n";
$filename = 'base.txt';
if ( ( file_exists($filename) ) &&( is_writable($filename) ) &&( $file = fopen($filename, 'a') ) )
{
if (fwrite($handle, $content) === false )
{
echo 'FUCK!';
}
}
else
{
echo 'WTF?!';
}
9 февраля 2009 в 13:02
Юзаю обычный блокнот)
Или прямо с серва под ssh через "ee"
Глянул на это и ужаснулся:
<?php
$mass = file("base.txt");
$mass[count($mass)-1]="/".$_POST["name"]."=".$_POST["pass1"]."/";
$mass[count($mass)]="?>";
$fp=fopen("base.txt", "w");
for($i=0;$i<count($mass);$i++)
{
if ($i==count($mass)-1)
fputs($fp,"\r\n");
fputs($fp, $mass[$i]);
}
9 февраля 2009 в 11:02
#4
Мне Zend Studio нравится
9 февраля 2009 в 10:05
Я php кодер.) В Notepad++. Больше не в чем.)
9 февраля 2009 в 10:05
Игорь Михайлов, опишите, что имено не работает? Регистрация, или что? Просто полностью во все вникать лень, а зная проблему будет легче.)
9 февраля 2009 в 10:05
установи eclipse себе, вот сборка под php //www.eclipse.org/pdt/downloads/ там и ошибки он тебе сам найдет, и покажет еще как исправить…
просмотрел код, вникать в суть впадлу, но он явно кривой у тебя, намутили хз знает что..
9 февраля 2009 в 8:04
сделай себе нормальную среду разработки и ковыряйся дальше…
например так //www.netbeans.org/kb/docs/php/configure-php-en...
ЗЫ. я не пхп кодер – я хз в чем там люди работают…
9 февраля 2009 в 7:03
Проблема в том ,что половина скриптов с ошибками…
Я как ни старался,нифига не пашет!!!
Кто силён в php!!!Подскажите в чём дело!!