Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Форма входа и регистрации |

21.08.2009, 13:11
|
|
Banned
Регистрация: 19.08.2009
Сообщений: 104
Провел на форуме: 247293
Репутация:
23
|
|
Форма входа и регистрации
Всем доброго времени суток, на мой сайт нужен php скрипт формы входа и регистрации пользователей - поделитесь, плиз у кого есть. 
|
|
|

21.08.2009, 13:14
|
|
Super Moderator
Регистрация: 08.11.2004
Сообщений: 3,395
Провел на форуме: 13166814
Репутация:
3876
|
|
молодец. а то всё в болталку постил..
Для начала совет: сначала сам поищи, а потом, если ничего не найдешь, спрашивай. Я думаю ты не первый, кто задаётся этим вопросом.
Второе: скачивай CMS-ки и изучай их форму авторизации.
|
|
|

21.08.2009, 13:17
|
|
Banned
Регистрация: 19.08.2009
Сообщений: 104
Провел на форуме: 247293
Репутация:
23
|
|
я искал, но ничего путного так и не нашел)
|
|
|

21.08.2009, 13:47
|
|
Участник форума
Регистрация: 07.01.2008
Сообщений: 187
Провел на форуме: 2809557
Репутация:
126
|
|
вот тут смотри, заюзал поиск по твоему вопросу нашлось туева туча кодов авторизаций php.ru/forum
|
|
|

21.08.2009, 13:57
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
На файлах
PHP код:
<?php
/*
(C) Mr.M.I.T.
http://mit-home.nov.ru
*/
session_start();
$do=$_GET['do'];
$error=false;
$_SESSION['user']=!$_SESSION['user']?array('group'=>"guest"):$_SESSION['user']; // если не существует сессия user то создаем её и ставим по умолчанию
function get_serial($name,$dir='') { // фун-я для получения из файла серилизованного массива, $name - имя файла без расширения $dir путь к папке с файлом
$res=array();
$fp=@file_get_contents(($dir?"$dir/{$name}.php":"{$name}.php"));
if ($fp) {
$fp=str_replace("<?die();?>","",$fp);
$res=unserialize($fp);
}
return $res;
}
function set_serial($arr,$name,$dir='') { // фун-я для серилизации массива и записи в файл, $arr - массив, $name - название файла без расширения $dir путь к папке с файлом
$arr="<?die();?>".serialize($arr);
$fp=fopen(($dir?"$dir/{$name}.php":"{$name}.php"),"w");
fputs($fp,$arr);
fclose($fp);
}
switch($do) {
case"out": // если do=out то выходим
unset($_SESSION['user']);
session_destroy();
if (!headers_sent()) {
setcookie("save",'',time()+999999,'/');
}
header("Location:".($_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$_SERVER['PHP_SELF']));
break;
case"register": // если do=register, выводим регистрацию
$login=$_POST['login'];
$pass1=$_POST['pass1'];
$pass2=$_POST['pass2'];
if (isset($login) && isset($pass1) && isset($pass2)) {
if (!empty($login) && !empty($pass1) && !empty($pass2)) {
$users=get_serial('users');
$reallogin=$login;
$login=md5(strtolower($login));
if (!$users[$login]) {
if (strlen($pass1)>=4) {
$pass1=md5($pass1);
$pass2=md5($pass2);
if ($pass1==$pass2) {
$users[$login]=array();
$users[$login]['login']=htmlspecialchars($reallogin);
$users[$login]['pass']=$pass1;
set_serial($users,'users');
$error="Вы успешно зарегистрированны";
header("Refresh:3;url=".$_SERVER['PHP_SELF']);
}else {
$error="Ошибка: Пароли не совпадают";
}
}else {
$error="Ошибка: Минимальная длина пароля 4 символа";
}
} else {
$error="Ошибка: Такой пользователь уже существует";
}
}else {
$error="Ошибка: Обязательные поля нужно заполнить";
}
}
print "
".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")."
<form method=POST>
<table width=30% align=center border=1>
<tr>
<td>Login</td><td><input type='text' name='login'></td>
<tr>
<td>Pass 1</td><td><input type='password' name='pass1'></td>
<tr>
<td>Pass 2</td><td><input type='password' name='pass2'></td>
<tr>
<td colspan=2 align=center><input type=submit value='Регистрация'></td>
</table>
</form>
";
break;
default: // по умолчанию, если do не существует или не равна register и out, выводим авторизацию
if ($_SESSION['user']['group']=='guest') {
$_COOKIE['save']=$_COOKIE['save']?unserialize($_COOKIE['save']):"";
$login=!$_COOKIE['save']['login'] || isset($_POST['login'])?$_POST['login']:$_COOKIE['save']['login'];
$pass=!$_COOKIE['save']['pass'] || isset($_POST['pass'])?$_POST['pass']:$_COOKIE['save']['pass'];
if (isset($login) && isset($pass)) {
if (!empty($login) && !empty($pass)) {
if (!$_COOKIE['save']['pass'] || isset($_POST['pass'])) $pass=md5($pass);
$users=get_serial('users');
$login=md5(strtolower($login));
if ($users[$login]) {
if ($users[$login]['pass']==$pass) {
$_SESSION['user']['group']='user';
$_SESSION['user']['login']=$users[$login]['login'];
if (!headers_sent() && $_POST['save']) {
$cook=array();
$cook['pass']=$pass;
$cook['login']=$users[$login]['login'];
setcookie("save",serialize($cook),time()+999999,'/');
}
}else {
$error="Ошибка: Неверный Пароль";
}
}else {
$error="Ошибка: Такого Пользователя не существует";
}
}else {
$error="Ошибка: Обязательные поля нужно заполнить";
}
}
}
if ($_SESSION['user']['group']=='guest') {
print "
".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")."
<form method=POST>
<table width=30% align=center border=1>
<tr>
<td>Login</td><td><input type='text' name='login'></td>
<tr>
<td>Pass</td><td><input type='password' name='pass'></td>
<tr>
<td>Запомнить?</td><td><input type='checkbox' name='save' value='1'></td>
<tr>
<td colspan=2><a href='?do=register'>Регистрация</a></td>
<tr>
<td colspan=2 align=center><input type=submit value='Войти'></td>
</table>
</form>
";
}else {
print "
<table width=30% align=center border=1>
<tr>
<td>Вы вошли как</td><td>{$_SESSION['user']['login']} <a href='?do=out'>Выйти</a></td>
</table>
";
}
}
?>
На БД:
PHP код:
<?php
/*
(c) Mr.M.I.T.
http://mit-home.nov.ru
*/
############################
# Set Defaults
############################
set_magic_quotes_runtime(0);
session_start();
$do=$_GET['do'];
$error=false;
$_SESSION['user']=!$_SESSION['user']?array('group'=>"guest"):$_SESSION['user'];
$GLOBALS['cnf']=get_serial('db_cnf');
############################
# Support Functions
############################
function get_serial($name,$dir='') {
$res=array();
$fp=@file_get_contents(($dir?"$dir/{$name}.php":"{$name}.php"));
if ($fp) {
$fp=str_replace("<?die();?>","",$fp);
$res=unserialize($fp);
}
return $res;
}
function set_serial($arr,$name,$dir='') {
$arr="<?die();?>".serialize($arr);
$fp=fopen(($dir?"$dir/{$name}.php":"{$name}.php"),"w");
fputs($fp,$arr);
fclose($fp);
}
function givepost($keys,$msql=false) {
$arr=array();
if ($_POST) {
$keys=explode(',',$keys);
for($i=0,$c=count($keys);$i<$c;$i++) {
$arr[$keys[$i]]=$msql?mysql_real_escape_string($_POST[$keys[$i]]):$_POST[$keys[$i]];
}
}
return $arr;
}
function emptypost($keys) {
if ($_POST) {
$keys=explode(',',$keys);
for($i=0,$c=count($keys);$i<$c;$i++) {
if (empty($_POST[$keys[$i]])) {
return true;
}
}
return false;
}
return true;
}
function db_connect() {
if (!$GLOBALS['db_connid']) {
$GLOBALS['db_connid']= mysql_connect($GLOBALS['cnf']['db_host'],$GLOBALS['cnf']['db_user'],$GLOBALS['cnf']['db_pass']) or die(mysql_error());
mysql_query('SET NAMES '.$GLOBALS['cnf']['db_encoding']);
mysql_select_db($GLOBALS['cnf']['db_name'],$GLOBALS['db_connid']);
$GLOBALS['cnf']['db_pref']=mysql_real_escape_string($GLOBALS['cnf']['db_pref']);
}
return $GLOBALS['db_connid'];
}
################################
# Install
################################
if (empty($GLOBALS['cnf'])) {
if (isset($_POST['done'])) {
if (!emptypost("db_name,db_host,db_user,db_encoding,db_pref")) {
$GLOBALS['cnf']=givepost("db_name,db_pass,db_host,db_user,db_encoding,db_pref");
if (db_connect()) {
set_serial($GLOBALS['cnf'],'db_cnf');
mysql_query("
CREATE TABLE `{$GLOBALS['cnf']['db_pref']}_auth` (
`id_user` int(11) NOT NULL auto_increment,
`login` varchar(300) NOT NULL,
`pass` varchar(32) NOT NULL,
PRIMARY KEY (`id_user`),
KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1
") or die(mysql_error());
$error='Установка...';
header("Refresh: 2");
}
}else {
$error="Ошибка: Обязательные поля нужно заполнить";
}
}
print "
".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")."
<form method=POST>
<table width=30% align=center border=1>
<tr>
<td colspan=2 align=center>Установка...</td>
<tr>
<td>db_name</td><td><input type='text' name='db_name'></td>
<tr>
<td>db_pass</td><td><input type='text' name='db_pass'></td>
<tr>
<td>db_user</td><td><input type='text' name='db_user'></td>
<tr>
<td>db_host</td><td><input type='text' name='db_host'></td>
<tr>
<td>db_prefix</td><td><input type='text' name='db_pref' value='pref'></td>
<tr>
<td>db_encoding</td><td><input type='text' name='db_encoding' value='cp1251'></td>
<tr>
<td colspan=2 align=center><input type=submit name='done' value='Установить'></td>
</table>
</form>
";
die();
}
##############################
# Auth/Out/Register
##############################
$db=db_connect();
switch($do) {
case"out":
unset($_SESSION['user']);
session_destroy();
if (!headers_sent()) {
setcookie("save",'',time()+99999,'/');
}
header("Location:".($_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$_SERVER['PHP_SELF']));
break;
case"register":
$login=$_POST['login'];
$pass1=$_POST['pass1'];
$pass2=$_POST['pass2'];
if (isset($login) && isset($pass1) && isset($pass2)) {
if (!empty($login) && !empty($pass1) && !empty($pass2)) {
$login=mysql_real_escape_string(htmlspecialchars($login));
$sql=mysql_query("SELECT * FROM {$GLOBALS['cnf']['db_pref']}_auth WHERE LOWER(login)='".strtolower($login)."'");
if (!mysql_num_rows($sql)) {
if (strlen($pass1)>=4) {
$pass1=md5($pass1);
$pass2=md5($pass2);
if ($pass1==$pass2) {
if(mysql_query("INSERT INTO {$GLOBALS['cnf']['db_pref']}_auth VALUES(NULL,'$login','$pass1')")) {
$error="Вы успешно зарегистрированны";
header("Refresh:3;url=".$_SERVER['PHP_SELF']);
}else{
$error="Системная ошибка, не могу занести информацию в БД";
}
}else {
$error="Ошибка: Пароли не совпадают";
}
}else {
$error="Ошибка: Минимальная длина пароля 4 символа";
}
} else {
$error="Ошибка: Такой пользователь уже существует";
}
}else {
$error="Ошибка: Обязательные поля нужно заполнить";
}
}
print "
".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")."
<form method=POST>
<table width=30% align=center border=1>
<tr>
<td>Login</td><td><input type='text' name='login'></td>
<tr>
<td>Pass 1</td><td><input type='password' name='pass1'></td>
<tr>
<td>Pass 2</td><td><input type='password' name='pass2'></td>
<tr>
<td colspan=2 align=center><input type=submit value='Регистрация'></td>
</table>
</form>
";
break;
default:
if ($_SESSION['user']['group']=='guest') {
$_COOKIE['save']=$_COOKIE['save']?unserialize($_COOKIE['save']):"";
$login=!$_COOKIE['save']['login'] || isset($_POST['login'])?$_POST['login']:$_COOKIE['save']['login'];
$pass=!$_COOKIE['save']['pass'] || isset($_POST['pass'])?$_POST['pass']:$_COOKIE['save']['pass'];
if (isset($login) && isset($pass)) {
if (!empty($login) && !empty($pass)) {
if (!$_COOKIE['save']['pass'] || isset($_POST['pass'])) $pass=md5($pass);
$login=mysql_real_escape_string(htmlspecialchars($login));
$sql=mysql_query("SELECT * FROM {$GLOBALS['cnf']['db_pref']}_auth WHERE LOWER(login)='".strtolower($login)."'");
if (mysql_num_rows($sql)) {
$row=mysql_fetch_assoc($sql);
if ($row['pass']==$pass) {
$_SESSION['user']['group']='user';
$_SESSION['user']['login']=$row['login'];
if (!headers_sent() && $_POST['save']) {
$cook=array();
$cook['pass']=$pass;
$cook['login']=$row['login'];
setcookie("save",serialize($cook),time()+99999,'/');
}
}else {
$error="Ошибка: Неверный Пароль";
}
}else {
$error="Ошибка: Такого Пользователя не существует";
}
}else {
$error="Ошибка: Обязательные поля нужно заполнить";
}
}
}
if ($_SESSION['user']['group']=='guest') {
print "
".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")."
<form method=POST>
<table width=30% align=center border=1>
<tr>
<td>Login</td><td><input type='text' name='login'></td>
<tr>
<td>Pass</td><td><input type='password' name='pass'></td>
<tr>
<td>Запомнить?</td><td><input type='checkbox' name='save' value='1'></td>
<tr>
<td colspan=2><a href='?do=register'>Регистрация</a></td>
<tr>
<td colspan=2 align=center><input type=submit value='Войти'></td>
</table>
</form>
";
}else {
print "
<table width=30% align=center border=1>
<tr>
<td>Вы вошли как</td><td>{$_SESSION['user']['login']} <a href='?do=out'>Выйти</a></td>
</table>
";
}
}
?>
(c) http://www.php.ru/forum/viewtopic.php?t=14334
|
|
|

21.08.2009, 15:06
|
|
Banned
Регистрация: 19.08.2009
Сообщений: 104
Провел на форуме: 247293
Репутация:
23
|
|
спасибо большое!!!
|
|
|

21.08.2009, 15:19
|
|
Banned
Регистрация: 19.08.2009
Сообщений: 104
Провел на форуме: 247293
Репутация:
23
|
|
можно еще вопрос - как сделать подтверждение регистрации по e-mail?
|
|
|

22.08.2009, 04:59
|
|
Участник форума
Регистрация: 31.12.2007
Сообщений: 279
Провел на форуме: 1725509
Репутация:
114
|
|
Сделай в базе еще одну калонку.
При регистрации генерируй код и заноси его туда.
На почту высылай ссылку например : site.ru/index.php?do=actemail&code=уникальный код
При переходе по ссылке удаляй из столбца код. и пиши,что активировано.
А при заходе в аккаунт проверяй если в поле кода не пусто,то говори что мыло не активированно.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|