Добро пожаловать, Гость!
нужно переделать этото мод реги - Страница 1
Поиск скриптов | нужно переделать этото мод реги
kodvesna :
нужно переделать этото мод реги, так чтоб в авторизации пользователь мог зайти через эмейл. и при том оставить строчки Имя и Фамилия. по сути Логину будет присвоено значения Эмейл, вот скрипт
файл reg.php
<?php
//include_once 'sys/inc/mp3.php';//include_once 'sys/inc/zip.php';
include_once 'sys/inc/start.php';
include_once 'sys/inc/compress.php';
include_once 'sys/inc/sess.php';
include_once 'sys/inc/home.php';
include_once 'sys/inc/settings.php';
include_once 'sys/inc/db_connect.php';
include_once 'sys/inc/ipua.php';
include_once 'sys/inc/fnc.php';
include_once 'sys/inc/shif.php';
$show_all = true; // показ для всех
include_once 'sys/inc/user.php';
only_unreg();
$set['title'] = 'Регистрация';
include_once 'sys/inc/thead.php';
title();
if ($set['guest_select'] == '1')
msg("Доступ к сайту разрешен только авторизованым пользователям");
if ((!isset($_SESSION['refer']) || $_SESSION['refer'] == NULL) && isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != NULL &&
!preg_match('#mail.php#', $_SERVER['HTTP_REFERER']))
$_SESSION['refer'] = str_replace('&', '&', preg_replace('#^http://[^/]*/#', '/', $_SERVER['HTTP_REFERER']));
///////////////////////////
class reg {
public $passgen,
$getActivate,
$activation,
$nick,
$mail,
$pass,
$pass2,
$dmg,
$pol,
$captcha,
$chislo;
private $sess, $set;
function __construct() {
global $set, $sess, $passgen;
$this->passgen = $passgen;
$this->set = $set;
$this->sess = $sess;
if (isset($_SESSION['captcha']))
$this->captcha = $_SESSION['captcha'];
}
function methodPost($post) {
$this->name = my_esc($post['ank_name']);
$this->mail = my_esc($post['nick']);
$_SESSION['nick'] = my_esc($post['nick']);
$this->pass = $post['pass'];
$this->pass2 = $post['pass2'];
$this->dmg['dd'] = intval($post['dd']);
$this->dmg['mm'] = intval($post['mm']);
$this->dmg['gggg'] = intval($post['gggg']);
$this->pol = intval($post['pol']);
$this->chislo = intval($post['chislo']);
}
function regForm() {
global $webbrowser;
ob_start();
if ($webbrowser == 'web') {
echo '<div class="mess">Войти через:<br /><sсript src="//ulogin.ru/js/ulogin.js"></sсript><div id="uLogin" data-ulogin="display=panel;fields=first_name,last_name,city,sex,photo,photo_big;providers=vkontakte,odnoklassniki,mailru,facebook,yandex;hidden=;redirect_uri=http%3A%2F%2F' . $_SERVER['HTTP_HOST'] . '/user/connect/loginAPI.php"></div></div>';
}
?>
<form class='mess' method='post' action='/reg.php?
<?= $this->passgen ?>
'>
<b>Логин-email:</b><br />
<input type='text' name='nick' maxlength='32' placeholder="mail@site.ru" /><br />
<b>Пароль:</b><br />
<input type='password' name='pass' maxlength='32' placeholder="Password" /><br />
<b>Повторите пароль:</b><br />
<input type='password' name='pass2' placeholder="Password"/><br />
<b>Имя и Фамилия:</b><br />
<input type='text' name='ank_name' placeholder="Вася Пупкин" /><br />
<b>Ваш пол:</b><br /><select name='pol'>
<option value='1'>Мужской</option>
<option value='0'>Женский</option></select><br />
<b>Дата рождения:</b><br />
<input type='text' name='dd' size='1'>
<input type='text' name='mm' size='1'>
<input type='text' name='gggg' size='2'>(дд-мм-гггг)<br>
<img src='/captcha.php?
<?= $this->passgen ?>
&SESS=
<?= $this->sess ?>
' width='100' height='30' alt='Проверочное число' />
<input name='chislo' size='5' maxlength='5' value='' placeholder="Число" type='text' /><br/>
<br>
Регистрируясь, Вы автоматически соглашаетесь с <a href='/rules.php'>правилами</a> сайта<br />
<input type='submit' name="submit" value='Продолжить' />
</form><br />
<?php
return ob_get_clean();
}
function activacionMail($id_reg) {
$subject = "Активация аккаунта";
$regmail = "Здравствуйте $this->name<br />"
. "Для активации Вашего аккаунта перейдите по ссылке:<br />"
. "<a href='http://$_SERVER[HTTP_HOST]/reg.php?id=$id_reg&activation=$this->activation'>http://$_SERVER[HTTP_HOST]/reg.php?id=" . mysql_insert_id() . "&activation=$this->activation</a><br />"
. "Если аккаунт не будет активирован в течении 24 часов, он будет удален<br />"
. "С уважением, администрация сайта<br />";
$adds = "From: "password@$_SERVER[HTTP_HOST]" <password@$_SERVER[HTTP_HOST]>n";
$adds .= "Content-Type: text/html; charset=utf-8n";
mail($this->mail, '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);
}
function getMailActivate($id, $act) {
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '" . intval($id) . "' AND `activation` = '" . my_esc($act) . "'"), 0) == 1) {
mysql_query("UPDATE `user` SET `activation` = null WHERE `id` = '" . intval($id) . "' LIMIT 1");
$user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `id` = '" . intval($id) . "' LIMIT 1"));
mysql_query("INSERT INTO `reg_mail` (`id_user`,`mail`) VALUES ('$user[id]','$user[ank_mail]')");
$_SESSION['id_user'] = $user['id'];
return 'Ваш аккаунт успешно активирован';
}
}
function isValid() {
if ($this->set['reg_select'] == 'close')
$err[] = 'Регистрация временно приостановлена';
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . $this->nick . "'"), 0) != 0)
$err[] = "Пользователь с этим E-mail уже зарегистрирован";
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `reg_mail` WHERE `mail` = '" . $this->mail . "'"), 0) != 0)
$err[] = "Пользователь с этим E-mail уже зарегистрирован";
if (!isset($this->mail) || $this->mail == NULL)
$err[] = 'Неоходимо ввести Email';
if (!preg_match('#^[A-z0-9-._]+@[A-z0-9]{2,}.[A-z]{2,4}$#ui', $this->mail))
$err[] = 'Неверный формат Email';
if (strlen2($this->pass) < 6)
$err[] = 'По соображениям безопасности пароль не может быть короче 6-ти символов';
if (strlen2($this->pass) > 32)
$err[] = 'Длина пароля превышает 32 символа';
if ($this->pass != $this->pass2)
$err[] = 'Пароли не совпадают';
if (!isset($this->captcha) || !isset($this->chislo) || $this->captcha != $this->chislo) {
$err[] = 'Неверное проверочное число';
}
$dmg = $this->dmg;
if ($dmg['dd'] > 31 || $dmg['mm'] > 12 || strlen($dmg['gggg']) > 4 || $dmg['gggg']>date('Y'))
$err[] = "Неверный формат даты";
if (isset($err))
return $err;
return false;
}
function InsertIntoUserDb() {
global $db, $time;
$this->activation = md5(passgen());
mysql_query("INSERT INTO `user` ("
. "`nick`, `pass`, `date_reg`, `date_last`, `pol`, `activation`, `ank_mail`, `ank_g_r`, `ank_m_r`, `ank_d_r`"
. ") values(' $_SESSION[nick] ',"
. " '".shif($this->pass)."', '$time', '$time', '$this->pol', "
. "'$this->activation', '$this->mail', "
. "'" . $this->dmg['gggg'] . "', "
. "'" . $this->dmg['mm'] . "', "
. "'" . $this->dmg['dd'] . "')", $db);
$id_reg = mysql_insert_id();
return $id_reg;
}
}
////////////////////////////
$registration = new reg();
/*
* до нажатия отображаем форму
*/
if (!isset($_POST['submit'])&&!isset($_GET['activation']))
echo $registration->regForm();
/*
* после нажатия обрабатываем форму
*/
if (isset($_POST['submit'])) {
$registration->methodPost($_POST);
if (!$registration->isValid()) {
$id_r = $registration->InsertIntoUserDb();
if($set['reg_select'] == 'open_mail'){
$registration->activacionMail($id_r);
msg("Вам было выслано сообщение на ваш почтовый ящик для подтверждения вашего E-mail");
}
elseif($set['reg_select'] != 'open_mail'){
$registration->getMailActivate($id_r, $registration->activation);
header('Refresh: 1; url=/info.php');
}
}
else {
$err = $registration->isValid();
err();
}
}
/*активация мыла*/
if (isset($_GET['activation'])) {
msg($registration->getMailActivate($_GET['id'], $_GET['activation']));
header('Refresh: 1; url=/info.php');
}
/*
* понятия не имею то за хрень но оставил на всякий случай...
*/
if (isset($_SESSION['http_referer']))
mysql_query("INSERT INTO `user_ref` (`time`, `id_user`, `type_input`, `url`) VALUES ('$time', '$user[id]', 'reg', '" . my_esc($_SESSION['http_referer']) . "')");
/////////////////////////////////
echo "<div class = 'foot'>Уже зарегистрированы?<br />»<a href='/aut.php'>Авторизация</a></div>
<div class = 'foot'>Не можете вспомнить пароль?<br />»<
нужно переделать этото мод реги
16 Янв 2015нужно переделать этото мод реги, так чтоб в авторизации пользователь мог зайти через эмейл. и при том оставить строчки Имя и Фамилия. по сути Логину будет присвоено значения Эмейл, вот скрипт
файл reg.php
<?php
//include_once 'sys/inc/mp3.php';//include_once 'sys/inc/zip.php';
include_once 'sys/inc/start.php';
include_once 'sys/inc/compress.php';
include_once 'sys/inc/sess.php';
include_once 'sys/inc/home.php';
include_once 'sys/inc/settings.php';
include_once 'sys/inc/db_connect.php';
include_once 'sys/inc/ipua.php';
include_once 'sys/inc/fnc.php';
include_once 'sys/inc/shif.php';
$show_all = true; // показ для всех
include_once 'sys/inc/user.php';
only_unreg();
$set['title'] = 'Регистрация';
include_once 'sys/inc/thead.php';
title();
if ($set['guest_select'] == '1')
msg("Доступ к сайту разрешен только авторизованым пользователям");
if ((!isset($_SESSION['refer']) || $_SESSION['refer'] == NULL) && isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != NULL &&
!preg_match('#mail.php#', $_SERVER['HTTP_REFERER']))
$_SESSION['refer'] = str_replace('&', '&', preg_replace('#^http://[^/]*/#', '/', $_SERVER['HTTP_REFERER']));
///////////////////////////
class reg {
public $passgen,
$getActivate,
$activation,
$nick,
$mail,
$pass,
$pass2,
$dmg,
$pol,
$captcha,
$chislo;
private $sess, $set;
function __construct() {
global $set, $sess, $passgen;
$this->passgen = $passgen;
$this->set = $set;
$this->sess = $sess;
if (isset($_SESSION['captcha']))
$this->captcha = $_SESSION['captcha'];
}
function methodPost($post) {
$this->name = my_esc($post['ank_name']);
$this->mail = my_esc($post['nick']);
$_SESSION['nick'] = my_esc($post['nick']);
$this->pass = $post['pass'];
$this->pass2 = $post['pass2'];
$this->dmg['dd'] = intval($post['dd']);
$this->dmg['mm'] = intval($post['mm']);
$this->dmg['gggg'] = intval($post['gggg']);
$this->pol = intval($post['pol']);
$this->chislo = intval($post['chislo']);
}
function regForm() {
global $webbrowser;
ob_start();
if ($webbrowser == 'web') {
echo '<div class="mess">Войти через:<br /><sсript src="//ulogin.ru/js/ulogin.js"></sсript><div id="uLogin" data-ulogin="display=panel;fields=first_name,last_name,city,sex,photo,photo_big;providers=vkontakte,odnoklassniki,mailru,facebook,yandex;hidden=;redirect_uri=http%3A%2F%2F' . $_SERVER['HTTP_HOST'] . '/user/connect/loginAPI.php"></div></div>';
}
?>
<form class='mess' method='post' action='/reg.php?
<?= $this->passgen ?>
'>
<b>Логин-email:</b><br />
<input type='text' name='nick' maxlength='32' placeholder="mail@site.ru" /><br />
<b>Пароль:</b><br />
<input type='password' name='pass' maxlength='32' placeholder="Password" /><br />
<b>Повторите пароль:</b><br />
<input type='password' name='pass2' placeholder="Password"/><br />
<b>Имя и Фамилия:</b><br />
<input type='text' name='ank_name' placeholder="Вася Пупкин" /><br />
<b>Ваш пол:</b><br /><select name='pol'>
<option value='1'>Мужской</option>
<option value='0'>Женский</option></select><br />
<b>Дата рождения:</b><br />
<input type='text' name='dd' size='1'>
<input type='text' name='mm' size='1'>
<input type='text' name='gggg' size='2'>(дд-мм-гггг)<br>
<img src='/captcha.php?
<?= $this->passgen ?>
&SESS=
<?= $this->sess ?>
' width='100' height='30' alt='Проверочное число' />
<input name='chislo' size='5' maxlength='5' value='' placeholder="Число" type='text' /><br/>
<br>
Регистрируясь, Вы автоматически соглашаетесь с <a href='/rules.php'>правилами</a> сайта<br />
<input type='submit' name="submit" value='Продолжить' />
</form><br />
<?php
return ob_get_clean();
}
function activacionMail($id_reg) {
$subject = "Активация аккаунта";
$regmail = "Здравствуйте $this->name<br />"
. "Для активации Вашего аккаунта перейдите по ссылке:<br />"
. "<a href='http://$_SERVER[HTTP_HOST]/reg.php?id=$id_reg&activation=$this->activation'>http://$_SERVER[HTTP_HOST]/reg.php?id=" . mysql_insert_id() . "&activation=$this->activation</a><br />"
. "Если аккаунт не будет активирован в течении 24 часов, он будет удален<br />"
. "С уважением, администрация сайта<br />";
$adds = "From: "password@$_SERVER[HTTP_HOST]" <password@$_SERVER[HTTP_HOST]>n";
$adds .= "Content-Type: text/html; charset=utf-8n";
mail($this->mail, '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);
}
function getMailActivate($id, $act) {
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '" . intval($id) . "' AND `activation` = '" . my_esc($act) . "'"), 0) == 1) {
mysql_query("UPDATE `user` SET `activation` = null WHERE `id` = '" . intval($id) . "' LIMIT 1");
$user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `id` = '" . intval($id) . "' LIMIT 1"));
mysql_query("INSERT INTO `reg_mail` (`id_user`,`mail`) VALUES ('$user[id]','$user[ank_mail]')");
$_SESSION['id_user'] = $user['id'];
return 'Ваш аккаунт успешно активирован';
}
}
function isValid() {
if ($this->set['reg_select'] == 'close')
$err[] = 'Регистрация временно приостановлена';
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . $this->nick . "'"), 0) != 0)
$err[] = "Пользователь с этим E-mail уже зарегистрирован";
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `reg_mail` WHERE `mail` = '" . $this->mail . "'"), 0) != 0)
$err[] = "Пользователь с этим E-mail уже зарегистрирован";
if (!isset($this->mail) || $this->mail == NULL)
$err[] = 'Неоходимо ввести Email';
if (!preg_match('#^[A-z0-9-._]+@[A-z0-9]{2,}.[A-z]{2,4}$#ui', $this->mail))
$err[] = 'Неверный формат Email';
if (strlen2($this->pass) < 6)
$err[] = 'По соображениям безопасности пароль не может быть короче 6-ти символов';
if (strlen2($this->pass) > 32)
$err[] = 'Длина пароля превышает 32 символа';
if ($this->pass != $this->pass2)
$err[] = 'Пароли не совпадают';
if (!isset($this->captcha) || !isset($this->chislo) || $this->captcha != $this->chislo) {
$err[] = 'Неверное проверочное число';
}
$dmg = $this->dmg;
if ($dmg['dd'] > 31 || $dmg['mm'] > 12 || strlen($dmg['gggg']) > 4 || $dmg['gggg']>date('Y'))
$err[] = "Неверный формат даты";
if (isset($err))
return $err;
return false;
}
function InsertIntoUserDb() {
global $db, $time;
$this->activation = md5(passgen());
mysql_query("INSERT INTO `user` ("
. "`nick`, `pass`, `date_reg`, `date_last`, `pol`, `activation`, `ank_mail`, `ank_g_r`, `ank_m_r`, `ank_d_r`"
. ") values(' $_SESSION[nick] ',"
. " '".shif($this->pass)."', '$time', '$time', '$this->pol', "
. "'$this->activation', '$this->mail', "
. "'" . $this->dmg['gggg'] . "', "
. "'" . $this->dmg['mm'] . "', "
. "'" . $this->dmg['dd'] . "')", $db);
$id_reg = mysql_insert_id();
return $id_reg;
}
}
////////////////////////////
$registration = new reg();
/*
* до нажатия отображаем форму
*/
if (!isset($_POST['submit'])&&!isset($_GET['activation']))
echo $registration->regForm();
/*
* после нажатия обрабатываем форму
*/
if (isset($_POST['submit'])) {
$registration->methodPost($_POST);
if (!$registration->isValid()) {
$id_r = $registration->InsertIntoUserDb();
if($set['reg_select'] == 'open_mail'){
$registration->activacionMail($id_r);
msg("Вам было выслано сообщение на ваш почтовый ящик для подтверждения вашего E-mail");
}
elseif($set['reg_select'] != 'open_mail'){
$registration->getMailActivate($id_r, $registration->activation);
header('Refresh: 1; url=/info.php');
}
}
else {
$err = $registration->isValid();
err();
}
}
/*активация мыла*/
if (isset($_GET['activation'])) {
msg($registration->getMailActivate($_GET['id'], $_GET['activation']));
header('Refresh: 1; url=/info.php');
}
/*
* понятия не имею то за хрень но оставил на всякий случай...
*/
if (isset($_SESSION['http_referer']))
mysql_query("INSERT INTO `user_ref` (`time`, `id_user`, `type_input`, `url`) VALUES ('$time', '$user[id]', 'reg', '" . my_esc($_SESSION['http_referer']) . "')");
/////////////////////////////////
echo "<div class = 'foot'>Уже зарегистрированы?<br />»<a href='/aut.php'>Авторизация</a></div>
<div class = 'foot'>Не можете вспомнить пароль?<br />»<
Комментарии:
Нет сообщений в теме