Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Программирование » PHP » vBulletin & PHP Programming СОВЕТЫ
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
Navin
MyRSS Team
Средний рейтинг: 3.81 | Оценок: 52
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус: Navin в оф-лайне
vBulletin & PHP Programming СОВЕТЫ [сообщение #35232]

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

Old Post 22-02-2003 15:13
Нажмите сюда для просмотра профайла Navin Отправить Персональное сообщение Navin Посетить домашнию страничку Navin! Найти сообщения от Navin Добавить Navin в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Falcon
Модератор
Средний рейтинг: 3.89 | Оценок: 9
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2001
Место проживания: Москва
Публикаций: 370
Статус: Falcon в оф-лайне
[сообщение #35249]

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 22-02-2003 19:13
Нажмите сюда для просмотра профайла Falcon Отправить Персональное сообщение Falcon Найти сообщения от Falcon Добавить Falcon в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Nevermind
Участник+
Средний рейтинг: 4 | Оценок: 7
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Feb 2002
Место проживания: RU, VLadivostok
Публикаций: 145
Статус: Nevermind в оф-лайне
[сообщение #35263]

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 22-02-2003 23:24
Нажмите сюда для просмотра профайла Nevermind Отправить Персональное сообщение Nevermind Найти сообщения от Nevermind Добавить Nevermind в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
MagosTek
==-<--if-->-==
Средний рейтинг: 3 | Оценок: 2

Зарегистрирован: Jun 2002
Место проживания:
Публикаций: 63
Статус: MagosTek в оф-лайне
[сообщение #35265]

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: определен

Old Post 22-02-2003 23:30
Нажмите сюда для просмотра профайла MagosTek Отправить Персональное сообщение MagosTek Найти сообщения от MagosTek Добавить MagosTek в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Navin
MyRSS Team
Средний рейтинг: 3.81 | Оценок: 52
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус: Navin в оф-лайне
[сообщение #35309]

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

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 23-02-2003 12:35
Нажмите сюда для просмотра профайла Navin Отправить Персональное сообщение Navin Посетить домашнию страничку Navin! Найти сообщения от Navin Добавить Navin в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Olsufr
Guest

Зарегистрирован: Not Yet
Место проживания:
Публикаций: N/A
Статус:

[сообщение #37882]

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 16-03-2003 23:25
Редактировать/Удалить сообщение Ответить Цитируя
Nevermind
Участник+
Средний рейтинг: 4 | Оценок: 7
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Feb 2002
Место проживания: RU, VLadivostok
Публикаций: 145
Статус: Nevermind в оф-лайне
[сообщение #37886]

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

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 17-03-2003 00:38
Нажмите сюда для просмотра профайла Nevermind Отправить Персональное сообщение Nevermind Найти сообщения от Nevermind Добавить Nevermind в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Navin
MyRSS Team
Средний рейтинг: 3.81 | Оценок: 52
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус: Navin в оф-лайне
[сообщение #37927]

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 17-03-2003 09:43
Нажмите сюда для просмотра профайла Navin Отправить Персональное сообщение Navin Посетить домашнию страничку Navin! Найти сообщения от Navin Добавить Navin в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #37958]

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 17-03-2003 17:11
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Olsufr
Участник

Зарегистрирован: Mar 2003
Место проживания:
Публикаций: 9
Статус: Olsufr в оф-лайне
[сообщение #38049]

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: определен

Old Post 18-03-2003 07:11
Нажмите сюда для просмотра профайла Olsufr Отправить Персональное сообщение Olsufr Найти сообщения от Olsufr Добавить Olsufr в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Navin
MyRSS Team
Средний рейтинг: 3.81 | Оценок: 52
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Feb 2003
Место проживания: Питер
Публикаций: 264
Статус: Navin в оф-лайне
[сообщение #38135]

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 18-03-2003 21:10
Нажмите сюда для просмотра профайла Navin Отправить Персональное сообщение Navin Посетить домашнию страничку Navin! Найти сообщения от Navin Добавить Navin в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Olsufr
Участник

Зарегистрирован: Mar 2003
Место проживания:
Публикаций: 9
Статус: Olsufr в оф-лайне
[сообщение #38153]

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-03-2003 07:23
Нажмите сюда для просмотра профайла Olsufr Отправить Персональное сообщение Olsufr Найти сообщения от Olsufr Добавить Olsufr в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 23:44.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.12316394 seconds (94.33% PHP - 5.67% MySQL) with 26 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.