{% else-1 %}
Хочу предложить вашему вниманию открытый код php регистрации и авторизации через протокол sms. В сети очень мало информации можно найти на эту тему, ниже будет представлен код и sql запрос. И так начнем!

                        
Для начало создадим базу данных и назовем ее reg, вы можете назвать ее как хотите на ваше усмотрения. 
Создали базу? Далее выполним sql запрос

CODE (SQL):
скопировать код в буфер обмена
CREATE TABLE `users` (
`user_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_login` varchar(30) NOT NULL,
`user_password` varchar(32) NOT NULL,
`user_hash` varchar(32) NOT NULL,
`user_ip` int(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;



Далее создаем файл register.php и в него пишем этот код

PHP:
скопировать код в буфер обмена
<?
// Страница регситрации нового пользователя

# Соединямся с БД
mysql_connect("localhost", "пользователь бд", "пароль бд");
mysql_select_db("reg");


if(isset($_POST['submit']))
{
$err = array();

# проверям логин (в место логина будет номер мобильного)
if(!preg_match("/^[0-9]+$/",$_POST['login']))
{
$err[] = "Логин может состоять только из цифр";
}

if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
{
$err[] = "Логин должен быть не меньше 3-х символов и не больше 30"; //здесь ставите лимит на свой выбор
}

# проверяем, не сущестует ли пользователя с таким именем
$query = mysql_query("SELECT COUNT(user_id) FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."'");
if(mysql_result($query, 0) > 0)
{
$err[] = "Пользователь с таким номером уже существует в базе данных";
}

# Если нет ошибок, то добавляем в БД нового пользователя
if(count($err) == 0)
{

$login = $_POST['login'];
require_once "sms.php";

function generate_pass($number)
{
$arr = array('a','b','c','d','e','f',
'g','h','i','j','k','l',
'm','n','o','p','r','s',
't','u','v','x','y','z',
'1','2','3','4','5','6',
'7','8','9','0');

// Генерируем пароль для смс
$pass = "";
for($i = 0; $i < $number; $i++)
{
// Вычисляем произвольный индекс из массива
$index = rand(0, count($arr) - 1);
$pass .= $arr[$index];
}
return $pass;
}

$newpass = generate_pass(6);



# Убераем лишние пробелы и делаем двойное шифрование
// $password = md5(md5(trim('')));
$str = "$newpass";
$pass1 = md5(md5($str));


mysql_query("INSERT INTO users SET user_login='".$login."', user_password='".$pass1."'");

$smssend = send("api.smsfeedback.ru", 80, "Логин", "Пароль",
"$login", "$newpass", "TEST-SMS");
// чтобы получить логин и пароль нужно зарегистрироваться тут smsfeedback.ru

header("Location: login.php"); exit();
}
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 = "";
$clen = strlen($chars) - 1;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,$clen)];
}
return $code;
}


# Соединямся с БД
mysql_connect("localhost", "Пользователь бд", "Пароль бд");
mysql_select_db("reg");

if(isset($_POST['submit']))
{
# Вытаскиваем из БД запись, у которой логин равняеться введенному
$query = mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1");
$data = mysql_fetch_assoc($query);

# Соавниваем пароли
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']."'");

# Ставим куки
setcookie("id", $data['user_id'], time()+60*60*24*30);
setcookie("hash", $hash, time()+60*60*24*30);

# Переадресовываем браузер на страницу проверки нашего скрипта
header("Location: check.php"); exit();
}
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>


Далее создадим файл sms.php

PHP:
скопировать код в буфер обмена
<?PHP

/*
* функция передачи сообщения
*/

function send($host, $port, $login, $password, $phone, $text, $sender = false, $wapurl = false )
{
$fp = fsockopen($host, $port, $errno, $errstr);
if (!$fp) {
return "errno: $errno \nerrstr: $errstr\n";
}
fwrite($fp, "GET /send/" .
"?phone=" . rawurlencode($phone) .
"&text=" . rawurlencode($text) .
($sender ? "&sender=" . rawurlencode($sender) : "") .
($wapurl ? "&wapurl=" . rawurlencode($wapurl) : "") .
" HTTP/1.0\n");
fwrite($fp, "Host: " . $host . "\r\n");
if ($login != "") {
fwrite($fp, "Authorization: Basic " .
base64_encode($login. ":" . $password) . "\n");
}
fwrite($fp, "\n");
$response = "";
while(!feof($fp)) {
$response .= fread($fp, 1);
}
fclose($fp);
list($other, $responseBody) = explode("\r\n\r\n", $response, 2);
return $responseBody;
}

?>


Создадим файл проверку check.php

PHP:
скопировать код в буфер обмена
<?
// Скрипт проверки

# Соединямся с БД
mysql_connect("localhost", "пользователь бд", "пароль бд");
mysql_select_db("reg");

if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
$query = mysql_query("SELECT *,INET_NTOA(user_ip) FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
$userdata = mysql_fetch_assoc($query);

if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR']) and ($userdata['user_ip'] !== "0")))
{
setcookie("id", "", time() - 3600*24*30*12, "/");
setcookie("hash", "", time() - 3600*24*30*12, "/");
print "Хм, что-то не получилось";
}
else
{
print "Привет, ".$userdata['user_login'].". Всё работает!";
}
}
else
{
print "Включите куки";
}
?>
12 66 0
0

Нет фото
Mirus * 0.02
• 20 июл 2013, 16:11


Пример: http://mirus.h1r.biz
[сообщение прошло проверку админом]

0

Фотография
• 18 май 2013, 21:20


А можно его переделать для дцмс?

0

Нет фото
TheJove * 2.04
• 18 май 2013, 02:40


постараемся)))

0

Нет фото
RSST * 0.85
• 18 май 2013, 02:08


Хорошая регистрация но желательно доработать её ))

0

Нет фото
TheJove * 2.04
• 18 май 2013, 00:05


во примерчик: http://wapfenix.tk/