Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регистрация посетителей на своем сайте, с использованием БД.
 
 автор: Sarat   (09.06.2009 в 22:35)   письмо автору
 
 

Не могу найти доступную для моего понимания информацию, как сделать регистрацию на своем сайте! Подскажите пожалуйста ресурс, где можно про это почитать? Только не говорите мол "установи скрипт форума и посмотри как там устроена регистрация". Для меня это сложно, понять код регистрации навороченного форума с комментариями на английском языке. Заранее благодарен! Администратор, прости за флуд!

  Ответить  
 
 автор: DEM   (09.06.2009 в 22:57)   письмо автору
 
   для: Sarat   (09.06.2009 в 22:35)
 

Если для вас это сложно, то я могу посоветовать учебник автором этого портала:
http://softtime.ru/php5/?id_article=43
Только учтите, что недавно вышло второе издание (обложка та же, только зелёная), лучше купить его.

  Ответить  
 
 автор: Sarat   (10.06.2009 в 08:27)   письмо автору
 
   для: DEM   (09.06.2009 в 22:57)
 

Ну да, хорошая книга, вот только у меня одна есть уже, лежит и пылится. Хочется ведь сразу сделать, чтоб и кот был готовый и комментарии к нему на русском. У меня уровень знания по ПХП самый начальный, книга бы конечно помогла, но её надо заказывать.

Как я понимаю(для простейшей регистрации), начать нужно с того что создать таблицу в БД с полями name (настоящее имя), pass (пароль), n_name (ник) и сделать некоторые разделы сайта недоступными для иных, кого нет в этой таблице. Как сделать последнее?

  Ответить  
 
 автор: Slo_Nik   (10.06.2009 в 09:39)   письмо автору
 
   для: Sarat   (10.06.2009 в 08:27)
 

доступ можно сделать на сессиях.
проверяешь запущена сессия или нет, если запущена, то пускаешь в защищённый раздел, если нет - предлагаешь зарегистрироваться.
вот пример такой авторизации ПРИМЕР
Для регистрации делаешь обычную форму, которую пользователь заполняет на сайте, делаешь проверку правильности заполнения полей и заносишь данные в БД.

  Ответить  
 
 автор: Sarat   (10.06.2009 в 13:17)   письмо автору
 
   для: Sarat   (09.06.2009 в 22:35)
 

Вот что я сделал:
1) В файле index.php создал форму
<table>
<form action="reg.php" method="POST">
<tr>
<td>Имя</td>
<td><input type="text" name="login" ></td>
</tr>
<tr>
<td>Пароль</td>
<td><input type="password" name="password" ></td>
</tr>
<tr>
<td>Повторите пароль</td>
<td><input type="password" name="password2"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK" name="submit" ></td>
</tr>
</form>
</table>

2) в бд создал таблицу users с полями id, login, password, email.

3) создал файл-обработчик, который заносит данные из формы в БД

<?
include_once("connect.php"); /*подключение к базе данных*/
if (isset($_POST['submit']))
{
if(empty($_POST['login']))
{
echo 'Вы не ввели логин';
}
elseif(empty($_POST['password']))
{
echo 'Вы не ввели пароль';
}
elseif(empty($_POST['password2']))
{
echo 'Вы не ввели подтверждение пароля';
}
elseif($_POST['password'] != $_POST['password2'])
{
echo 'Введенные пароли не совпадают';
}
elseif(empty($_POST['email']))
{
echo 'Вы не ввели E-mail';
}
else
{
$login = $_POST['login'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой логин уже существует';
}

else
{
$query = "INSERT INTO users(login , password , email )
VALUES ('$login', '$password', '$email')";
$result = mysql_query($query) or die(mysql_error());;
echo 'Регистрация успешно прошла';
}
}
}
?>

Скажите пожалуйста по тому же пути, что дальше делать? Как закрыть на некоторые разделы сайта доступ для незарегестрированных пользователей? Как предлагать вводить логин и пароль для вновь вошедших зарегестрированных, чтобы открыть им доступ?

  Ответить  
 
 автор: Slo_Nik   (10.06.2009 в 16:33)   письмо автору
1.5 Кб
 
   для: Sarat   (10.06.2009 в 13:17)
 

ты читал статью, сноску на которую я тебе дал? там рассказано и показано как закрыть доступ.
по поводу твоего кода.
есть несколько замечаний (на мой взгляд).
так как ты проверяешь имя пользователя ни чего у тебя не получится.
я прикрепил скрипт проверки имени на уникальность, взят он из примеров к книге "Головоломки на PHP для хакера", первое издание, посмотри как правильно сделать.
Пароль лучше обрабатывать функцией md5(), прочесть можешь о ней в мануале.
В файле index.php можно сделать проверку регистрации пользователя через сессии.
например

<?php 
session_start
();
if(!isset(
$_SESSION['name'])){
 
// выводишь форму и предлагаешь ввести логин/пароль или зарегистрироваться
}
else{
 
// если пользователь зарегистрирован, то выводишь содержание страницы
}
?>

пока всё.

  Ответить  
 
 автор: Sarat   (11.06.2009 в 22:57)   письмо автору
 
   для: Slo_Nik   (10.06.2009 в 16:33)
 

Не стал ломать голову, сделал всё как здес : http://softtime.ru/forum/read.php?id_forum=3&id_theme=65384 но почему то сессия не открывается. Выдает ошибку на линии где " session_start(); ". Во всех файлах выдает ошибку.

  Ответить  
 
 автор: Slo_Nik   (11.06.2009 в 23:32)   письмо автору
 
   для: Sarat   (11.06.2009 в 22:57)
 

ну осталось только тебе привести текст сообщения об ошибке....

  Ответить  
 
 автор: Sarat   (12.06.2009 в 20:46)   письмо автору
 
   для: Slo_Nik   (11.06.2009 в 23:32)
 

Всётаки у меня сессия не открывается, почему не понятно!
Еще ошибка на линии где "if ($_SESSION['error']==2)" - "Notice: Undefined index: error in z:\home\localhost\www\phpsite\reg.php on line 8"
Также когда регестрируешься в файле registration.php на 13-линии где if($_SESSION['id'] != session_id()) пишет Notice: Undefined index: id in z:\home\localhost\www\phpsite\registration.php on line 13
Получается функция session_start(); не создает идентификатор? Почему?

  Ответить  
 
 автор: Skinhead1   (17.06.2009 в 22:07)   письмо автору
 
   для: Sarat   (12.06.2009 в 20:46)
 

У тебя что-то там не определено, это такую шнягу написал тебе этот ублюдок, наверное соответствующие элементы массива $_SESSION не определены. Сука, на дату не посмотрел... Удалите сообщение, оно уже наверное ни к месту..

  Ответить  
 
 автор: Sarat   (21.06.2009 в 10:33)   письмо автору
 
   для: Skinhead1   (17.06.2009 в 22:07)
 

Да нет, если кто нибудь из присутствующих будет это читать, пишите хоть через месяц, я застрял на этом и буду проверять сообщения. Мне бы подробный скрипт для чайника, простой,а то все такие умные, кидают незавершенные коды. Там кусок выхвати, да там, а в итоге собираешь всё и ничего не работает. В поисковике ищешь, дак он вообще такую хуйню выдает! Вот всё сделал, а без регистрации баловство а не сайт, ерунда! По крайней мере для моего сайта!
Пример никто не встречал? Неужели нет нигде про РЕГИСТРАЦИЮ ничего, я уже клавиши стёр! Мне уже даже не важно с БД будет она или без, главное сам факт, чтоб она хоть какая то была!

  Ответить  
 
 автор: Valick   (21.06.2009 в 12:16)   письмо автору
 
   для: Sarat   (21.06.2009 в 10:33)
 

куски кода Вам "кидают" для того чтобы Вы их анализировали, учились и на их основе писали свой код, а не собирали в кучу. Если Вы хотите чему-то научиться, то поисковики вам действительно не помошник. Купите хорошую книгу (в пределах 1000р) по РНР там всё подробно описано (а если повезёт, то и почти готовый код на диске будет)
Второй вариант: вы идёте на фриланс.ру, платите деньги и получаете готовый* код.
___
* По мне так лучше вариант с книгой, так как купленный за деньги готовый код может оказаться "собранием" кусков ;)

  Ответить  
 
 автор: Sarat   (21.06.2009 в 18:35)   письмо автору
 
   для: Valick   (21.06.2009 в 12:16)
 

Ну а с другой стороны это форум по программированию, а не по покупке книг и у меня тут конкретный вопрос выше был "почему не открывается сессия? возможные причины" может кто то знает. Я думаю форумы для этого и нужны, чтоб экономя время и деньги найти ответ на вопрос. И кстати много вопросов, связанных с регистрацией задается и они остаются нераскрытыми и нигде от и до про это не написанно.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования