Форум сетевых администраторов
Показаны 12 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- vBulletin & PHP Programming СОВЕТЫ (http://netadmin.ws/forum/showthread.php?threadid=4460)


Помещено Navin 22-02-2003 в 15:13:

vBulletin & PHP Programming СОВЕТЫ

Я уже неделю серьёзно подсел на 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";


Помещено Falcon 22-02-2003 в 19:13:

осталось только учебник по php сюда запостить...


Помещено Nevermind 22-02-2003 в 23:24:

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


Помещено MagosTek 22-02-2003 в 23:30:

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------>:..


Помещено Navin 23-02-2003 в 12:35:

Конечно.. в MANUALS это всё прописано, но нет ВÐ_ЕМЕНИ чтобы читать 1000 страниц.. кому-то, это даже не нужно, всё схватывает на лету... хотя, в таком случае, ошибки обеспечены..

Я пожму руку тому, кто выложит здесь СВОЙ полезный совет и, возможно, не даст сделать мне ошибку при написании скрипта..

__________________
--->> M y R S S . R U <<--- Stop trying to get Lucky.. Get informed!!


Помещено Olsufr 16-03-2003 в 23:25:

Navin, начал потихоньку разбираться в сриптах vBulletin'a.
В PHP я только начинаю.
Не мог бы объяснить, каким способом те скрипты выводят текст в броузер? Я так понимаю: сначала как-то текст записывается в буффер, а потом он освобождается, или как?
Я не нашел ни одной команды print или echo .
Просьба не ругаться за возможно глупый вопрос.


Помещено Nevermind 17-03-2003 в 00:38:

Olsufr,
Я всего лишь предположу, но скорее всего там всё построено на шаблонах. В форуме есть свой движок для шаблонов. Шаблоны - обычные хтмл-файлы, в которых ключевые значения (которые задаются скриптом) выделены особым образом. Например, так: {VALUE} или так - %VALUE% - это не суть важно.

В общем, схема такая: скрипт выполняет свою работу (берет информацию из базы, файлов, обрабатывает ее в соответствии с условиями). Затем происходит парсинг шаблонов - т.е. берется шаблон и соответствующие значения в нём (те самые {VALUE}) заменяются значениями из результата работы скрипта. Затем идёт элементарная выдача статичного хтмл-кода пользователю.

Вот.. примерно так. Вряд ли там разработчики изобрели велосипед


Помещено Navin 17-03-2003 в 09:43:

Olsufr, невермайнд прав.. все эти темплиты хранятся в базе SQL на сервере... при установке vb они загружаются туда из файла vbulletin.style

__________________
--->> M y R S S . R U <<--- Stop trying to get Lucky.. Get informed!!


Помещено polo 17-03-2003 в 17:11:

и выводятся при помощи echo функция dooutput называется если мне не изменят память.

__________________
Всегда есть решение.


Помещено Olsufr 18-03-2003 в 07:11:

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 включает ее?


Помещено Navin 18-03-2003 в 21:10:

quote:
Какие надо задать переметры в строке запроса, чтобы !$showqueries стало бы false и я увидел бы информацию о сделанных запросах при формировании страницы ?
а для чего это нужно, если не секрет ;-))

__________________
--->> M y R S S . R U <<--- Stop trying to get Lucky.. Get informed!!


Помещено Olsufr 19-03-2003 в 07:23:

Navin, для того, чтобы знать что за код у меня будет исполняться на сервере и каковы его возможности. И если в скриптах существуют какие-то недокументированные возможности, то я тем более хочу об этом знать.


Формат времени GMT. Текущее время 18:45.
Показаны 12 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.