Ребята помогите! Делаю сайт, но так, как в этом деле не профессионал подскажите как сделать на сайте регистрацию пользователей(логин, пароль)? Какие нужно таблице в базе создавать? Как должен быть написан обработчик? Пожалуйста помогите!
Ребята помогите! Делаю сайт, но так, как в этом деле не профессионал подскажите как сделать на сайте регистрацию пользователей(логин, пароль)? Какие нужно таблице в базе создавать? Как должен быть написан обработчик? Пожалуйста помогите!
WIN, у тебя имеется диск с созданием сайтов "Joomla"? Если нет такового, то напиши мне в комфорте, я тебе скину образ... Классная вещь Я почти уверен там есть то что ты ищешь.
Кинь пожалуйста этот диск, тока сперва скажи адрес коммфорта, и когда ты там будешь?
Опишу только логику и базовый функционал
Сначала подготавливаем базу данных. подразумеваю, что использоваться будет MySQL.
Создаем таблицу пользователей, например такую:
тут, думаю все ясно. в таблице храним логин, пароль, емайл, дату регистрации, дату последнего визита и ip.PHP код:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(5) NOT NULL auto_increment,
`login` varchar(50) default '0',
`password` varchar(50) default '0',
`email` varchar(50) NOT NULL default '0',
`join_date` int(11) NOT NULL default '0',
`last_date` int(11) NOT NULL default '0',
`ip` varchar(15) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
далее пишем механизм регистрации пользователей. по сути нам надо написать скрипт, который бы заносил во вновь созданную таблицу пользовательские данные. Эта данные нужно через чтото вводить, вводить их будем через форму регистрации. Выглядить она будет примерно так:
тут также, думаю, никаких вопросов не должно быть.Код HTML:<form action="register.php" method="post"> <p>Имя пользователя:</p> <input type="text" name="login" tabindex="1" /> <p>Пароль:</p> <input type="password" name="password" tabindex="2" /> <p>Подтвердите пароль:</p> <input type="password" name="password2" tabindex="3" /> <p>e-mail:</p> <input type="text" name="email" tabindex="4" /> <input type="submit" value="Зарегистрироваться" tabindex="5" /> </form>
Пишем обработчик.
дальше нужно реальзовать пользователю возможность авторизовываться, собственно ради этого все и делалось. да?!)PHP код:
<?php
/**
* @author nons@studio38.ru
*
*/
//получаем данные
$login = $_POST***91;"login"***93;;
$login=htmlspecialchars($login, ENT_QUOTES);
$password = $_POST***91;"password"***93;;
$password=htmlspecialchars($password, ENT_QUOTES);
$password2 = $_POST***91;"password2"***93;;
$password2=htmlspecialchars($password2, ENT_QUOTES);
$email = $_POST***91;"email"***93;;
$email=htmlspecialchars($email, ENT_QUOTES);
//сравниваем введенные пароли
if(strcmp($password, $password2)) {
die("Пароли не совпадают");
}
//проверим, есть ли такой логин в системе
$sql="SELECT `login` FROM `users` WHERE `login`='".$login."'";
$result=mysql_query($sql);
if( ($row=mysql_fetch_array($result)) ){
die("Логин '".$login."' уже существует, попробуйте другой.");
}
//заносим (регистрируем) пользователя
$ip = getenv('REMOTE_ADDR'); //IP
$date=time();
$query="INSERT INTO `users` (`login`, `password`, `email`,`join_date`, `ip`) VALUES('".$login."', '".md5($password)."', '".$email."','".$date."','".$ip."')";
mysql_query($query);
?>спасибо за регистрацию<?
?>
авторизовываем так - пользователь вводит свой логин и пароль, сверяем их с табличными данными, если все ок, то инициализируем механизм сессий, которые будут говорить нам о том, что пользователь авторизован.
аналогично форме регистрации рисуем форму авторизации:
и пишем обработчик авторизации login.phpКод HTML:<form method="post" action="login.php" onsubmit="this.loginb.disabled=true;"> <p>Имя:</p> <input type="text" name="login" /> <p>Пароль:</p> <input type="password" name="password" /> <input type="submit" name="loginb" value=" Войти " /> </form>
проверяем, что пользователь авторизован, следующим образом:PHP код:
<?php
/**
* @author nons@studio38.ru
*
*/
//получаем данные
$login = $_POST***91;"login"***93;;
$login=htmlspecialchars($login, ENT_QUOTES);
$password = $_POST***91;"password"***93;;
$password=htmlspecialchars($password, ENT_QUOTES);
//проверяем пароль?
$query="SELECT `login`, `password` FROM `users` WHERE `login`='".$login."' and `password`='".md5($password)."'";
$result=mysql_query($query);
if(!mysql_num_rows($result)>0) {
die("Неверный логин/пароль, попробуйте еще");
}
//авторизовываем пользователя
//инициализируем сессии
@session_start();
if (isset($login) && isset($password) && !isset($_SESSION***91;'valid_user'***93;) ){
$sql = "SELECT * FROM `users` WHERE `login`='".$login."' and `password`='".md5($password)."'";
$result = mysql_query($sql);
if (mysql_numrows($result)>0){
//получаем данные из таблицы
$tmp = mysql_result($result, 0, 'id');
//переменная сессии, в которой хранится ID пользователя
$_SESSION***91;'uid'***93; = $tmp;
//храним его имя
$_SESSION***91;'valid_user'***93; = $login;
//обновляем данные пользователя
$query = "UPDATE `users` SET `last_date`='".time()."' WHERE `id`='".$tmp."'";
mysql_query($query);
}
}
//авторизовали и перемещаем пользователя на главную страницу
echo "<script>self.location.replace('index.php');</script>";
?>
както так если очень вкратце и образно) в коде возможны ошибки, писал на память и не проверял, так что внимательно смотрим) если что говорим.PHP код:
<?php
/**
* @author nons@studio38.ru
*
*/
if (isset($_REQUEST***91;session_name()***93;)) @session_start();
if (isset($_SESSION***91;'valid_user'***93;)){
//пользователь авторизован
echo "<p>id: </p>".$_SESSION***91;'uid'***93;;
echo "<p>login: </p>".$_SESSION***91;'valid_user'***93;;
}
?>
ЗЫ вообще, в интернетах много статей по этой теме, миллионы просто. и каждый волен выбирать свой способ реализации данного механизма)
советую почитать про сессии на php
успехов.
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
никуда без жавскрипта просто для альтернативы:PHP код:
//авторизовали и перемещаем пользователя на главную страницу
echo "<script>self.location.replace('index.php');</script>";
PHP код:
//авторизовали и перемещаем пользователя на главную страницу
header('Location: index.php');
Не пей, братец, козленочком станешь
не понимаю, что так рассмешило?) без проблем, можно и даже нужно header().
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
кусок кода взят из одного старого проекта, где предварительно обязательно выводился заголовок, соответственно выдавалась ошибка (Cannot modify header information - headers already sent by ) позже исправил, но метод с жс остался )
а вот жс у нас, к сожалению, очень немногие знают впринципе.
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
Ну я с пониманием отношусь к такому положению вещей. Если жс ведет себя в разных браузерах по разному, то есть смысл, наверное, подождать когда это дело унифицируется. К тому же спецификация html - это все таки спецификация документа, а не программы. Понятно, что это давно устарело и людям хочется чтобы все мигало и двигалось, но пока мы живем по таким правилам стараюсь избегать жс вообще. ) А к тем кто знает жс, отношусь с осторожностью. Ибо - инопланетяне, не меньше ;)а вот жс у нас, к сожалению, очень немногие знают впринципе.
Не пей, братец, козленочком станешь
про ajax слышали?
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
дабы закрыть тему js хочу сказать, что ваше право использовать его, или нет) я же считаю, что в современном интернете без javascript никуда. и тут даже не в ajax дело. то, что позволяет делать js и его фреймворки в первую очередь повышает удобство пользования сайтом, а именно это, имхо, и есть цель его использования, а не всякие "чтобы все мигало и двигалось" это for fun.
ЗЫ ждите.
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
Пусть повышает удобство, я не против. Лишь бы не понижало. И не раздражало.
Чтобы не быть голословным, меня жутко бесит отображение картинок на форуме. Когда она через непонятно сколько времени наконец-то подгружается, а потом так же при случайном клике пропадает. Вот за это бы надо автора такого жс посадить на горячую сковородку )
Не пей, братец, козленочком станешь
угу, в этой версии форума разработчики не очень удачно реализовали lightbox. в последующих уже пофиксили, на сколько я знаю.
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
Да тут дело даже не в том, что удачно или неудачно, а в том, что "зачем?" Чем такой способ отображения картинок удобнее обычного? Ну ладно, мы и так тут нафлудили не по теме. Почитаю лучше Пелевина и спать ;)
Не пей, братец, козленочком станешь
тем, что можно просматривать большие картинки, не покидая текущую страницу. + во многих подобных скриптах есть возможность просмотра коллекций изображений + в том же модальном окне есть режим слайд-шоу. + изображения отображаются на темном фоне, что удобнее при просмотре фото + эстетическое исполнение (не пример этого форума, но в принципе)
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
если страница становится неактивна, то вы её один фиг типа покинули, и если б большое изображение открылось например в новом окне, то я мог бы вернуться на текущую страницу и что-нибудь кликать пока изображение там открывается само по себе. То есть скрипт меня вяжет по рукам натурально, приходится сидеть и ждать пока изображение загрузится. Через две-три секунды я кликаю на крестик и закрываю эту лабуду, не дожидаясь загрузки. Да и кто дал право скрипту решать то, как я хочу посмотреть картинку. Делайте альтернативу типа 1)посмотреть в новом окне, 2)посмотреть в этом же на темном фоне с предварительным шоу в виде вращающихся точек
Добавлено через 8 минут
Рекомендую: "WEB-дизайн доступных сайтов или руководство по универсальному юзабилити". Сара Хортон.
Ну и вы мне порекомендуйте что-нибудь по жс ;)
Последний раз редактировалось salnickov; 21.06.2009 в 02:01. Причина: Добавлено сообщение
Не пей, братец, козленочком станешь
AmorF (21.06.2009)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)