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 :: MAC+IP php+Mikrtoik

 PHP.SU

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


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

> Без описания
Hendehog
Отправлено: 20 Ноября, 2015 - 06:00:49
Post Id


Новичок


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


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




Здравствуйте.
Есть цель сделать регистрацию пользователя по телефону, на телефон приходит смс с паролем, пользователь авторизуется.
И связать все это дело с микротиком.
Скрипт регистрации
register.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=utf8? />
  6. <meta name="author" content="Interline" />
  7. <link href="style.css" rel="stylesheet" type="text/css" />
  8. <?
  9. // Страница регситрации нового пользователя
  10.  
  11. # Соединямся с БД
  12. mysql_connect("localhost", "admin", "passsword");
  13. mysql_select_db("hotspotmikrotik");
  14.  
  15.  
  16. if(isset($_POST['submit']))
  17. {
  18.     $err = array();
  19.  
  20.     # проверям логин (в место логина будет номер мобильного)
  21.   if(!preg_match("/^[0-9]+$/",$_POST['login']))
  22.     {
  23.         $err[] = "Логин может состоять только из цифр";
  24.     }
  25.    
  26.     if(strlen($_POST['login']) < 11 or strlen($_POST['login']) > 11)
  27.     {
  28.         $err[] = "Логин должен быть не меньше 3-х символов и не больше 11"; //здесь ставите лимит на свой выбор
  29.     }
  30.    
  31.     # проверяем, не сущестует ли пользователя с таким именем
  32.   $query = mysql_query("SELECT COUNT(user_id) FROM reg WHERE user_login='".mysql_real_escape_string($_POST['login'])."'");
  33.     if(@mysql_result($query, 0) > 0)
  34.     {
  35.         $err[] = "Пользователь с таким номером уже существует в базе данных";
  36.     }
  37.    
  38.     # Если нет ошибок, то добавляем в БД нового пользователя
  39.   if(count($err) == 0)
  40.     {
  41.        
  42.         $login = $_POST['login'];
  43.         //require_once "sms.php";
  44.        
  45.          // Параметр $number - сообщает число
  46.   // символов в пароле
  47.   //echo generate_password(intval($_POST['number']));
  48.  
  49. // Символы, которые будут использоваться в пароле.
  50.  
  51. $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
  52.  
  53. // Количество символов в пароле.
  54.  
  55. $max=10;
  56.  
  57. // Определяем количество символов в $chars
  58.  
  59. $size=StrLen($chars)-1;
  60.  
  61. // Определяем пустую переменную, в которую и будем записывать символы.
  62.  
  63. $password=null;
  64.  
  65. // Создаём пароль.
  66.  
  67.     while($max--)
  68.     $password.=$chars[rand(0,$size)];
  69.  
  70. // Выводим созданный пароль.
  71.  
  72. //echo
  73. //"<center>
  74. //Сгенерированный пароль:
  75. //<hr><font face=verdana color=red size=7><b>".$password."</b></font><hr>
  76. //<a href=?>Создать новый пароль.</a></center>";
  77.  
  78.   }
  79. mysql_query("INSERT INTO reg SET user_login='".$login."', user_password='".$password."'");
  80.    
  81.         header("Location: login.php"); exit();
  82.     }
  83.     else
  84.     {
  85.         print "<b>При регистрации произошли следующие ошибки:</b><br>";
  86.         foreach($err AS $error)
  87.         {
  88.             print $error."<br>";
  89.         }
  90.     }
  91.  
  92. ?>
  93. Подтвердите свою личность
  94. <form method="POST">
  95. Номер телефона + <input name="login" type="text"><br>
  96. <input name="submit" type="submit" value="Зарегистрироваться">
  97. </form>
  98.  


login.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. // Страница авторизации
  4.  
  5.  
  6. # Функция для генерации случайной строки
  7. function generateCode($length=6) {
  8.     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
  9.     $code = "";
  10.     $clen = strlen($chars) - 1;  
  11.     while (strlen($code) < $length) {
  12.             $code .= $chars[mt_rand(0,$clen)];  
  13.     }
  14.     return $code;
  15. }
  16.  
  17.  
  18. # Соединямся с БД
  19. mysql_connect("localhost", "admin", "password");
  20.  
  21. if(isset($_POST['submit']))
  22. {
  23.     # Вытаскиваем из БД запись, у которой логин равняеться введенному
  24.   $query = mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1");
  25.     $data = @mysql_fetch_assoc($query);
  26.    
  27.     # Соавниваем пароли
  28.   if($data['user_password'] === md5(md5($_POST['password'])))
  29.     {
  30.         # Генерируем случайное число и шифруем его
  31.       $hash = md5(generateCode(10));
  32.            
  33.         if(!@$_POST['not_attach_ip'])
  34.         {
  35.             # Если пользователя выбрал привязку к IP
  36.           # Переводим IP в строку
  37.           $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
  38.         }
  39.        
  40.         # Записываем в БД новый хеш авторизации и IP
  41.       mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
  42.        
  43.         # Ставим куки
  44.       setcookie("id", $data['user_id'], time()+60*60*24*30);
  45.         setcookie("hash", $hash, time()+60*60*24*30);
  46.        
  47.         # Переадресовываем браузер на страницу проверки нашего скрипта
  48.       header("Location: check.php"); exit();
  49.     }
  50.     else
  51.     {
  52.         print "Вы ввели неправильный логин/пароль";
  53.     }
  54. }
  55. ?>
  56.  #форма авторизации
  57. <form method="POST">
  58. Номер  <input name="login" type="text"><br>
  59. Пароль <input name="password" type="password"><br>
  60. Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
  61. <input name="submit" type="submit" value="Войти">
  62. </form>
  63.  


Проблемы следующие , при регистрации вписываем номер телефона, он добавляется в базу, вместе с рандомным паролем, но вместо редиректа на login.php
Ошибка

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\hotspot\userstest\register.php:7) in Z:\home\localhost\www\hotspot\userstest\register.php on line 80

Проверил, UTF8 без BOM.
Если в login.php зайти руками, и вписать логин и пароль , которые в базе он все равно пишет, что логин и пароль неверные.
И еще вопрос, как можно получить mac и IP Клиента и записать их в базу?
Сеть локальная, на эти страницы будет редиректить микротик.
 
 Top
Sail
Отправлено: 20 Ноября, 2015 - 09:16:41
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




Hendehog пишет:
Cannot modify header information - headers already sent by
То есть клиенту уже отосланы данные. Поздно слать заголовки
И даже написано, где:
Hendehog пишет:
(output started at Z:\home\localhost\www\hotspot\userstest\register.php:7)
 
 Top
andrewkard
Отправлено: 20 Ноября, 2015 - 10:20:54
Post Id


Участник


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


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




Hendehog
Перенесите 1-7 строчку до 92 после php скрипта
 
 Top
Hendehog
Отправлено: 23 Ноября, 2015 - 09:54:43
Post Id


Новичок


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


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




Спасибо.Жаль про mac и IP ничего не подсказали.
Назрели еще вопросы
Имеем index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. ?>
  4. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
  5. <html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
  6.  
  7. <head>
  8. <meta http-equiv=”content-type” content=”text/html; charset="utf8? />
  9. <meta name=”author” content=”Interline” />
  10. <link href=”style.css” rel=”stylesheet” type=”text/css” />
  11.  
  12. <title>WIFI</title>
  13. </head>
  14.  
  15. <body>
  16. <?
  17. if (!empty($_SESSION['id']))
  18. {
  19. echo "Интернет включен";
  20. }
  21. else
  22. {
  23. echo '<form method="post" action="reg_user.php" enctype=multipart/form-data>';
  24. echo '<fieldset>';
  25. echo '<legend> Введите логин и пароль</legend>';
  26. echo '<p><label for="login">Логин</label> <input type=’text’ id=’login’ name=’login’ /></p>';
  27. echo '<p><label for="password">Пароль</label> <input type=’password’ id=’password’ name=’password’ /><br /></p>';
  28. echo '<p class=’submit’><input type="submit" value="Отправить" /></p>';
  29. echo '</fieldset>';
  30. echo '</form>';
  31. }
  32. ?>
  33.  
  34. </body>
  35. </html>
  36.  
  37.  
  38.  
  39.  


И reg_user.php

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == У) { unset($login);} }
  5.  
  6. if (isset($_POST['password'])) { $password=$_POST['password']; if ($password ==У) { unset($password);} }
  7.  
  8. if (empty($login) or empty($password))
  9.  
  10.  
  11. {
  12. exit ("Вы ввели не всю информацию, попробуйте снова <meta http-equiv=refresh content=4;URL=index.php>");
  13. }
  14.  
  15. $login = stripslashes($login);
  16. $login = htmlspecialchars($login);
  17. $password = stripslashes($password);
  18. $password = htmlspecialchars($password);
  19.  
  20.  
  21. $login = trim($login);
  22. $password = trim($password);
  23.  
  24. include (admins/db.php);
  25.  
  26. $result = mysql_query("SELECT * FROM users WHERE login=$login AND access=yes");
  27.  
  28. $myrow = mysql_fetch_array($result);
  29. if (empty($myrow['password']))
  30. {
  31. exit ("Извините, введенный вами login или пароль неверный. <meta http-equiv=refresh content=2;URL=index.php>");
  32. }
  33. else {
  34.  
  35. if ($myrow['password']==$password) {
  36.  
  37. $_SESSION['login']=$myrow['login'];
  38.  
  39. $_SESSION['id']=$myrow['id'];
  40.  
  41. $mac = $myrow['mac'];
  42.  
  43. mysql_query ("INSERT INTO action (mac) VALUES ($mac)");
  44.  
  45. echo "Вы успешно авторизировались! <meta http-equiv=refresh content=2;URL=index.php>";
  46. }
  47. else {
  48.  
  49.  
  50. exit ("Извините, введенный вами login или пароль неверный.<meta http-equiv=refresh content=2;URL=index.php>");
  51. }
  52. }
  53.  
  54. ?>
  55.  



По идее должно работать так зашли на index.php , ввели нужные данные в форму , при нажатии отправить эти данные отправились в reg_user.php , тот в свою очередь заносит эти данные в нашу БД.

Сейчас же при нажатии кнопки отправить, не происходит - ничего.
Подскажите, где допущены ошибки в этих файлах?
 
 Top
andrewkard
Отправлено: 23 Ноября, 2015 - 11:09:46
Post Id


Участник


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


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




Проверьте, уходит ли форма (консоль, смотрите на вкладке Сеть.). Посмотрите в файле reg_user.php - приходят ли данные из формы (в начале скрипта ставите var_dump ($_POST)).
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB