Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Регистрация и авторизация без MySql

Сообщения:  [1-7] 

 
 автор: ZetRider   (18.10.2005 в 21:50)   письмо автору
 
   для: cheops   (18.10.2005 в 21:30)
 

ОГРОМНОЕ СПАСИБА!) недумал что ктото придет напомощь) Вот теперь нуна думать как куки ставить! или сессии хотябы,.. мда в чужом коде будет сложно разобратся.. =(

   
 
 автор: cheops   (18.10.2005 в 21:30)   письмо автору
 
   для: ZetRider   (18.10.2005 в 16:16)
 

Авторизация состоит из двух файлов, основного
<?php
  
// Имя файла данных
  
$filename "text.txt"
  
// Определяем константу FIRST для
  // того, чтобы точно определить 
  // был ли выполнен файл 1.php
  
define("FIRST",1);
  
// Проверяем не пусто ли содержимое
  // массива $_POST - если это так, 
  // выводим форму для авторизации
  
if(empty($_POST))
  {
    
?>
    <table>
      <form method=post>
      <tr>
        <td>Имя:</td>
        <td><input type=text name=name></td>
      </tr>
      <tr>
        <td>Пароль:</td>
        <td><input type=password name=pass></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td><input type=submit value='Войти'></td>
      </tr>
      </form>
   </table>
   <?php
  
}
  
// В противном случае, если POST-данные
  // переданы - обрабатываем их
  
else
  {
    
// Проверяем корректность введённого имени
    // и пароля
    
$arr file($filename);
    
$i 0;
    
$temp = array();
    foreach(
$arr as $line)
    {
      
// Разбиваем строку по разделителю ::
      
$data explode("::",$line);
      
// В массив $temp помещаем имена и пароли
      // зарегистрированных посетителей
      
$temp['name'][$i]     = $data[0];
      
$temp['password'][$i] = $data[1];
      
$temp['email'][$i]    = $data[2];
      
$temp['url'][$i]      = trim($data[3]);
      
// Увеличиваем счётчик
      
$i++;
    }
    
// Если в массиве $temp['name'] нет введённого
    // логина - останавливаем работу скрипта
    
if(!in_array($_POST['name'],$temp['name']))
    {
      exit(
"Пользователь с таким именем не зарегистрирован");
    }
    
// Если пользователь с именем $_POST['name'] обнаружен
    // проверяем правильность введённого пароля
    
$index array_search($_POST['name'],$temp['name']);
    if(
$_POST['pass'] != $temp['password'][$index])
    {
      exit(
"Пароль не соответствует логину");
    }
    
// Если переданный пароль соответсвует паролю из
    // файла text.txt выводим форму для редактирования
    // данных
    
include "2.php"// Обработчик второй HTML-формы
    
?>
    <table>
      <form method=post>
        <input type=hidden name=name
         value='<?= htmlspecialchars($temp['name'][$index]); ?>'>
        <input type=hidden name=pass
         value='<?= htmlspecialchars($temp['password'][$index]); ?>'>
        <input type=hidden name=edit value=edit>
      <tr>
        <td>Пароль:</td>
        <td><input type=password name=passw
         value='<?= htmlspecialchars($temp['password'][$index]); ?>'>
        </td>
      </tr>
      <tr>
        <td>Пароль:</td>
        <td><input type=password name=pass_again
         value='<?= htmlspecialchars($temp['password'][$index]); ?>'>
        </td>
      </tr>
      <tr>
        <td>E-mail:</td>
        <td><input type=text name=email
             value=<?= htmlspecialchars($temp['email'][$index]); ?>></td>
      </tr>
      <tr>
        <td>URL:</td>
        <td><input type=text name=url
             value=<?= htmlspecialchars($temp['url'][$index]); ?>></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td><input type=submit value='Редактировать'></td>
      </tr>
      </form>
    </table>
<?php
  
}
?>

И вспомогательного файла 2.php
<?php
  
// Если константа FIRST из файла 1.php 
  // не определена производится попытка
  // непосредственного обращения к обработчику
  // минуя первый файл - пресекаем эту попытку
  
if (!defined('FIRST')) exit();
  
// Если передан параметр $_POST['edit'],
  // пользователь воспользовался формой для
  // редактирования данных
  
if($_POST['edit'] == 'edit')
  {
    
/////////////////////////////////////////////////
    // Блок проверки правильности данных
    /////////////////////////////////////////////////
    // Удаляем лишние пробелы
    
$_POST['name'] = trim($_POST['name']);
    
$_POST['passw'] = trim($_POST['passw']);
    
$_POST['pass_again'] = trim($_POST['pass_again']);
    
// Проверяем не пустой ли суперглобальный массив $_POST
    
if(empty($_POST['name'])) exit();
    
// Проверяем правильно ли заполнены обязательные поля
    
if(empty($_POST['name'])) exit('Поле "Имя" не заполнено');
    if(empty(
$_POST['passw']))
       exit(
'Одно из полей "Пароль" не заполнено');
    if(empty(
$_POST['pass_again']))
       exit(
'Одно из полей "Пароль" не заполнено');
    if(
$_POST['passw'] != $_POST['pass_again'])
       exit(
'Пароли не совпадают');
    
// Если введён e-mail проверяем его на соответсвие
    
if(!empty($_POST['email']))
    {
      if(!
preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i",
         
$_POST['email']))
      {
        exit(
'Поле "E-mail" должно соответствовать формату
              somebody@somewhere.ru'
);
      }
    }

    
/////////////////////////////////////////////////
    // Редактируем содержимое файла данных
    /////////////////////////////////////////////////
    
$arr file($filename);
    
$linefile = array();
    foreach(
$arr as $line)
    {
      
// Разбиваем строку по разделителю ::
      
$data explode("::",$line);
      if(
$data[0] == $temp['name'][$index])
      {
        
// Формируем новую строку вместо старой
        
$linefile[] = $_POST['name']."::".$_POST['passw']."::".
                      
$_POST['email']."::".$_POST['url'];
        
$temp['password'][$index] = $_POST['passw'];
        
$temp['email'][$index]    = $_POST['email'];
        
$temp['url'][$index]      = $_POST['url'];
      }
      else 
$linefile[] = trim($line);
    }

    
/////////////////////////////////////////////////
    // Перезаписываем файл данных
    /////////////////////////////////////////////////
    
$fd fopen($filename,"w");
    if(!
$fd) exit("Ошибка записи в файл");
    
fwrite($fd,implode("\r\n",$linefile));
    
fclose($fd);
  }
?>

Пароли в файлах не шифруются, но это не сложно организовать...

   
 
 автор: cheops   (18.10.2005 в 21:26)   письмо автору
 
   для: ZetRider   (18.10.2005 в 16:16)
 

Регистрация пользователей в текстовом файле
<table>
<form method=post>
<tr><td>Имя:</td><td><input type=text name=name></td></tr>
<tr><td>Пароль:</td><td><input type=password name=pass></td></tr>
<tr><td>Пароль:</td><td><input type=password name=pass_again></td></tr>
<tr><td>e-mail:</td><td><input type=text name=email></td></tr>
<tr><td>URL:</td><td><input type=text name=url></td></tr>
<tr><td></td><td><input type=submit value='Зарегистрировать'></td></tr>
</form>
</table>
<?php
  
// Обработчик HTML-формы

  /////////////////////////////////////////////////
  // 1. Блок проверки правильности данных
  /////////////////////////////////////////////////
  // Удаляем лишние пробелы
  
$_POST['name'] = trim($_POST['name']);
  
$_POST['pass'] = trim($_POST['pass']);
  
$_POST['pass_again'] = trim($_POST['pass_again']);
  
// Проверяем не пустой ли суперглобальный массив $_POST
  
if(empty($_POST['name'])) exit();
  
// Проверяем правильно ли заполнены обязательные поля
  
if(empty($_POST['name'])) exit('Поле "Имя" не заполнено');
  if(empty(
$_POST['pass'])) exit('Одно из полей "Пароль" не заполнено');
  if(empty(
$_POST['pass_again'])) exit('Одно из полей "Пароль" не заполнено');
  if(
$_POST['pass'] != $_POST['pass_again']) exit('Пароли не совпадают');
  
// Если введён e-mail проверяем его на соответсвие
  
if(!empty($_POST['email']))
  {
    if(!
preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i"$_POST['email']))
    {
      exit(
'Поле "E-mail" должно соответствовать формату somebody@somewhere.ru');
    }
  }

  
/////////////////////////////////////////////////
  // 2. Блок проверки имени на уникальность
  /////////////////////////////////////////////////
  // Имя файла данных
  
$filename "text.txt"
  
// Проверяем не было ли переданное имя
  // зарегистрировано ранее
  
$arr file($filename);
  foreach(
$arr as $line)
  {
    
// Разбиваем строку по разделителю ::
    
$data explode("::",$line);
    
// В массив $temp помещаем имена уже зарегистрированных
    // посетителей
    
$temp[] = $data[0];
  }
  
// Проверяем не содержится ли текущее имя
  // в массиве имён $temp
  
if(in_array($_POST['name'], $temp))
  {
    exit(
"Данное имя уже зарегистрировано, пожалуйста, выберите другое");
  }

  
/////////////////////////////////////////////////
  // 3. Блок регистрации пользователя
  /////////////////////////////////////////////////
  // Помещаем данные в текстовый файл
  
$fd fopen($filename"a");
  if(!
$fd) exit("Ошибка при открытии файла данных");
  
$str $_POST['name']."::".
         
$_POST['pass']."::".
         
$_POST['email']."::".
         
$_POST['url']."\r\n";
  
fwrite($fd,$str);
  
fclose($fd);
  
// Осуществляем перезагрузку страницы,
  // чтобы сбросить POST-данные
  
echo "<HTML><HEAD>
         <META HTTP-EQUIV='Refresh' CONTENT='0; URL=
$_SERVER[PHP_SELF]'>
        </HEAD></HTML>"
;
?>

   
 
 автор: Atom   (18.10.2005 в 20:45)   письмо автору
 
   для: ZetRider   (18.10.2005 в 19:46)
 

Читай статьи, учебник на этом сайте по кукам.

   
 
 автор: ZetRider   (18.10.2005 в 19:46)   письмо автору
 
   для: Football   (18.10.2005 в 18:23)
 

код было бы хорошо! Собственно начало я сделал, вот код:
*************
*index.php *
*************
<html>
<body>
<?
if($login != "" && $pass!= "")
{
$file = @fopen($login ,"r");
if(!$file)
{
print("<b>Неправильный логин</b><p>");
}
else
{
$password = @fgets($file);


}




if($pass==$password) // проверяем правильность пароля
{ print("Добро пожаловать <b>$login</b>");} //выводим приветствие
else {print("Неправильный пароль!!!");}

}
?>
<form action="index.php">
<p>Логин: <input type = "text" name = "login" size=20>
<p>Пароль: <input type = "text" name = "pass" size=20>
<input type = "submit" value = "Войти">

<p align="left"><font face="Comic Sans MS"><b><a href="reg.php">
<span style="text-decoration: none"><font color="#000000">Регистрация</font></span></a></b></font>
<?
?>

**********
*reg.php*
**********
Регистрация
<form action="reg.php">
<p>Логин: <input type = "text" name = "login" size=20>
<p>Пароль: <input type = "text" name = "pass" size=20>
<input type = "submit" value = "Зарегать">
<?
if($login != "" && $pass!= "")
{
$file = fopen($login,"w");

if(!file)
{
print("Ошибка открытия файла login.txt для записи");
}
else
{
fputs($file, "$pass");
print("<br>Регистрация прошла успешно ваш логин - $login и пароль - $pass");
}
}
?>

проблема состоит в том чтобы пользователю устанавливались куки, тоесть он могу бы войти один раз, и при следуещем заходе ему бы неприходилось авторизироватся занова!
Кто может доработать етот ког,? помогите плз..

   
 
 автор: Football   (18.10.2005 в 18:23)   письмо автору
 
   для: ZetRider   (18.10.2005 в 16:16)
 

А в чём собственно проблема? Сам код нужен или алгоритм?

   
 
 автор: ZetRider   (18.10.2005 в 16:16)   письмо автору
 
 

Привет! Вот искал искали регистрацию и авторизацию пользователей без мускула так и ненашел, а самому ума еще нехватает написать (( может у кого есть? или ссылками поделетесь?

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования