Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регистрация - проверка полей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: без базы
fullzero
Отправлено: 16 Августа, 2011 - 07:02:50
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Всем привет. Пишу регистрацию на файлах столкнулся с некоторыми трудностями. Как сделать проверку полей на кол-во символов, вводимые символы, на пустые поля, и чем шифровать пароль? Ну и далее надо как то авторизоваться по этому файлу Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $regform = '<table>
  4. <form action="reg.php?act=reg" method="post">
  5. <tr>
  6.   <td>Логин:</td>
  7.   <td><input type="text" name="login" value=""></td>
  8. </tr>
  9. <tr>
  10.   <td>Пароль:</td>
  11.   <td><input type="password" name="password" value=""></td>
  12. </tr>
  13. <tr>
  14.   <td>&nbsp;</td>
  15.   <td><input style="width:100%;" type="submit" value="Регистрация"></td>
  16. </tr>
  17. </form>
  18. </table>';
  19.  
  20. if(empty($_GET['act'])){
  21. echo $regform;
  22. }
  23.  
  24. if($_GET['act']=="reg"){
  25. $login = $_POST["login"];
  26. $password = $_POST["password"];
  27. $filename = "users/".$login;
  28.  
  29. if (file_exists($filename)) {
  30.     echo "Пользователь с логином $login ежу зарегистрирован";
  31.     echo $regform;
  32. } else {
  33.     mkdir("users/".$login, 0700);
  34.     $configdata="<?PHP \r\n".
  35.     "$"."login=\"$login\";\r\n".
  36.     "$"."password=\"$password\";\r\n?>";
  37.  
  38.     $handle = fopen($filename."/index.php", "w");
  39.     fwrite($handle, $configdata);
  40.     fclose($handle);
  41.     echo "Пользователь с логином $login успешно создан ";
  42. }
  43. }
  44.  
  45. ?>
  46.  
  47.  
 
 Top
PATCH
Отправлено: 16 Августа, 2011 - 07:21:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $login=$_GET['login'];
  3. if(empty($_GET[login])){exit('вы не заполнели поле login');} - пустые поля
  4.  
  5. $login=trim($login);
  6. $min=4;
  7. $max=16;
  8. if (!preg_match('/^[a-z0-9а-яёЁ]{'.$min.','.$max.'}$/i',$login))
  9. {exit('введите от 4 до 16 символов');}
  10. $login = md5($login);

(Отредактировано автором: 16 Августа, 2011 - 07:22:54)

 
 Top
fullzero
Отправлено: 16 Августа, 2011 - 07:32:21
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




PATCH спасибо. Чуть чуть исправил и заработало. Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. $login = $_POST["login"];
  3. if(empty($login)){exit('вы не заполнели поле login');} - пустые поля
  4.  
  5. $login=trim($login);
  6. $min=4;
  7. $max=16;
  8. if (!preg_match('/^[a-z0-9а-яёЁ]{'.$min.','.$max.'}$/i',$login))
  9. {exit('введите от 4 до 16 символов');}
  10. $password = md5($password);
  11.  




С регистрацией теперь норм. Как теперь сделать авторизацию? Улыбка

(Отредактировано автором: 16 Августа, 2011 - 07:34:38)

 
 Top
LIME
Отправлено: 16 Августа, 2011 - 07:35:00
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а зачем хэш логина?
(Добавление)
ясно))
(Добавление)
я так понял вы создаете в папке users папку по логину и в ней файл индекс?
зачем так сложно?
(Добавление)
в папке users делаете файл login.txt
в него пишите хэш пароля
и все
при авторизации открываете файл по логину и сравниваете хэши
 
 Top
fullzero
Отправлено: 16 Августа, 2011 - 07:51:04
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




LIME это первоначальная версия. Улыбка Далее что нить придумаю, не хочу хранить такие важные данные в txt файлах, слишком рисковано. Пока ничего безопаснее чем в php не придумал Радость
 
 Top
LIME
Отправлено: 16 Августа, 2011 - 07:54:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




fullzero а php у вас где лежит?
чем безопаснее?
насмешили))
какраз у вас дыра в том что пароль в явном виде хранится
ерундой маетесь честное слово ))
(Добавление)
можете прописать в htaccess в папке users запрет на допуск отовсюду кроме локалхоста
 
 Top
fullzero
Отправлено: 16 Августа, 2011 - 08:38:33
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




LIME напиши пример сравнения. Какой нить простой. Улыбка
 
 Top
illy
Отправлено: 16 Августа, 2011 - 09:04:02
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




если в php пароли в явном виде то сделай первую строку <?php exit; ?>
чтобы не могли прочитать содержимое файла
и пароли лучше шифровать.
если зарегился - то в куки его логин и пароль чтоб каждый раз не вводить


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
fullzero
Отправлено: 16 Августа, 2011 - 09:24:26
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Сохранят в index.php так
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $login="Логин";
  3. $password="08f8e03bd59a7c67dc44028b3e073d5e";
  4. ?>


то есть мне надо переменные с формы сверить с переменными в файле
(Добавление)
А вот куками не умею пользоваться. Пойду что нить прочту
 
 Top
fullzero
Отправлено: 19 Августа, 2011 - 14:19:02
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Сделал так

reg.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $regform = '<table>
  4. <form action="reg.php?act=reg" method="post">
  5. <tr>
  6.   <td>Логин:</td>
  7.   <td><input type="text" name="login" value=""></td>
  8. </tr>
  9. <tr>
  10.   <td>Пароль:</td>
  11.   <td><input type="password" name="password" value=""></td>
  12. </tr>
  13. <tr>
  14.   <td>&nbsp;</td>
  15.   <td><input style="width:100%;" type="submit" value="Регистрация"></td>
  16. </tr>
  17. </form>
  18. </table>';
  19.  
  20. if(empty($_GET["act"])){
  21. echo $regform;
  22. echo $_COOKIE['login'];
  23. }
  24.  
  25. if($_GET["act"]=="reg"){
  26. $login = $_POST["login"];
  27. $password = $_POST["password"];
  28.  
  29.  
  30. if(empty($login)){exit('вы не заполнели поле login');}
  31. if(empty($password)){exit('вы не заполнели поле password');}
  32.  
  33. $login=trim($login);
  34. $min = "4";
  35. $max = "16";
  36. if (!preg_match('/^[a-z0-9а-яёЁ]{'.$min.','.$max.'}$/i',$login))
  37. {exit('введите от 4 до 16 символов');}
  38.  
  39. $password=trim($password);
  40. $min = "4";
  41. $max = "16";
  42. if (!preg_match('/^[a-z0-9а-яёЁ]{'.$min.','.$max.'}$/i',$password))
  43. {exit('введите от 4 до 16 символов');}
  44.  
  45.  
  46. $filename = "users/".$login;
  47.  
  48. if (file_exists($filename)) {
  49.     echo "Пользователь с логином $login ежу зарегистрирован";
  50.     echo $regform;
  51. } else {
  52.     $password = md5($password);
  53.     mkdir("users/".$login, 0700);
  54.     $configdata="<?PHP \r\n".
  55.     "$"."_login=\"$login\";\r\n".
  56.     "$"."_password=\"$password\";\r\n?>";
  57.  
  58.     $handle = fopen($filename."/index.php", "w");
  59.     fwrite($handle, $configdata);
  60.     fclose($handle);
  61.    
  62.     echo "Пользователь с логином $login успешно создан<br>";
  63.  
  64.     echo '<a href="auch.php">Авторизация</a>';
  65.  
  66. }
  67. }
  68.  
  69. ?>
  70.  



auch.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $auchform = '<table>
  5. <form action="auch.php?act=auch" method="post">
  6. <tr>
  7.   <td>Логин:</td>
  8.   <td><input type="text" name="login" value=""></td>
  9. </tr>
  10. <tr>
  11.   <td>Пароль:</td>
  12.   <td><input type="password" name="password" value=""></td>
  13. </tr>
  14. <tr>
  15.   <td>Запомнить:</td>
  16.   <td><input type="checkbox" name="remember" /></td>
  17. </tr>
  18. <tr>
  19.   <td>&nbsp;</td>
  20.   <td><input style="width:100%;" type="submit" value="Войти"></td>
  21. </tr>
  22. </form>
  23. </table>';
  24.  
  25. if(empty($_GET["act"])){
  26. echo $auchform;
  27. echo $_COOKIE['login'];
  28. }
  29.  
  30. if($_GET["act"]=="auch"){
  31. $login = $_POST["login"];
  32. $password = $_POST["password"];
  33.  
  34. if(empty($login)){exit('Не заполнено поле login');}
  35. if(empty($password)){exit('Не заполнено поле password');}
  36.  
  37. $login=trim($login);
  38. $min = "4";
  39. $max = "16";
  40. if (!preg_match('/^[a-z0-9а-яёЁ]{'.$min.','.$max.'}$/i',$login))
  41. {exit('Введите от 4 до 16 символов');}
  42.  
  43. $password=trim($password);
  44. $min = "4";
  45. $max = "16";
  46. if (!preg_match('/^[a-z0-9а-яёЁ]{'.$min.','.$max.'}$/i',$password))
  47. {exit('Введите от 4 до 16 символов');}
  48.  
  49. $filename = "users/".$login."/index.php";
  50.  
  51. if (file_exists($filename)) {
  52. include $_SERVER["DOCUMENT_ROOT"]."/users/".$login."/index.php";
  53. $password = md5($password);
  54.         if($password==$_password) {
  55.                 if (isset($_POST['remember'])) {
  56.                         $time = 86400; // 24 часа
  57.                         setcookie('login', $_login, time()+$time, "/");
  58.                         setcookie('password', $_password, time()+$time, "/");
  59.                         echo '<a href="/">Главная</a>';
  60.                 }
  61.                 if (empty($_POST['remember']))  {
  62.                         setcookie('login', $_login, "0", "/");
  63.                         setcookie('password', $_password, "0", "/");
  64.                         echo '<a href="/">Главная</a>';
  65.                 }
  66.         }
  67.         else {
  68.                 echo 'Пароль не верный';
  69.                 }
  70. }
  71. else {
  72.         echo 'Логин не верный';
  73.         }
  74. }
  75. ?>
  76.  


logout.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(empty($_GET["act"])){
  4.         setcookie("login", "", "0", "/");
  5.         setcookie("password", "", "0", "/");
  6.         header('Location: index.php');
  7.         exit;
  8. }
  9. ?>
  10.  
 
 Top
vixa
Отправлено: 20 Августа, 2011 - 15:42:19
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




Вот вам регистрация сам написал кому понравится скажут спасибо стили вылаживать не буду к файлу регистраци

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $connect = mysql_connect("localhost", "name", "pass") or die("Не могу подключиться к серверу");
  3. $db_site = mysql_select_db("basename", $connect) or die("База данных не найдена");
  4. echo <<<HTML
  5. <form action="index.php?id=reg" method="post">
  6. <p class="text">Введите логин:</p> <p class="inp"><input name="reg_name" type="text"></p>
  7. <p class="text">Введите пароль:</p><p class="inp"><input name="reg_pass" type="password"></p>
  8. <p class="text">Повторите пароль:</p><p class="inp"><input name="reg_pass2" type="password"></p>
  9. <p class="text">Введите емеил:</p><p class="inp"><input name="reg_email" type="text"></p>
  10. <p class="but">Парень<input name="sex" type="radio" value="M" checked>Девушка<input name="sex" type="radio" value="F"></p>
  11. <p class="but"><input name="register" type="submit" value="Зарегестрироваться"></p>
  12. </form>
  13. HTML;
  14. $login = $_POST['reg_name'];
  15. $pass = $_POST['reg_pass'];
  16. $pass2 = $_POST['reg_pass2'];
  17. $email = $_POST['reg_email'];
  18. $sex = $_POST['sex'];
  19. $sub = $_POST['register'];
  20. $pass = md5(base64_encode($pass));
  21. $pass2 = md5(base64_encode($pass2));
  22. if($sub) {
  23.         if(empty($login)) {echo "<b><p>Вы не указали логин</p></b>";}
  24.         elseif(!preg_match("/^[a-zA-Z0-9]{4,10}$/", $login)) {echo "<b><p>Логин должен состоять только из латинских букв и содержать не меньге 4 символов и не больше 10</p></b>";}
  25.         elseif(empty($pass)) {echo "<b><p>Вы не ввели пароль</p></b>";}
  26.         elseif(!preg_match("/^[a-zA-Z0-9]{4,20}$/", $pass)) {echo "<b><p>Пароль должен состоять только из латинских букв и содержать не меньге 4 символов и не больше 20</p></b>";}
  27.         elseif(empty($pass2)) {echo "<b><p>Вы не указали повторный пароль</p></b>";}
  28.         elseif(!preg_match("/^[a-zA-Z0-9]{4,20}$/", $pass2)) {echo "<b><p>Повторный пароль должен состоять только из латинских букв и содержать не меньге 4 символов и не больше 20</p></b>";}
  29.         elseif($pass2 != $pass) {echo "<b><p>Пароли не совпадают</p></b>";}
  30.         elseif(empty($email)) {echo "<b><p>Вы не ввели емеил</p></b>";}
  31.         elseif(!preg_match("/^[a-zA-Z0-9.-_]+@[a-zA-Z0-9.-_]+\.[a-zA-Z0-9.-_]{2,4}$/", $email)) {echo "<b><p>Не правильно указан емеил</p></b>";}
  32.         elseif(empty($sex)) {echo "<b><p>Вы не указали ваш пол</p></b>";}
  33.         elseif(mysql_num_rows(mysql_query('select 1 from `bg_user` where `user_id` = \''.$_POST['reg_name'].'\''))) {echo "<b><p>Акаунт уже зарегистрирован</p></b>";}
  34.         elseif($login && $pass && $pass2 && $email && $sex) {
  35.         mysql_query("INSERT INTO `bg_user` (`user_id`, `passwd`, `email`, `sex`) VALUES ('$login', '$pass', '$email', '$sex')") or die("Значения не занесены");
  36.         echo "<b><p>Вы успешно зарегестрировались ваш логин $login ваш емеил $email запомните их они вам пригодятся</p></b>";
  37.  
  38.         }
  39. }
  40. ?>


-----
Vixa
 
 Top
PATCH
Отправлено: 20 Августа, 2011 - 16:19:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




если удастся взломщику залить shell файл то вам даже хранение в php не поможет)) vixa прочитай описании функции stripslashes в место него надо
а вообще даже такие манипуляции от sql инъекций можно обойтИ) даже с проверкой на вводимость Цифр и латинских букв можно обойти)

(Отредактировано автором: 20 Августа, 2011 - 16:21:26)

 
 Top
vixa
Отправлено: 20 Августа, 2011 - 18:42:21
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




Все можно обойти и взломать вон китайские хакеры гугл ломанули недавно и чо с этого


-----
Vixa
 
 Top
illy
Отправлено: 20 Августа, 2011 - 18:47:38
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




защитился от обычных атак - ито хорошо Улыбка


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
fullzero
Отправлено: 22 Августа, 2011 - 09:12:30
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Ну мне для начала надо было на файлах научиться, простая практика. Думаю что то удалось, хоть понял как с cookie работать Улыбка
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB