|
Автор |
Сообщение |
ScarHead
Зарегистрирован: 26.05.2009 Сообщения: 1
|
|
|
|
Здравствуй Денис! Пишет тебе читатель твоей книги "Движок для Вашего сайта". Меня зовут Олег. Живу я в России. В этом году закончиваю колледж, сейчас работаю над дипломом, тема которого - Разработка системы управления контентом сайта, то бишь CMS. Долго искал учебные материалы по данной теме и вот на глаза мне попалась твоя книга. Пролистав ее в магазине я понял, что это то что мне нужно и не задумываясь купил. Заплатил я за нее 375 российских рублей (примерно 92 гривны). Написал по ней собственный движок, и теперь он успешно работает, так что диплом практически готов! Я в восторге! Вообще твоя книга произвела революцию в моей голове, теперь я решил, что сайты надо создавать исключительно с помощью CMS! Если это мегасайт, то следует использовать джумлу, PHP Nuke итд, а если простой сайт то почему бы не написать свой движок! Огромное
спасибо за книгу! |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Тебе спасибо за покупку книги! Будут вопросы - обращайся |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Наташенька
Новенький
Зарегистрирован: 29.05.2009 Сообщения: 22 Откуда: Россия
|
|
|
|
Здравствуйте, Денис!
Я начинающий веб-дизайнер, студентка художественного колледжа. Ваша книга очень мне пригодилась для изучения того, как установить и использовать стандартные движки, и как к ним приделывать некоторые простые свои фишки. Глубоко в программирование я пока не могу закапываться, мне нужнее работать с оформлением сайтов, но пока я не знала, как сайт настраивается, многого не удавалось вообще сделать. А книги по общим вопросам программирования на PHP для меня оказались слишком сложными. Поэтому спасибо Вам за понятную и полезную книгу!
У меня вопрос, который, может быть, будет важен не только для меня. В Вашей книге, когда говорится об интеграции CMS с форумом phpBB, везде имеется в виду версия 2 этого форума. Но она больше не поддерживается разработчиками, и уже два года существует версия 3 Olympus, гораздо более современная, с исправленными ошибками и многими новыми возможностями. На диске к Вашей книге тоже прилагался (старый) дистрибутив 3-й версии, но в книге нет ни слова о том, как его использовать. А версия 2 форума уже мало кому сейчас нужна.
Я бы хотела взять за основу Вашу CMS (убрав из нее некоторые лишние для меня функции и добавив несколько своих типов страниц), но ее нужно будет обязательно интегрировать с форумом phpBB 3 Olympus (версия 3.0.4). Я правильно понимаю, что для этого надо исправить обращения к функциям форума и пути к его файлам? Или там еще и таблицы другие?
Я, конечно, не прошу за меня написать заново всю главу про интеграцию с форумом для phpBB 3, но пожалуйста, объясните, что нужно исправить в Ваших скриптах, чтобы они работали с этой версией. В частности, в Ваших примерах везде подцепляются файлы форума phpBB2:
pagestart.php
extension.inc
В версии 3 таких файлов уже вроде бы нет. Не могли бы Вы подсказать, какие именно функции и переменные форума должны быть доступны для скриптов из глав 14-20 книги? В каких файлах форума 3-й версии их, скорее всего, надо искать?
Буду очень благодарна за ответ. _________________ Ко мне всегда можно на ты. Но это не значит, что я всегда согласна. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Цитата: |
А версия 2 форума уже мало кому сейчас нужна.
|
Ошибаешься Вот этот форум как и многие другие работают на второй версии и все прекрасно Тем более когда уже сам доработал этот форум от и до.
Цитата: |
Я правильно понимаю, что для этого надо исправить обращения к функциям форума и пути к его файлам? Или там еще и таблицы другие?
|
Нужно смотреть, я третью версию если честно глубоко не ковырял. Пробуй сама, может получится - должно получиться. Сейчас лень переписывать (фактически) главы 14-20 |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Наташенька
Новенький
Зарегистрирован: 29.05.2009 Сообщения: 22 Откуда: Россия
|
|
|
|
Денис, ну я ж писала, что не предлагаю переписывать книгу заново. Но Вы бы могли хотя бы подсказать, какие функции и переменные Ваш скрипт использовал из подцепляемых файлов 2-й версии форума:
pagestart.php
extension.inc
чтобы я могла сама искать их аналоги.
Это вопрос не по 3-й версии форума, а по Вашему скрипту, опубликованному в книге. Не ответите? |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Наташенька, вот что нашел. Мне повезло и не пришлось самому разбираться с авторизацией phpbb3 - зачем изобретать велосипед, если уже кто-то его изобрел, а Гугл поможет его найти ))
Для того, что бы понимать зачем и как это делать, сначала я постараюсь объяснить логику работы. Из уже готовых изменений, нам нужно добавить в БД сайта, дополнительное поле, например — 'user_f_id', в которое мы будем записывать информацию о сопоставлении профилей пользователей сайта, с профилями пользовталей форума (предполагается числовой идентификатор, user_id из БД форума — таблицы %prefix%_users).
1. Пользователь заполняет на сайте поля login и password
2. Проверяем, заполненно ли у предпологаемого пользователя поле user_f_id
Если заполненно, то:
1) Запускаем функцию авторизации пользователя через форумную БД (листинг ниже)
2) Если пароль не подходит, то выходим. Если подходит, то ставим авторизию на сайте + авторизацию на форуме
3) Авторизация на форуме делается путем установки кук + добавлением записи в таблицу %prefix%_sessions БД форума (листинг ниже)
Если не заполнено, то:
1) Скрипт производит стандартные функции валидации пароля
2) Если пароль не подходит, то выходим, если подходит, то запускаем функции установки сопоставления
3) Создаем запись в БД форума о пользователе (таблица %prefix%_users)
4) Созадем запись в БД форума о правах пользователя (таблица %prefix%_user_group)
5) Заполняем в БД нашего сайта поле user_f_id
Собственно всё. Теперь мы имеем систему, благодаря которой уже зарегистрированные пользователи, при первом входе заведут себе новый аккаунт на форуме. По какому критерию их сравнивать (логин, почта) это уже решайте сами.
Естественно нужно еще дописать функии, которые при регистрации пользователей будут создавать учетную запись на форуме. И чтобы при авторизации несуществующего пользователя на сайте, при правильном форумном логине и пароле, ему автоматически создавалась учетная запись на сайте.
Листинг ф-ций, которые проверяют пароль из форумной базы:
Код: |
// phpbb_hash($password) - Создание пароля
// phpbb_check_hash($password, $hash) - Верификация пароля
function unique_id()
{
return substr(md5(rand().'_'.microtime().'_'.rand()), rand(0, 15), 16);
}
function _hash_gensalt_private($input, &$itoa64, $iteration_count_log2 = 6)
{
if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
{
$iteration_count_log2 = 8;
}
$output = '$H$';
$output .= $itoa64[min($iteration_count_log2 + ((PHP_VERSION >= 5) ? 5 : 3), 30)];
$output .= $_hash_encode64($input, 6, $itoa64); return $output;
}
function _hash_encode64($input, $count, &$itoa64)
{
$output = '';
$i = 0;
do
{
$value = ord($input[$i++]);
$output .= $itoa64[$value & 0x3f];
if ($i < $count)
{
$value |= ord($input[$i]) << 8;
}
$output .= $itoa64[($value >> 6) & 0x3f];
if ($i++ >= $count)
{
break;
}
if ($i < $count)
{
$value |= ord($input[$i]) << 16;
}
$output .= $itoa64[($value >> 12) & 0x3f];
if ($i++ >= $count)
{
break;
}
$output .= $itoa64[($value >> 18) & 0x3f];
}
while ($i < $count);
return $output;
}
function _hash_crypt_private($password, $setting, &$itoa64)
{
$output = '*';
// Check for correct hash
if (substr($setting, 0, 3) != '$H$')
{
return $output;
}
$count_log2 = strpos($itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30)
{
return $output;
}
$count = 1 << $count_log2;
$salt = substr($setting, 4, 8);
if (strlen($salt)
!= 8)
{
return $output;
}
if (PHP_VERSION >= 5)
{
$hash = md5($salt . $password, true);
do
{
$hash = md5($hash . $password, true);
}
while (--$count);
}
else
{
$hash = pack('H*', md5($salt . $password));
do
{
$hash = pack('H*', md5($hash . $password));
}
while (--$count);
}
$output = substr($setting, 0, 12);
$output .= $_hash_encode64($hash, 16, $itoa64);
return $output;
}
public function phpbb_hash($password)
{
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$random_state = $unique_id();
$random = '';
$count = 6;
if (($fh = @fopen('/dev/urandom', 'rb')))
{
$random = fread($fh, $count);
fclose($fh);
}
if (strlen($random) < $count)
{
$random = '';
for ($i = 0; $i < $count; $i += 16)
{
$random_state = md5($unique_id() . $random_state);
$random .= pack('H*', md5($random_state));
}
$random = substr($random, 0, $count);
}
$hash = $_hash_crypt_private($password, $_hash_gensalt_private($random, $itoa64), $itoa64);
if (strlen($hash) == 34)
{
return $hash;
}
return md5($password);
}
function phpbb_check_hash($password, $hash)
{
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if (strlen($hash) == 34)
{
return ($_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false;
}
return (md5($password) === $hash) ? true : false;
}
|
Массив для добавления записи о сессии в БД форума.
Код: |
$browser = get_browser(null, true);
$ss = array(
'sid' => md5(date('U').rand(0,20)),
'user_id' => $forum['user_id'],
'forum_id' => '0',
'last_visit' => date('U'),
'start_time' => date('U'),
'session_time' => date('U')+86400,
'session_page' => 'index.php',
'remote_ip' => getenv('REMOTE_ADDR'),
'browser' => htmlspecialchars($browser['browser_name_pattern']),
'autologin' => '1'
);
|
|
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Теперь относительно моего сценария. pagestart.php я не использовал, вот файлы которые я подключал:
Код: |
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
|
Это фрагмент из листинга 19.2. Первого файла действительно нет в третьей версии, но он подключался исключительно, чтобы стала доступной переменная $phpEx. Поэтому вместо подключения этого файла можно было бы объявить:
$phpEx = "php";
Затем подключался файл common.php, он есть и в третьей версии. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Файл require('./pagestart.' . $phpEx); использовался в главе 20, где было описано создание модуля админки для phpbb2. Поищи, в Инете должен быть мануал по созданию модулей для phpbb3. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Цитата: |
Это вопрос не по 3-й версии форума, а по Вашему скрипту, опубликованному в книге. Не ответите?
|
Сразу не заметил это сообщение. Если уж на то пошло, то мой сценарий адаптирован под вторую версию форума и он прекрасно работает! Или это не так? Так что все-таки ваш вопрос касается phpbb3, а не моего сценария! |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Наташенька
Новенький
Зарегистрирован: 29.05.2009 Сообщения: 22 Откуда: Россия
|
|
|
|
den, спасибо за подробный ответ. Попробую разобраться.
den писал(а): |
Если уж на то пошло, то мой сценарий адаптирован под вторую версию форума и он прекрасно работает! Или это не так? Так что все-таки ваш вопрос касается phpbb3, а не моего сценария! |
Я не проверяла работу скрипта со 2-й версией, т.к. не вижу смысла ставить ее на НОВЫЙ сайт (я понимаю, что если у кого-то уже стоит давно эта версия, то она его может устраивать, но на новом проекте это не имеет смысла).
А мой вопрос касался именно Вашего сценария. Меня интересовало, какие функции и переменные использует скрипт из phpBB2. Я не настолько хорошо разбираюсь в PHP, чтобы с первого взгляда отличить встроенные функции языка от тех, которые подцепились через подключенные файлы форума. Всего-то.
Так что не сердитесь, пожалуйста. _________________ Ко мне всегда можно на ты. Но это не значит, что я всегда согласна. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Цитата: |
я понимаю, что если у кого-то уже стоит давно эта версия, то она его может устраивать, но на новом проекте это не имеет смысла
|
Может и так, но я ставил, правда после установки немного допиливал напильником и пока еще никто не жаловался. Может потому, что я знаю вторую от и до, а с третьей лень разбираться, а ставить сток не хочется, чтобы потом действительно не начались проблемы. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Наташенька
Новенький
Зарегистрирован: 29.05.2009 Сообщения: 22 Откуда: Россия
|
|
|
|
Вот я сделала выборку только принципиально важных нововведений 3-й версии по сравнению со 2-й (какие-то из этих возможностей во 2-й версии частично поддерживались только самодельными модами, какие-то - вообще не поддерживались, теперь все это встроено в форум):
Код: |
Basic Features:
UTF-8 Support
Search Engine spider Handling
Security:
Temporary Bans (Suspension)
Paid Security Code Audit
Type Aware Parameter Handling
Type Aware Database Layer
Anti-Spam:
Suspensions
Warnings
User Logging
Report Posts
Data Management:
Oracle
Firebird
SQLite
Registration:
Set min/max Username Length
Set min/max Password Length
Limit username Chars
Set Password Complexity Requirements
Force Password Change
Allow/Disallow e-mail Address Re-usage
Posting:
Custom BBCode Buttons
Quote Multiple Posts
Syntax Highlighting
Attachments
Post Drafts
Multiple Poll Option Voting
User based Poll Tracking
Allow/Disallow Vote Change
Beaten-to-Posting Review
Attachments:
Automatic Image Thumbnails
Attachment Types
Multiple Attachments
Attachment Placement
Caching:
Database Query Caching
Template Caching
Arbitrary Data
Manual Cache Refreshing
Profiles / Memberlist:
Custom Profile Fields
Memberlist Searching
Disallow Non-Registered User Memberlist Viewing
Search System:
Customised Topic Search
MySQL fulltext
Active/New Topics
Forums:
Password Protected Forums
Forum Specific Styles
URL Link Redirect Forums
Forum Rules
Subforums
Subscribe to Forums
Bookmark Topics
Topic Sorting
Post Sorting
Topic Participation Tracking
Print Topics
E-mail Topics
User Control Panel:
Manage Saved PM/Post Drafts
Manage Bookmarks
Manage Attachments
Manage Subscribed Topics
Custom Profile Fields
Friends/Foe List
Private Messaging:
Additional PM Folders
Customisable PM Filter Rules
Send to Multiple Recipients
Send Blind Carbon Copies
Send to Groups
Forward Messages
Address Book
Message Drafts
Export Messages
Attachments for Messages
Conversation View
Custom Message Handling Rules
Usergroups:
Multiple Group Leaders
Custom Group Colours
Group Ranks
Group Avatars
Group-based Memberlist Display
Moderation Control Panel:
Global Moderators
Topics/Posts Moderation Queue
Manage Reported Topics/Posts
Topic History
Forum/Topic Logs
Localised Moderator Logs
Post Locking
Change Post Author
Merging Topics
Merging Posts
Merging Multiple Topics
Copying Topics
Global Topics
Manage Bans
Manage User Warnings
Banning by Username
Banning by E-mail Address
Banning by IP Address
User Notes
Administration Control Panel:
Founder Status/Board Creator
Prune Inactive Users
Manage Attachments and Settings
Manage User Attachments
List Groups on Index
Topic Icons
Manage report/denial Reasons
Module Management
Custom BBCodes
Custom Profile Fields
Custom Profile Fields Placement Options
Custom Profile Fields Data Types
Styles:
Customise/Edit Templates
Customise/Edit Themes
Customise/Edit Imagesets
Permissions:
Admin Permission Roles
User Permission Roles
Moderator Permission Roles
Forum Permission Roles
Multi-level Permission Masks
Notifications:
Instant Messaging
Bookmarks
Localisation:
Languages: +11 (total 61)
Right to Left Support
Language Pack Web-Editor
Installation / Upgrade:
Update Wizard
Converter Wizard
File Merge Diff Update Engine
Technical Features:
CMS Software Integration
XHTML Compliant
Plug-ins:
Auth Plug-ins
Search Plug-ins
Cache Plug-ins
Hooks System |
Самые существенные - поддержка UTF8, управление прикрепленными файлами, кэширование, доп. поля в профилях произвольных типов, полнотекстовый поиск в базе, подфорумы, черновики/закладки/списки друзей-недругов в профиле, развитое управление личными сообщениями, пользовательские группы, панель модератора, поддержка "ролей" в правах доступа, встроенные средства обновления и конвертации... В общем, это уже система совсем другого класса, практически не уступающая современным версиям коммерческих скриптов типа IPB или vBulletin.
Зачем же застревать на уровне морально устаревших разработок? Они были хороши в свое время, никто не спорит, но это давно пройденный этап.
Так что ждем от Вас новую книгу, что-нибудь типа "Веб-программирование в API форума phpBB3 Olympus"
Одна покупательница уже есть.
(Если только к тому времени книги не подорожают совсем уж выше крыши, а то на предыдущую ушло больше половины моей стипендии...)
Последний раз редактировалось: Наташенька (Чт Июн 04, 2009 9:34 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Наташенька, будем стараться. А вообще жаль, что отправка книг в РФ подорожала. Сейчас отправлять из Украины в РФ нет смысла. А раньше можно было купить книги у меня за копейки по сравнению с магазинами. Сейчас вот акция, все книги 2009 года, вне зависимости от объема, продаю за 80 грн/штука. В магазинах они от 120 грн. Курс 10 рублей = 2.49 грн. Но отправка в РФ одного килограмма без упаковки кажется 140 грн + упаковка. Сегодня отправлял Линукс на ноутбуке + Серверное применение - вышло 1 кг 200 грамм, то есть в среднем 600-700 грамм книга, за книги я взял 160 грн (отправка по Украине), а если бы отправить в РФ, то вышло бы 160 книги и 160 отправка |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Наташенька
Новенький
Зарегистрирован: 29.05.2009 Сообщения: 22 Откуда: Россия
|
|
|
|
Т.е. почта хочет за свои примитивные услуги получать не меньше, чем авторы, которые пишут книги, да? _________________ Ко мне всегда можно на ты. Но это не значит, что я всегда согласна. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Если честно, то не знаю, почему так они подняли цену. Услуги там совсем не примитивные, но цены теперь кусаются. Выгодно отправлять только что-то большое. До 10 кг. Тогда цена будет до 250 грн за все, что дешевле, чем отправлять 1 кг. Если есть минимум 10 желающих, могу продать 10 книг дешевле чем в магазинах, доставка выйдет, как и раньше 25 грн за книжку (если отправлять "мелким оптом"). Из новинок есть Линукс на ноуте, Серверное применение Линус, Беспроводная сеть. Еще есть по ПХП и SUSE11 - это то, что в наличии и что стоит на полке. Вообще подробно смотреть нужно, что есть, а чего нет. От новичка к профи уже нет - все распродал (в смылсе свои авторские, в магазинах тираж еще есть) |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|