Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2015
Помог: 0 раз(а)
|
Здравствуйте.
Есть цель сделать регистрацию пользователя по телефону, на телефон приходит смс с паролем, пользователь авторизуется.
И связать все это дело с микротиком.
Скрипт регистрации
register.php
PHP:
скопировать код в буфер обмена
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf8? /> <meta name="author" content="Interline" /> <link href="style.css" rel="stylesheet" type="text/css" /> <? // Страница регситрации нового пользователя # Соединямся с БД if(isset($_POST['submit'])) { # проверям логин (в место логина будет номер мобильного) { $err[] = "Логин может состоять только из цифр"; } if(strlen($_POST['login']) < 11 or strlen($_POST['login']) > 11 ) { $err[] = "Логин должен быть не меньше 3-х символов и не больше 11"; //здесь ставите лимит на свой выбор } # проверяем, не сущестует ли пользователя с таким именем { $err[] = "Пользователь с таким номером уже существует в базе данных"; } # Если нет ошибок, то добавляем в БД нового пользователя { $login = $_POST['login']; //require_once "sms.php"; // Параметр $number - сообщает число // символов в пароле //echo generate_password(intval($_POST['number'])); // Символы, которые будут использоваться в пароле. $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"; // Количество символов в пароле. $max=10; // Определяем количество символов в $chars // Определяем пустую переменную, в которую и будем записывать символы. $password=null; // Создаём пароль. while($max--) $password.=$chars[rand(0 ,$size)]; // Выводим созданный пароль. //echo //"<center> //Сгенерированный пароль: //<hr><font face=verdana color=red size=7><b>".$password."</b></font><hr> //<a href=?>Создать новый пароль.</a></center>"; } mysql_query("INSERT INTO reg SET user_login='".$login."', user_password='".$password."'"); } else { print "<b>При регистрации произошли следующие ошибки:</b><br>"; foreach($err AS $error) { print $error."<br>"; } } ?> Подтвердите свою личность <form method="POST"> Номер телефона + <input name="login" type="text"><br> <input name="submit" type="submit" value="Зарегистрироваться"> </form>
login.php
PHP:
скопировать код в буфер обмена
<? // Страница авторизации # Функция для генерации случайной строки function generateCode($length=6) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789"; $code = ""; while (strlen($code) < $length) { } return $code; } # Соединямся с БД if(isset($_POST['submit'])) { # Вытаскиваем из БД запись, у которой логин равняеться введенному # Соавниваем пароли if($data['user_password'] === md5(md5($_POST['password']))) { # Генерируем случайное число и шифруем его $hash = md5(generateCode (10 )); if(!@$_POST['not_attach_ip']) { # Если пользователя выбрал привязку к IP # Переводим IP в строку $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')"; } # Записываем в БД новый хеш авторизации и IP mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'"); # Ставим куки # Переадресовываем браузер на страницу проверки нашего скрипта } else { print "Вы ввели неправильный логин/пароль"; } } ?> #форма авторизации <form method="POST"> Номер <input name="login" type="text"><br> Пароль <input name="password" type="password"><br> Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br> <input name="submit" type="submit" value="Войти"> </form>
Проблемы следующие , при регистрации вписываем номер телефона, он добавляется в базу, вместе с рандомным паролем, но вместо редиректа на 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 Клиента и записать их в базу?
Сеть локальная, на эти страницы будет редиректить микротик.
|