|
|
|
| Здравствуйте!
Не могу никак «организовать» Функцию регистрации пользователя с помощью PHP, просмотрел целую кучу через поиск на softime.ru, ничего не получается. Может у кого нибудь найдется несколько файлов с кодом (для примера):
1. Главная страница, с просмотром как для гостей так для зарегистри-х Польз-й, с формой регистрации новых…
2. 2-й файл должен открываться только зарегистрированным….( к примеру по ссылке на главной странице: добавить комментарий).
3. Если польз. Зарегистрирован, писать Здравствуйте «Имя», + ссылка на страницу личного кабинета пользователя + кнопочка на удаление с этого компа, если же не зарегистрирован Здравствуйте Гость…
Если покороче - нужен образец полноценного процесса работы сайта с пользователем…. | |
|
|
|
|
|
|
|
для: Dinya_1
(05.11.2008 в 19:44)
| | вот что-то в этом роде... времени "чистить" - нет-с... мож на выходных.
собрано между прочим на примерах с сайта, и подсказок форумчан:)
0) табличка юзверей
CREATE TABLE `users` (
`id_user` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`password` varchar(20) default NULL,
`mailer` varchar(40) NOT NULL default '',
`putdate` datetime NOT NULL default '0000-00-00 00:00:00',
`status` enum('user','moder','admin') default 'user',
PRIMARY KEY (`id_user`)
|
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=14256 ;
1) index.php
<?php
session_start();
include_once("config.php");
?>
|
2) config.php
коннект с базой
if (isset($_SESSION['user'])){$user_names=$_SESSION['user']."! <a href=\"action.php?action=log_off\">Выйти</a>";}
else $user_names='Гость! <a href="action.php?action=new_log">Зарегистрироваться</a> <a href="action.php?action=log_on">Войти</a>';
|
3) action.php
<?
// Страница регситрации нового пользователя
# Соединямся с БД
include_once('config.php');
switch ($_GET['action']) {
case 'new_log':
if(isset($_POST['submit']))
{
$err = array();
# проверям логин
if(!preg_match("/^[a-zA-Z0-9_]+$/",$_POST['name']))
{
$err[] = "Логин может состоять только из букв английского алфавита и цифр";
}
if(strlen($_POST['name']) < 3 or strlen($_POST['name']) > 30)
{
$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
}
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",$_POST['email']))
{
$err[] = "Проверьте e-mail!";
}
if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['password']))
{
$err[] = "Пароль может состоять только из букв английского алфавита и цифр";
}
if(strlen($_POST['password']) < 5 or strlen($_POST['password']) > 20)
{
$err[] = "Внимание! Пароль должен быть не меньше 5 символов и не больше 20";
}
# проверяем, не сущестует ли пользователя с таким именем
$query = mysql_query("SELECT COUNT(id_user) FROM users WHERE name='".mysql_escape_string($_POST['name'])."'");
echo mysql_error();
if(mysql_result($query, 0) > 0)
{
$err[] = "Пользователь с таким логином уже существует в базе данных";
}
# Если нет ошибок, то добавляем в БД нового пользователя
if(count($err) == 0)
{
# Убераем лишние пробелы
$login = trim($_POST['name']);
# Убераем лишние пробелы и делаем двойное шифрование
$password = trim($_POST['password']);
$email=trim($_POST['email']);
mysql_query("INSERT INTO users SET name='".$login."', password='".$password."', mailer='".$email."', putdate='".date('Y-m-j G:i:s')."'");
header("Location: /index.php"); exit();
}
else
{
//print "<b>При регистрации произошли следующие ошибки:</b><br>";
foreach($err AS $error)
{
$ssss=$error."<br>";
}
}
}
else {
?>
<div align="center"><table border=0>
<TR>
<TD bgColor=#eaedf4 BACKGROUND="images/blue_bg2.gif" class=tn>
<b><center>Регистрация</center></b></div>
</Td>
</TR>
<tr><td align=center width="300px" >
<div align="center">
<table class=tn border=2 bgColor=#eaedf4 >
<TR ><TD align=center >
<form id="post" class="container" method="post" action="reger.php">
Логин <input name="name" type="text"><br>
Пароль <input name="password" type="password"><br> e-mail <input name="email" type="text"><br>
<input name="submiter" type="submit" value="Зарегистрироваться">
</form>
</TD></TR>
<tr><td align=center width="300px"><a href="/index.php">На главную </a></td></tr>
</table></div>
</td></tr>
</table></div>
<?
echo @$name;
}
break;
case 'log_on':
if(isset($_GET['submit'])){
$query = "SELECT password FROM users WHERE name='".$_GET['name']."'";
$nme = mysql_query($query);
if(!$nme)
{
echo mysql_error();
echo "Ошибка выполнения запроса";
exit();
}
// Если запрос вернул результат - производим дальнейшую обработку
if(mysql_num_rows($nme) > 0)
{
// Получаем пароль
$password = mysql_result($nme, 0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($_GET['password'] == $password)
{
// Идентификация прошла успешно - осуществляем
// "вход" посетителя. Для того, чтобы в течении текущей
// сесси посетитель не вводил своё имя пароль повторно -
// передаём их через сессию
if(session_start())
{
$_SESSION['user'] = $_GET['name'];
$_SESSION['password'] = $_GET['password'];
$query = "SELECT id_user FROM users WHERE name='".$_GET['name']."'";
$N_user = mysql_query($query);
$_SESSION['N_user']=mysql_result($N_user, 0);
// Осуществляем автоматический переход на
// страницу index.php чтобы убедится, что
// посетитель "вошёл"
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
}
}
else
{
echo "Ошибка идентификации: неправильный пароль";
exit();
}
}
// Если в результате запроса не получено ни одной
// строки - посетитель с таким именем не зарегистрирован
else
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
echo "Ошибка идентификации: посетитель не зарегистрирован";
exit();
}
}
else {
?>
<div align="center"><table border=0>
<TR>
<TD bgColor=#eaedf4 BACKGROUND="images/blue_bg2.gif" class=tn>
<b><center>Вход</center></b></div>
</Td>
</TR>
<tr><td align=center width="300px" >
<div align="center">
<table class=tn border=2 bgColor=#eaedf4 >
<TR ><TD align=center >
<form id="post" class="container" method="get" action="action.php"><br />
Логин <input name="name" type="text"><br> <br />
Пароль <input name="password" type="password"><br /><br />
<input name="action" type="hidden" value="log_on">
<input name="submit" type="submit" value="Войти">
</form>
</TD></TR>
<tr><td align=center width="300px"><a href="/index.php">На главную </a></td></tr>
</table></div>
</td></tr>
</table></div>
<? }
break;
case 'log_off':
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
header("Location:".'./index.php');
break;
default:
@$ip = ($_SERVER['HTTP_X_FORWARDED_FOR'] == "" ? $_SERVER['REMOTE_ADDR'] : $_SERVER['HTTP_X_FORWARDED_FOR']);
echo "<center><h2>ну че-то совсем не то:)<br>".$ip."</h2>
<a href=\"../index.php\">Здесь интереснее</a></center>
";
}
print @$ssss."<br>";
?>
|
4) после <body> инклудится шапочка header.php
<?
echo <<<HERE
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" >
<tr height="47" valign="top" background="image/top_bg01.gif" width=100% colspan=5>
<td height="47" valign="top" background="image/top_bg01.gif">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td align="left" valign="top"><img src="image/logo.gif" width="277" height="47"></td>
<td align="right" valign="bottom" >
<table border="0" cellpadding="0" cellspacing="0" class="text">
<tr align="center" class="text" >
<td width="94">
HERE;
echo "Приветствую, ". $user_names;
echo <<<HERE
</td>
<td width="100" class=rglink></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
HERE;
?>
|
----
Regards, Max Vasin. | |
|
|
|
|
|
|
|
для: Max_No_Dead_Vasin
(06.11.2008 в 00:02)
| | default NULL - это тоже что NULL ?
А тогда NOT NULL default - это что, и вообще слова default нет при создании таблици | |
|
|
|