SUM — Simple User Management

15 Авг 2010

После того как в феврале я опубликовал статью, о том как можно реализовать систему регистрации и авторизации пользователей для своего сайта на PHP, то возникло масса вопросов, предложений, возражений по поводу скрипта. Не обошлось без благодарностей, которые и вдохновили меня на усовершенствование скрипта. Многие осуждали скрипт в его незащищенности от хакеров, так же были и другие замечания, хотя я прежде всего той статьёй хотел показать как это возможно осуществить.

Подумав, сегодня, Я решил реализовать более серьезный скрипт регистрации пользователей, который можно будет без труда внедрить в свой сайт.

И так, представляю Вашему вниманию библиотеку SUM — Simple User Management первой версии, предназначенную пока только для регистрации и аутентификации зарегистрированных пользователей.

Этой статьей я расскажу как воспользоваться моей библиотекой. Для начала необходимо скачать её по ссылке. Архив содержит саму библиотеку в каталоге «sum» , а так-же инсталятор «install.php» и демонстрационный пример «demo.php«.

Приступим к настройке и установке скрипта. В каталоге sum в файле SUM_Settings.php необходимо внести настройки базы данных:

1
2
3
4
5
6
public static $db = array(      // - настройки базы данных
        'host'=>'localhost',       // - хост
        'db_name'=>'test',       // - имя базы данных
        'user_name'=>'root',     // - имя пользователя базы данных
        'password'=>'pass',      // - пароль пользователя базы данных
    );

Теперь убедитесь в наличии Базы Данных в MySQL и запустите на выполнение файл install.php. Если всё прошло отлично, то вы увидите надпись «success». Двигаемся дальше.

В начале каждого php-файла вашего сайта нужно вставить следующие строчки:

1
2
require_once 'sum/SUM.php';
$auth = new SUM;

В теге <head> каждой страницы необходимо подключить следующие файлы из папки sum:

1
2
3
4
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
        <link rel="stylesheet" type="text/css" media="all" href="sum/sum.css" />
        <script src="sum/jquery.min.js" type="text/javascript"></script>
        <script src="sum/sum.js" type="text/javascript"></script>

Теперь для вывода формы авторизации используйте строку:

1
< ?$auth->output_form_authorization();?>

Форма регистрации выводится следующей строкой:

1
$auth->output_form_registration();

Форма редактирования данных пользователя выводится так:

1
$auth->output_form_edit_user_data();

Для проверки статуса пользователя (авторизован или нет) пользуйтесь следующей конструкцией:

1
2
3
if($auth->status){
  //пользователь успешно вошел
}

Массив, который содержит информацию о авторизованном пользователе:

1
2
echo $auth->sum_user['login'];
echo $auth->sum_user['email'];

Много доработок хотелось бы сделать в будущем, но только если эта библиотека будет хоть как-то востребована.

Очень нужна критика компетентных людей, которые могли бы просмотреть код и указать на ошибки.

Обновлено 04.10.2010:

      1. Исправлена ошибка, которая возникала в старых версиях mysql. Не добавлялась запись в БД из-за пустого значения id;
      2. Изменено значение переменной $url по умолчанию, что решает некоторые проблемы;
      3. Логин теперь регистрозависим, то есть логины Admin и admin теперь разные.

Скачать обновленный скрипт можно тут.
Чтобы обновить старый скрипт, замените все файлы в папке sum на новые из скачанного архива.

Домены по 99 рублей по прежнему ждут своего владельца на 2domains.

Начинающему web-программисту всегда сложно выбрать хостинг . Предлагаю проверенный и дешевый вариант — всего 30 рублей в месяц.

Забобрить!
Запомнить эту страницу на Закладок.нет!
www.vaau.ru
Уважаемый читатель! Если мой блог Вам понравился, то предлагаю подписаться на обновление по RSS или по E-mail. У меня так же есть аккаунт в Twitter, за которым Вы можете следовать.

77 комментариев

# Канат Гайлимов оставил(а) комментарий 15 Авг 2010 в 12:01

Качнул, посмотрю потом отпишусь :)

Ответить
# Pirat оставил(а) комментарий 19 Авг 2010 в 20:24

Так это для простого сайта? Я правильно понял?
Ну все-равно спасибо – простенько и со вкусом, потом можно еще поверх чего нибудь налепить…

Ответить
# Никита Красноярцев оставил(а) комментарий 19 Авг 2010 в 22:24

@Pirat, Ну да, для любого сайта.

Прежде всего нужно знать будет ли кто-нибудь пользоваться скриптом или, что нужно изменить или добавить в скрипт, что-бы им пользовались.

Ответить
# Pirat оставил(а) комментарий 20 Авг 2010 в 23:42

@Никита Красноярцев, это я все понятно. Т.е. если создал сайт и прикрутил там этот скрипт, значит понимаешь, для чего ты его прикрутил. К примеру сделал закрытый раздел на сайте, там что-то полезное втиснул. И доступ получаешь только после того как пройдешь регистрацию

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 14:55

я начинающий. уже два дня в поисках подобного скрипта с подробным описанием.скачал. попробую.огорчило что demo.php в браузере вылез крякозябликами…..отпишусь попозже.

Ответить
# Никита Красноярцев оставил(а) комментарий 17 Сен 2010 в 15:02

@saymmi, странно, что кракозябликами. Везде стоит кодировка utf-8, в том числе и файл demo.php в этой кодировке.

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 15:02

с кодировкой какаето канитель….теперь у меня на всем сайте крякозяблики…

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 16:00

на моем сайте

крякозяблики уходят при удалении стоки require_once ‘sum/SUM.php’;
$auth = new SUM;
подскажи что у тебя в файлах подправит надо….

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 16:08

charset=windows-1251″>
у меня

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 17:57

вставил mysql_query(«SET NAMES cp1251″) в блоке подключения к БД. Проблема исчезла.

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 18:06

в общем. не работает. при нажатии на кнопку регистрация…ничего не происходит…..((((

Ответить
# saymmi оставил(а) комментарий 17 Сен 2010 в 18:36

Ошибка была в файле SUM_Settings
значение public static $url = ‘/sum/’
надо изменить на public static $url = ‘sum/’ .Ну sum можно поменять на любую папку главное без черточки ПЕРЕД названием папки. А в остальном все заработало. Спасибо тебе за этот скрипт, за подробное описание по его установке.за …..да за все в общем. Ты настоящий человек..нет ты- ЧЕЛОВЕЧИЩЕ! Спасибо!

Ответить
# Никита Красноярцев оставил(а) комментарий 18 Сен 2010 в 00:28

@saymmi,

Ошибка была в файле SUM_Settings

В общем то это не ошибка а фича))

На счет кодировки. Я так понял нужно сделать выбор кодировки опционально.

Ответить
# saymmi оставил(а) комментарий 18 Сен 2010 в 20:35

Может я ошибаюсь. Но мне кажется сессия должна удалятся из базы при нажатии на кнопочку выйти.даже при нажатии на эту кнопочку я могу зайти к себе в личный кабинет.зарегил двух пользователей(с одного компа ессно), зайти можно только под первым….нет если набрать логин и пароль вторго пользователя вы зайдете…но вам вам скажут что вы вошли как первый пользователь….)))

Ответить
# saymmi оставил(а) комментарий 18 Сен 2010 в 20:42

а..нет…все ок. опера тупит.(поудалял бы мои сообщения….)

Ответить
# Никита Красноярцев оставил(а) комментарий 18 Сен 2010 в 23:07

(поудалял бы мои сообщения….)

@saymmi, нет, пусть. Может еще у кого возникнет такая проблема.

Ответить
# DEN 007 оставил(а) комментарий 05 Окт 2010 в 11:38

У меня еще такое предложение дописать в скрипт возможность авторизации на нескольких поддоменах

имею введу вот это

setcookie($name, $data, $time, ‘/’, ‘.домен.ru’, $secure);

Было бы прелестно это увидеть в скрипте, думаю что нужно вынести эту возможность в конфиг так как не всем она нужна…

А так скрипт достаточно хороший.

так же было бы приятно видеть капчу или вот к примеру [ссылка]
И еще приклеена библиотека jquery, ну и как то грешно выводить ошибку в алерт окне..

Все вышесказанное лично мое мнение!

Ответить
# DEN 007 оставил(а) комментарий 05 Окт 2010 в 11:41

Еше раз ссылку, та чета не открывается..
[ссылка]

Ответить
# Никита Красноярцев оставил(а) комментарий 05 Окт 2010 в 11:50

@DEN 007, спасибо за предложения, учтем ;-)

Ответить
# Toniker оставил(а) комментарий 12 Окт 2010 в 23:15

Здравствуйте.
у меня почему то при проверке наличии Базы Данных в MySQL
(запуская файл install.php) выводит сообщение «success», однако при следующем обновлении страницы install.php выводит сообщение уже «fail»

Ответить
# Никита Красноярцев оставил(а) комментарий 12 Окт 2010 в 23:22

@Toniker, всё правильно. Продолжайте настройку скрипта

Ответить
# Justin оставил(а) комментарий 13 Окт 2010 в 18:29

Здравствуйте.
MySQL работает. прописал настройки в сумм_сеттингс.
Папку Sum скопировал в localhost. Запускаю [ссылка] и…. пустая страница :( ((

Ответить
# Justin оставил(а) комментарий 13 Окт 2010 в 19:45

заработало!! там пхп ини файл на короткие теги надо было настроить )

Ответить
# Toniker оставил(а) комментарий 14 Окт 2010 в 06:27

У меня всё никак не заработает demo.php
Я что то не так делаю
вот пример моих настроек базы данных:

class SUM_Settings {
public static $db = array (
‘host’=>’localhost’,
‘db_name’=>’baza’,
‘user_name’=>’main’, // логин и пароль верны
‘password’=>’123456′, ); // я с ними захожу в базу
// учитывая и эксперементируя решил написать даже так
public static $url = ‘http://it-guest.net.ru/2766fd/UEYSQwxMSee4toGxiLDkHUBNHhcQD0sQQQdVAF4=/;

но demo.php не регит
в базе создаётся таблица со строками

sum_sessions
sum_users

вот пока только это и происходит. Спасибо за ответ :)

Ответить
# Toniker оставил(а) комментарий 15 Окт 2010 в 22:03

не работает регистрация, хоть тресни
sql запросы к базе работают

Ответить
# Никита Красноярцев оставил(а) комментарий 22 Окт 2010 в 16:16

@Toniker, в каком каталоге относительно рабочего находится скрипт?

Ответить
# Странник оставил(а) комментарий 24 Окт 2010 в 15:08

Скажите кто автор творения и можно ли использовать этот открытый код в своих проэктах???

Ответить
# Никита Красноярцев оставил(а) комментарий 24 Окт 2010 в 19:26

@Странник, Автор – Я. Используйте на свой страх и риск.

Ответить
# Toniker оставил(а) комментарий 25 Окт 2010 в 03:16

# Никита Красноярцев
demo.php и install.php
расположены сразу
.ru/demo.php
а всё остальное в папке sum
.ru/sum/SUM_Settings.php

Ответить
# Максим оставил(а) комментарий 06 Ноя 2010 в 17:32

Спасибо за такую библиотеку вам, во всем разобрался, т.к. опыт в программинге есть. Буду использовать в своей CMS, но очень сильно изменю каркас скрипта, не возражаете?

Ответить
# Никита Красноярцев оставил(а) комментарий 07 Ноя 2010 в 13:47

@Максим, не возражаю.

Ответить
# Krevedko оставил(а) комментарий 24 Ноя 2010 в 20:26

Спасибо, очень хорошая вещь! Буду конструировать панель управления через эту штучку

Ответить
# Никита Красноярцев оставил(а) комментарий 24 Ноя 2010 в 22:17

@Krevedko, пожалйста=) Удачи.

Ответить
# Krevedko оставил(а) комментарий 26 Ноя 2010 в 20:56

@Никита Красноярцев, Эмм, а как закрыть соединение mysql_close() для базы данной библиотеки? А то, я только начинаю во все это въезжать, а там подключание замудро как-то происходит :(

Ответить
# Никита Красноярцев оставил(а) комментарий 26 Ноя 2010 в 21:29

@Krevedko, А для чего закрыть хотите?

Ответить
# Krevedko оставил(а) комментарий 26 Ноя 2010 в 21:46

@Никита Красноярцев, чтобы подключиться к другой базе в одном скрипте

Ответить
# Никита Красноярцев оставил(а) комментарий 26 Ноя 2010 в 22:02

@Krevedko, так и думал) скрипт в этом смысле эгоист. Я почему то не подумал сразу на эту тему и не использовал идентификатор соединения.
Возможно будет достаточно закрыть соединение в файле SUM.php в конце конструктора (метод SUM).
public SUM ($t = 0) {
if($t==0){
$this->action_database_connection();
$this->action_authorization();
}
else
$this->action_database_connection();
mysql_close(); //вот тут!
}

Ответить
# Krevedko оставил(а) комментарий 26 Ноя 2010 в 22:20

@Никита Красноярцев, понимаешь ли какие пироги :) мне нужно сначала выполнить действия в базе SUM, потом ее закрыть, выполнить действия в другой базе, закрыть ее и снова открыть SUM. То есть ты предлагаешь закрыть соединение в самом SUM, отсюда вопрос: будут ли работать после закрытия такие штуки, как $auth->sum_users['login'] и т.д, так как мой второй скрипт построен именно на данных из SUM’a. Не сердись за глупые вопросы, я 2 дня назад php руками пощупал, про базу данных вообще ни сном ни духом :)

Ответить
# Никита Красноярцев оставил(а) комментарий 26 Ноя 2010 в 22:53

@Krevedko, массив $auth->sum_users[] будет доступен и после закрытия соединения к БД.

Ответить
# Krevedko оставил(а) комментарий 26 Ноя 2010 в 22:55

Все, Никита, наладил своими силами :)
Т.к. в своей базе я использую идентификатор, то я сразу сделал 2 подключения таким вот способом:
mysql_query(запрос, идентификатор)
А вообще, в будущих релизах, которые, надеюсь будут, желательно сделать более юзабельно :) еще раз спасибо за скрипт, удачи во всех отношениях!

Ответить
# Никита Красноярцев оставил(а) комментарий 26 Ноя 2010 в 23:08

@Krevedko, Спасибо Вам =)

Ответить
# Shustrik оставил(а) комментарий 07 Дек 2010 в 17:57

Никак не заработает .. пишет – фатальная ошибка в строке 18 в файле
SUM_DataChecking . И что то про функцию mb_eregi

Ответить
# Shustrik оставил(а) комментарий 07 Дек 2010 в 18:25

конкретней – вот это ему не нравится «^[0-9a-z_]{3,25}\$»

Ответить
# Никита Красноярцев оставил(а) комментарий 07 Дек 2010 в 23:09

@Shustrik, Скорее всего php не может найти модуль mbstring.
Какая версия интерпретатора php у вас уставнолена?

Ответить
# Ya оставил(а) комментарий 10 Дек 2010 в 11:06

А как сделать востоновление пароля?

Ответить
# user100000 оставил(а) комментарий 28 Дек 2010 в 02:24

в demo.php не могу зарегистрировать пользователя
после ввода всех данных при нажатии вылазит окно с пустой ошибкой

Ответить
# Aleksey оставил(а) комментарий 29 Дек 2010 в 03:00

Да, к вопросу о восстановлении пароля – вещь актуальная. Я скрипт настроил на свой сайт, всё отлично работает, но только потом осознал, что восстановления пароля нет. А ведь сейчас, когда юзеры авторизуются на десятках сайтах, и многие под разными паролями, проблема забытого пароля стоит остро!:)

Ответить
# Dima оставил(а) комментарий 03 Янв 2011 в 10:17

Пожалуйста, помогите!!! Я только начинаюший в веб-программировании, поэтому не понимаю что происходит. Я всё правильно сделал, скрипт регистрирует пользователя, но когда я авторизуюсь Денвер выдаёт вот такую ошибку:
Warning: Cannot modify header information – headers already sent by (output started at Z:\home\reg.com\www\sum\SUM.php:10) in Z:\home\reg.com\www\sum\SUM.php on line 287. Если не сложно посмотрите, что там.

Ответить
# Dima оставил(а) комментарий 03 Янв 2011 в 10:59

А, оказывается всё ОК, извините, я сам что-то тупнул.

Ответить
# Жека оставил(а) комментарий 15 Янв 2011 в 04:27

у меня вот такая ошибка народ помогите плиз
Warning: Cannot modify header information – headers already sent by (output started at Z:\home\reg.com\www\sum\SUM.php:10) in Z:\home\reg.com\www\sum\SUM.php on line 287. Если не сложно посмотрите, что там.

Ответить
# AlaNN оставил(а) комментарий 15 Янв 2011 в 04:52

у меня возникла такая ошибка при включение install.php
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in z:\home\localhost\www\mukhtolovo\sum\SUM.php on line 25
помогите плиз, я может что то не так делаю

Ответить
# fabol оставил(а) комментарий 16 Янв 2011 в 18:08

Регистрация не проходит, пустая ошибка…В чем может быть проблема???

Ответить
# The_Pupsa оставил(а) комментарий 09 Фев 2011 в 00:12

у меня тоже никак. в файле SUM_DataChecking выдает ошибку, когда проверяет вот это:«^[0-9a-z_]{3,25}\$». пробовала удалить, он дальше стал ошибки находить в том же файле

Ответить
# antonkasuper оставил(а) комментарий 09 Фев 2011 в 18:54

Скачал, щас найну проверять и пытаться внедрить на свой сайт!

Ответить
# 123456 оставил(а) комментарий 15 Фев 2011 в 18:31

У меня такая проблема: почему то не весь сайт а именно формы с регистрацией написаны какими-то кракозяблами, как исправить?

Ответить
# 123456 оставил(а) комментарий 17 Фев 2011 в 12:33

ку-ку??????

Ответить
# Роман оставил(а) комментарий 28 Фев 2011 в 01:55

Блин. А что за фишка – зарегаться Admin можно а залогиниться только admin.

Ответить
# Павел оставил(а) комментарий 28 Мар 2011 в 20:40

@saymmi, извините, но вы не пробовали изменить кодировку отображения страниц в вашем браузере? =)

Ответить
# MaSKa_RaD оставил(а) комментарий 02 Апр 2011 в 04:30

А че админ пропал?

Ответить
# Павел оставил(а) комментарий 18 Апр 2011 в 20:46

Все прекрасно, один из лучших и простых скриптов регистрации. Проблем и сложностей нет никаких.

Можно твой скрипт опубликовать на своем сайте(по сайтостроению)? С указанием обратной ссылки, конечно же.

Ответить
# Никита Красноярцев оставил(а) комментарий 18 Апр 2011 в 21:00

@Павел, да, конечно)

Ответить
# Павел оставил(а) комментарий 18 Апр 2011 в 21:25

@Никита Красноярцев,

Супер, спасибо.

Ответить
# oldeev оставил(а) комментарий 19 Апр 2011 в 21:55

Прошу помочь. Сегодня скачал скрипт,поставил свои настройки для базы,
запустил nstall.php, ина экран вывалилось
Parse error: syntax error, unexpected $end in C:\xampp\htdocs\sum\sum\SUM.php on line 372

Может быть, Никита что.то исправил в классе?

Ответить
# Lyodik оставил(а) комментарий 20 Апр 2011 в 07:28

В основном такие ошибки возникают из-за того, что где не поставлена закрывающая скобка. Возможно и у вас эта ошибка вылетает, потому-что где-то в этом файле (C:\xampp\htdocs\sum\sum\SUM.php) не поставлена закрывающая фигурная скобка: }
Например, там открыт оператор if (), поставлена открывающая фигурная скобка {, а закрывающая по окончании работы с этим оператором не поставлена. Просто внимательно просмотрите этот файл и, если в php разбираетесь, поставьте закрывающую фигурную скобку.

Ответить
# oldeev оставил(а) комментарий 20 Апр 2011 в 12:21

Спасибо за быстрый ответ. Дело в том, что я скачал архив, развернул и получил такую ошибку. Ничего не менял. Вопрос: рабочий ли вариант в архиве?

Ответить
# Никита Красноярцев оставил(а) комментарий 20 Апр 2011 в 12:32

@oldeev, с 4 октября 2010 года в архиве ничего не изменялось и скрипт был рабочим. Не думаю, что сейчас он не рабочий.

Вам помогла фигурная скобка? Возможно вы чисто случайно стерли где-то скобку…

Ответить
# oldeev оставил(а) комментарий 20 Апр 2011 в 13:08

Проверил скобку, не нашел, вроде все на месте. Плюнул, скачал еще раз архив, трогал только настройки базы. Использую PHPDesigner, он подсвечивает ошибки типа незакрытых скобок. В растерянности и недоумении, надеюсь, что Никита укажет путь.

Ответить
# oldeev оставил(а) комментарий 20 Апр 2011 в 13:28

Проблема решилась просто.Благодарю за ответы. У меня лок. сервер не любит короткие тэги. Прописал вместо <? <?php, и все поехало. Спасибо еще раз за скрипт и поддержку.

Ответить
# victor оставил(а) комментарий 22 Апр 2011 в 21:54

Неверно отображается панель авторизации (крякозяблики – Логин)
У меня кодировка cp-1251, а как изменить Вашу? Был бы очень благодарен.

Ответить
# victor оставил(а) комментарий 22 Апр 2011 в 22:51

Пересохранил файл «sum.php» в другой кодировке и все стало нормально. Думаю это действие надо описать в мануальчике…
Вопрос автору и всем, кто хорошо разбирается в php:
Скрипт сильно уязвим? Заранее спасибо за ответ.

Ответить
# Maqsim оставил(а) комментарий 08 Май 2011 в 07:22

Ну такое, надо поработать над системой ещё чуток.
Если что, пиши… Если захочешь, то в мир появиться SUM 2.0 =)

Ответить
# rozeR оставил(а) комментарий 07 Июл 2011 в 18:46

@Никита Красноярцев,
А как сделать чтобы логин записывался в БД при добавления комментариев?

Ответить
# rozeR оставил(а) комментарий 07 Июл 2011 в 18:54

а все проблема ришена)

Ответить
# kote оставил(а) комментарий 03 Дек 2011 в 00:52

Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: NO) in /home/u689098644/public_html/sum/SUM.php on line 37

Warning: mysql_query() [function.mysql-query]: Access denied for user ‘root’@'localhost’ (using password: NO) in /home/u689098644/public_html/sum/SUM.php on line 72

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/u689098644/public_html/sum/SUM.php on line 72
fail

Ответить
# Maqsim оставил(а) комментарий 07 Дек 2011 в 05:01

@kote, Ну, и что это? Это же не ошибка SUM, правильно? А просто доступ запрещен к MySQL, что тут не понятного? Это совсем другая ошибка

Ответить
# Vitaliy оставил(а) комментарий 12 Янв 2012 в 00:49

Здравствуйте!
У меня стоит Denwer.

Скачал скрипты установил, изменил кодировку (на cp-1251).
Все отображается коректно (после пересохранение файлов php).
При нажатии «Вход» или «Регистрация» появляется пустое сообщение. И ничего не происходит.
В чем может быть проблема?

Ответить
# Maqsim оставил(а) комментарий 22 Янв 2012 в 22:58

@Vitaliy, а в строке браузера какой адрес изображен? Он, скорее всего, не выходит из скрипта логинизации или регистрации.

Ответить

Добавить комментарий

Псевдоним*:
Эл. почта*:
Сайт: