 |
 |
Форум сетевых администраторов » Программирование » PHP » vBulletin & PHP Programming СОВЕТЫ
| Автор |
| Тема |
 |
|
 |
|
|
|
MyRSS Team
|
| vBulletin & PHP Programming СОВЕТЫ |
[сооб. #35232]
22-02-2003 15:13 |
|
MyRSS Team


Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус:  |
Я уже неделю серьёзно подсел на vBulletin...
Возможно кому-нибудь пригодятся эти советы:
1. НИКОГДА не используйте $variable[something] для доступа к `array element`в ассоциативном массиве. Вместо этого используйте $variable['something']. Ð_азница в том, что первое выражение пытается получить несуществующее значение "something".
2. НИКОГДА не доверяйте `register_globals`, которые были отключены в PHP начиная с версии 4.2. Взамен используйте суперпеременные $_GET и $_POST. ..например вместо $page, используйте $_GET['page'].
ЗАКЛЮЧЕНИЕ: Забудте о `deprecated variables` (таких как $HTTP_POST_VARS), которые должны быть заменены на $_POST.
ПÐ_АВИЛО: Все глобальные переменные написаны ПÐ_ОПИСНЫМИ буквами и начинаются с символа _*****
Navin добавил 22-02-2003 в 15:29:42:
3. Чтобы постро просмотреть переменную, можно использовать <?=$variable?>
Внимание! Убедитесь, что ваш код будет работать даже если `short_open_tag` не включен (`Off`) в php.ini вашего сервера. Всегда лучше использовать <?php echo $variable; ?>
4. Когда посылаете запрос в MySQL только на одну строку (row), легче всего сделать так, чтобы переменные столбцов использовали list() и mysql_fetch_row().
PHP:
<?
$result = mysql_query("SELECT name, email FROM table LIMIT 1");
list($name, $email) = mysql_fetch_row($result);
?>
4. Пример использования популярной (не только в PHP) функции if-else. Вот как это работает:
PHP:
if($a==1){
echo "1";
}
else{
echo "Not 1";
}
// А теперь всё что выше в одном выражении.
echo ($a==1)?"1":"Not 1";
Сообщение было отредактировано Navin 22-02-2003 в 15:35
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
22-02-2003 15:13 |
|
|
Модератор
|
| осталось только учебник по php сюда запостить...... |
[сооб. #35249]
22-02-2003 19:13 |
|
|
Участник+
|
Интересные откровения Первые два и заключение,... |
[сооб. #35263]
22-02-2003 23:24 |
|
|
==-<--if-->-==
|
| xm ... klasnie soveti ..znaesh Falcon ne vse po knigam ychatsia ....... |
[сооб. #35265]
22-02-2003 23:30 |
|
==-<--if-->-==


Зарегистрирован: Jun 2002
Место проживания:
Публикаций: 63
Статус:  |
xm ... klasnie soveti ..znaesh Falcon ne vse po knigam ychatsia .... imeytsia lydi katori nenavidiat knigi a vot soveti im pomogayt ... thanks Navin za sovet if statmenta ... prigoditsia ..
__________________
..:<------nothing is real------>:..
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
22-02-2003 23:30 |
|
|
MyRSS Team
|
| Конечно.. в MANUALS это всё прописано, но нет ВÐ_ЕМЕНИ... |
[сооб. #35309]
23-02-2003 12:35 |
|
MyRSS Team


Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус:  |
Конечно.. в MANUALS это всё прописано, но нет ВÐ_ЕМЕНИ чтобы читать 1000 страниц.. кому-то, это даже не нужно, всё схватывает на лету... хотя, в таком случае, ошибки обеспечены..
Я пожму руку тому, кто выложит здесь СВОЙ полезный совет и, возможно, не даст сделать мне ошибку при написании скрипта..
__________________
--->> M y R S S . R U <<--- Stop trying to get Lucky.. Get informed!!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
23-02-2003 12:35 |
|
|
Guest
|
| Navin, начал потихоньку разбираться в сриптах... |
[сооб. #37882]
16-03-2003 23:25 |
|
Guest
Зарегистрирован: Not Yet
Место проживания:
Публикаций: N/A
Статус: |
Navin, начал потихоньку разбираться в сриптах vBulletin'a.
В PHP я только начинаю.
Не мог бы объяснить, каким способом те скрипты выводят текст в броузер? Я так понимаю: сначала как-то текст записывается в буффер, а потом он освобождается, или как?
Я не нашел ни одной команды print или echo .
Просьба не ругаться за возможно глупый вопрос.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
16-03-2003 23:25 |
|
|
Участник+
|
Olsufr,
Я всего лишь предположу, но скорее... |
[сооб. #37886]
17-03-2003 00:38 |
|
Участник+

Зарегистрирован: Feb 2002
Место проживания: RU, VLadivostok
Публикаций: 145
Статус:  |
Olsufr,
Я всего лишь предположу, но скорее всего там всё построено на шаблонах. В форуме есть свой движок для шаблонов. Шаблоны - обычные хтмл-файлы, в которых ключевые значения (которые задаются скриптом) выделены особым образом. Например, так: {VALUE} или так - %VALUE% - это не суть важно.
В общем, схема такая: скрипт выполняет свою работу (берет информацию из базы, файлов, обрабатывает ее в соответствии с условиями). Затем происходит парсинг шаблонов - т.е. берется шаблон и соответствующие значения в нём (те самые {VALUE}) заменяются значениями из результата работы скрипта. Затем идёт элементарная выдача статичного хтмл-кода пользователю.
Вот.. примерно так. Вряд ли там разработчики изобрели велосипед 
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
17-03-2003 00:38 |
|
|
MyRSS Team
|
| Olsufr, невермайнд прав.. все эти темплиты... |
[сооб. #37927]
17-03-2003 09:43 |
|
MyRSS Team


Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус:  |
Olsufr, невермайнд прав.. все эти темплиты хранятся в базе SQL на сервере... при установке vb они загружаются туда из файла vbulletin.style
__________________
--->> M y R S S . R U <<--- Stop trying to get Lucky.. Get informed!!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
17-03-2003 09:43 |
|
|
Администратор
|
| и выводятся при помощи echo функция dooutput называется... |
[сооб. #37958]
17-03-2003 17:11 |
|
|
Участник
|
Nevermind,
Navin,
polo,
спасибо за ответы.
Кажется... |
[сооб. #38049]
18-03-2003 07:11 |
|
Участник
Зарегистрирован: Mar 2003
Место проживания:
Публикаций: 9
Статус:  |
Nevermind,
Navin,
polo,
спасибо за ответы.
Кажется понял, как собирается текст html-страницы и происходит вывод. 
Если я где-то ошибся, поправьте, плиз.
Template'ы собираются командами подобными этой:
eval("\$newposts = \"".gettemplate('forumhome_newposts')."\";");
Т.е. вызывается функция gettemplate() и результат ее работы (template) присваивается определенной переменной.
А в конце каждого php-скрипта пишется такая команда:
eval("dooutput(\"".gettemplate('forumhome')."\");");
В этой команде вызывается функция dooutput(), в которую и передается сделанная из разных template'ов html-страница форума.
В этой функции:
если !$showqueries == true ,
то html-страница с добавленными заголовками выводится с помощью команды echo
Далее посредством flush() освобождается буфер вывода.
если !$showqueries == false ,
то html-страница с добавленными заголовками присваивается переменной $output ,
на вывод дается только строка "\n<b>Page generated in $totaltime seconds with $query_count queries,\nspending $querytime doing MySQL queries and ".($totaltime-$querytime)." doing PHP things.</b></pre>"
Вызов flush()
Для какой цели предназначен второй вариант, когда !$showqueries == false и зачем html-страница присваивается переменной $output , если дальше она все-равно не выводится и больше нигде не используется ?
Какие надо задать переметры в строке запроса, чтобы !$showqueries стало бы false и я увидел бы информацию о сделанных запросах при формировании страницы ?
Насколько я понимаю, в PHP по умолчанию установлена буферизация вывода ? И значит, после использования команды echo (или print) надо принудительно освобождать буфер через flush() ?
Если по умолчанию нет буферизации вывода, то какая команда в скриптах vBulletin включает ее?
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
18-03-2003 07:11 |
|
|


MyRSS Team
|
| [quote]Какие надо задать переметры в строке запроса,... |
[сооб. #38135]
18-03-2003 21:10 |
|
MyRSS Team


Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус:  |
quote: Какие надо задать переметры в строке запроса, чтобы !$showqueries стало бы false и я увидел бы информацию о сделанных запросах при формировании страницы ?
а для чего это нужно, если не секрет ;-))
__________________
--->> M y R S S . R U <<--- Stop trying to get Lucky.. Get informed!!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
18-03-2003 21:10 |
|
|
Участник
|
| Navin, для того, чтобы знать что за код у меня... |
[сооб. #38153]
19-03-2003 07:23 |
|
Участник
Зарегистрирован: Mar 2003
Место проживания:
Публикаций: 9
Статус:  |
Navin, для того, чтобы знать что за код у меня будет исполняться на сервере и каковы его возможности. И если в скриптах существуют какие-то недокументированные возможности, то я тем более хочу об этом знать. 
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
19-03-2003 07:23 |
|
|
|
Формат времени GMT. Текущее время 18:46.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.12152791 seconds (95.02% PHP - 4.98% MySQL) with 26 queries.
|
 |