PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (81): В начало « ... 55 56 57 58 [59] 60 61 62 63 ... » В конец

> Найдено сообщений: 1209
evgenijj Отправлено: 03 Июня, 2007 - 23:50:19 • Тема: Работа с Денвером • Форум: Программирование на PHP

Ответов: 5
Просмотров: 339
Mister пишет:
Подскажите ссылку на новый денвер, пожалуйста.

http://www[dot]denwer[dot]ru/dis/latest
evgenijj Отправлено: 03 Июня, 2007 - 22:58:57 • Тема: Кеш • Форум: Колонка администратора

Ответов: 6
Просмотров: 5389
kamikadze пишет:
get_page_content можно посмотреть на эту функцию! НАпиши листинг её плз!

Эта функция - маленький кусочек моей CMS. Он тебе ничего особо не расскажет
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function get_page_content( $id_page, &$title )
  4. {
  5.         // Получаем шаблон страницы
  6.         $page_tpl = array();
  7.         $page_tpl = get_page_template( $id_page );
  8.         // $id_tpl - уникальный идентификатор шаблона
  9.         // $title - содержимое тега <title> </title> страницы
  10.         // $keywords - ключевые слова страницы
  11.         // $description - описание страницы
  12.         list ( $id_page, $id_tpl, $name, $title, $keywords, $description ) = $page_tpl;
  13.  
  14.         // Получаем имя файла шаблона и количество полей в нем
  15.         $tpl_file_name = get_template_name( $id_tpl );
  16.        
  17.         // Узнаем какими модулями наполнены поля шаблона
  18.         $fill = array();
  19.         $fill = get_fill_fields( $id_page );
  20.        
  21.         // $add_title - вспомогательная переменная, которая может содержать дополнение
  22.         // к тегу <title> </title> страницы. Например, для Интернет-магазина содержимое
  23.         // тега будет иметь вид: <title> $title : $add_ttl </title>
  24.         // Интернет-магазин : Извещатель охранный магнитоконтактный ИО 102-11М (СМК-3)
  25.         $add_title = "";
  26.        
  27.         // Получаем html полей шаблона
  28.         for ( $i = 0; $i<=5; $i++ )
  29.         {
  30.                 $ttl = $fill["title"][$i];
  31.                 $fld = $fill["field"][$i];
  32.                 if ( $fld != "none" )
  33.                 {
  34.                         $layout = array();
  35.                         $layout = explode( "|", $fill["layout"][$i] );
  36.                         $add_ttl = "";
  37.                         $html_field[] = get_html_field( $ttl, $fld, $layout, $_GET["id_page"], $add_ttl );
  38.                         if ( !empty( $add_ttl ) ) $add_title = $add_ttl;
  39.                 }
  40.                 else
  41.                 {
  42.                         $html_field[] = "";
  43.                 }
  44.         }
  45.        
  46.         if ( !empty( $add_title ) ) $title = $title." : ".$add_title;
  47.        
  48.         // Получаем html главного меню
  49.         $html_main_menu = get_html_main_menu();
  50.        
  51.         // Получаем html подменю - вложенные (дочерние) страницы
  52.         $html_submenu = get_html_submenu( $id_page );
  53.        
  54.         // Получаем html формы для поиска
  55.         $html_search = get_search_form();
  56.        
  57.         // Получаем html формы выбора производителя
  58.         $html_mnf = get_choice_mnf_form();
  59.        
  60.         // Получаем html ссылки на страницу со списком всех лидеров продаж
  61.         $html_all_leaders = get_link_all_leaders();
  62.        
  63.         // Получаем форму для авторизации пользователя
  64.         $html_login = get_siteuser_login_form( $id_page );
  65.        
  66.         // Получаем html покупательской корзины - краткая информация
  67.         $html_basket = get_html_basket();
  68.        
  69.         // Получаем случайного лидера продаж
  70.         $html_random_ldr = get_random_leader();
  71.        
  72.         // Получаем путь до страницы
  73.         $html_path = get_html_path( $id_page, $title );
  74.        
  75.         // Читаем файл шаблона в строковую переменную
  76.         $html_tpl = get_html_template( $tpl_file_name, TEMPLATES_PATH );
  77.        
  78.         // Заменяем в шаблоне поля {fieldn} на полученный html заполняющих их модулей
  79.         for ( $i = 0; $i<=5; $i++ )
  80.         {
  81.                 $field = "{field".$i."}";
  82.                 $html_tpl = str_replace($field, $html_field[$i], $html_tpl);
  83.         }
  84.        
  85.         $html_tpl = str_replace("{search}", $html_search, $html_tpl);
  86.         $html_tpl = str_replace("{loginform}", $html_login, $html_tpl);
  87.         $html_tpl = str_replace("{basket}", $html_basket, $html_tpl);
  88.         $html_tpl = str_replace("{allleaders}", $html_all_leaders, $html_tpl);
  89.         $html_tpl = str_replace("{randomleader}", $html_random_ldr, $html_tpl);
  90.         $html_tpl = str_replace("{manufacturers}", $html_mnf, $html_tpl);
  91.         $html_tpl = str_replace("{main_menu}", $html_main_menu, $html_tpl);
  92.         $html_tpl = str_replace("{submenu}", $html_submenu, $html_tpl);
  93.         $html_tpl = str_replace("{path}", $html_path, $html_tpl);
  94.         $html_tpl = str_replace("{title}", $title, $html_tpl);
  95.         $html_tpl = str_replace("{keywords}", $keywords, $html_tpl);
  96.         $html_tpl = str_replace("{description}", $description, $html_tpl);
  97.        
  98.         return $html_tpl;
  99. }
  100. ?>
  101.  
evgenijj Отправлено: 03 Июня, 2007 - 22:34:39 • Тема: Кеш • Форум: Колонка администратора

Ответов: 6
Просмотров: 5389
sanj пишет:
Я изучаю сейчас сайтостроение и читаю книги по этой теме и много информации идет о кеше, а что это такое нигде не пишут. Скажите пожалуйста что такое кеш и что он делает.

Допустим, ползователь набирает в адресной строке браузера адрес http://someserver.com/support.html. Сервер находит у себя файл support.html и отдает его клиенту. Пользователь запросит еще несколько страниц и потом вернется на страницу support.html. Браузер не будет снова запрашивать эту страницу у сервера, а возьмет ее из кэша. Т.е. этот файл (support.html) браузер сохранят на винчестере пользователя. Аналогичную задачу решает Proxy-сервер.

Это для статичных страниц. По поводу динамических - нет смысла их кэшировать, это даже вредно. Ведь мы не знаем, КАК скрипт генерирует эту страницу. И даже если запрашивается вроде бы один и тот же файл http://someserver[dot]com/support.php нельзя сказать, что скрипт сформирует одинаковый HTML (он может зависеть, например, от времени суток).

Теперь по поводу кэширования средствами PHP. Зная, что данная страница, которая генерится скриптом, изменяется раз в сутки (например, ежедневное добавление новостей в раздел "Новости компании") мы можем, один раз сформировав HTML, сохранить его в файл, и отдавать пользователю, читая страницу из файла, а не формируя каждый раз динамически (т.е. выполняя запросы к БД и т.п.) Тем самым снижая нагрузку на сервер.

PHP:
скопировать код в буфер обмена
  1.  
  2. // директория для хранения кэшированных страниц
  3. $cachedir = './cache/';
  4. //время жизни кэша (60 минут)
  5. $cachetime = 3600;
  6.    
  7. $thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
  8. $cachelink = $cachedir.md5($thispage).".html";
  9. // Если файл страницы существует
  10. if ( is_file( $cachelink ) and ( (time() - $cachetime) < filemtime($cachelink) ) )
  11. {
  12.     // получаем содержимое страницы из кэша
  13.     $content = file_get_contents($cachelink);
  14. }
  15. else
  16. {
  17.     // формируем страницу
  18.     $content = get_page_content( $_GET["id_page"] );
  19.     // записываем страницу в кэш
  20.     file_put_contents($cachelink, $content);
  21. }
  22.  
  23. header('Content-Length: '.strlen($content));
  24. header("Content-Type: text/html; charset=windows-1251");
  25. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  26. echo $content;
  27.  


evgenijj Отправлено: 03 Июня, 2007 - 15:44:55 • Тема: Классы • Форум: Программирование на PHP

Ответов: 5
Просмотров: 411
Стас пишет:
Вы уж простите за такой вопрос... Незнаю я Огорчение
Что такое, для чего нужны и кам применяются классы?

http://www[dot]books[dot]ru/shop/books/441006
evgenijj Отправлено: 03 Июня, 2007 - 15:40:38 • Тема: Как проверить включена ли поддержка MySQL5.0 в пхп 5 • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 161
Dadhunter пишет:
А как включить поддержку MySQL?

В php.ini раскомментировать строку
extension=php_mysql.dll
evgenijj Отправлено: 03 Июня, 2007 - 11:20:42 • Тема: Gismeteo • Форум: Регулярные выражения

Ответов: 5
Просмотров: 870
Думаю, что использовать рег.выражения для получения атрибутов отдельных элементов XML-файла -- не лучшая идея. Есть функции для работы с XML, позволяющие получить доступ к отдельнам элементам и их атрибутам.
http://www[dot]intuit[dot]ru/department/[dot][dot][dot]/plphp/14/1[dot]html
evgenijj Отправлено: 03 Июня, 2007 - 10:49:22 • Тема: Функции работы с сообщениями • Форум: Пользовательские функции

Ответов: 10
Просмотров: 753
kamikadze пишет:
Ха, дак у функции в самом начале поста не ссылка

Опять невнимательно читаешь:
Цитата:

Передача "по ссылке" - все изменения внутри функции над переменной будут отражаться на переменной вне функции:

$a = 5;
test3( &$a );
echo $a;
function test3( $x )
{
$x = $x + 2;
}
Этот скрипт выведет значение переменной $a, т.е. 7

Передать переменную по ссылке можно еще так - это даже предпочтительнее

$a = 5;
test3( $a );
echo $a;
function test3( &$x )
{
$x = $x + 2;
}
Этот скрипт выведет значение переменной $a, т.е. 7

Хотя второй вариант предпочтительнее, первый тоже допустим.
evgenijj Отправлено: 02 Июня, 2007 - 22:15:25 • Тема: Функции работы с сообщениями • Форум: Пользовательские функции

Ответов: 10
Просмотров: 753
kamikadze пишет:
Вопрос! Сейчас читал на сайте еще раз о функциях! Не понял одного ! Вот я не пойму, в функции обработкии сообщения переменная ведь не обьявлена глобальной и не нет возврата, тогда как оно может изменять сообщение, и расскажите пожалуйста поподробнее!

Невнимательно читаешь:
http://forum.php.su/topic.php?fo...=43&topic=13
Цитата:

Передача "по ссылке" - все изменения внутри функции над переменной будут отражаться на переменной вне функции:

$a = 5;
test3( &$a );
echo $a;
function test3( $x )
{
$x = $x + 2;
}
Этот скрипт выведет значение переменной $a, т.е. 7


evgenijj Отправлено: 01 Июня, 2007 - 09:17:50 • Тема: доступ к содержимому iframe • Форум: JavaScript & VBScript

Ответов: 2
Просмотров: 9913
Цитата:

Iframe как таковой имеет две ипостаси -- HTML-объект (подобно <div> ) и окно (типа window). К первой ипостаси мы обращаемся через document.getElementById(...), а ко второй -- через window.frames[...]. Поэтому бессмысленно пытаться обращаться к стилям у window.frames['myiframe'] или менять location у document.getElementById('myiframe'). Хотя у "ифрейма" как HTML-объекта есть свойства contentDocument (Mozilla практически вся, Opera 7+) и contentWindow (Mozilla 0.9.4+, MSIE 5.5+. Все Оперы включая 7.50 - не поддерживают), обратившись к которому, мы получаем содержащийся в ифрейме документ или окно. У contentDocument есть "обратное" свойство - defaultView (Mozilla, MSIE 5.5+, Opera 7+). Т. е.

iframe.contentDocument.defaultVi ew == iframe.contentWindow

Примечание: очевидно, что

iframe.contentWindow.document == iframe.contentDocument


Другими словами, чтобы твой код работал во всех браузерах, придется долго исполнять шаманские пляски с бубном. Для MS IE должно работать так:

document.getElementById("myIFrame").contentWindow.document.getElementById("myform").elements["text1"].value
evgenijj Отправлено: 31 Мая, 2007 - 18:07:06 • Тема: Права доступа на файлы (CHMOD) • Форум: Работа с файловой системой и файлами

Ответов: 5
Просмотров: 6472
olga пишет:
Это какой-то кошмар!!Я ничего не поняла!!ОгорчениеЭти права доступа устанавливаются в php-файле?

Права доступа - это атрибуты файла или каталога, которые указывают серверу, кто и что может делать с соответствующим файлом или каталогом. Обычно, права доступа регламентируют такие действия как чтение, запись в файл (или каталог), исполнение.

В системах UNIX все пользователи разделяются на три группы: "user" (непосредственно владелец файла), "group" (член той же группы, к которой принадлежит владелец файла) и "other" (все остальные). Когда вы соединяетесь с сервером, он определяет к какой группе вы относитесь. Например, подключаясь к серверу по FTP, вы входите под своим именем пользователя, соответственно сервер относит вас к группе "user". Другие пользователи, подключаясь по FTP, будет отнесены к группе "group", а когда человек попадает к вам на сайт через свой браузер, то попадает в группу "other".

После определения группы, пользователь получает права на действия с объектами. Т.е он может прочитать, записать или выполнить файл. Чтобы просмотреть каталог, он должен быть исполняемым; чтобы просмотреть его содержимое, он должен иметь атрибут чтения, а чтобы создать новый файл или каталог в существующем каталоге, необходимо иметь право на запись. Таким образом, чтобы выполнялось приложение или CGI скрипт, необходимо установить атрибут чтения и выполнения.

Чтобы распределить права для соответствующих групп, используются цифровые обозначения:

4 = read (право на чтение)
2 = write (право на запись)
1 = execute (право на выполнение)

Простым сложение цифр можно добиться установления прав на совокупность действий. Например, 3(2+1) разрешает запись и выполнение файла (каталога); 5(4+1) разрешает чтение и выполнение; 6(4+2) разрешает чтение и запись; 7(4+2+1) устанавливает право чтения, записи и выполнения. Т.е всего семь вариантов:

7 = read, write & execute
6 = read & write
5 = read & execute
4 = read
3 = write & execute
2 = write
1 = execute

Первая цифра в обозначении устанавливает права для группы "user"(т.е фактически для вас), вторая для группы "group" и третья для "other":

755
для user - read, write & execute
для group - read & execute
для other - read & execute

Для установления прав доступа используется команда CHMOD. Во всех современных FTP клиентах присутствует возможность назначения прав доступа путем простановки "галочек" в чекбоксах, либо просто введением цифрового кода в соответствующее поле.

Команда "chmod" имеет два режима: Абсолютный(цифровой) и Символьный режим.

При Абсолютном (цифровом) режиме используется описанный выше 3-х цифровой код прав доступа. Символьный режим использует буквенный формат для установки прав доступа. Здесь используются буквы "r", "w" и "x" для read, write и execute соответственно. А также "u", "g", "o" и "a" для user, group, other, и all(все) соответственно.

Например:
755 : chmod u=rwx,go=rx filename
644 : chmod u=rw,go=r filename
600 : chmod u=rw,go= filename
444 : chmod a=r filename

В качестве FTP-клиента можно использовать Total Commander
http://wincmd[dot]ru/article/ftp[dot]html
evgenijj Отправлено: 31 Мая, 2007 - 13:58:31 • Тема: Права доступа на файлы (CHMOD) • Форум: Работа с файловой системой и файлами

Ответов: 5
Просмотров: 6472
http://forum.php.su/topic.php?fo...=1&topic=175
evgenijj Отправлено: 31 Мая, 2007 - 12:04:28 • Тема: Вопрос по PHP • Форум: Программирование на PHP

Ответов: 10
Просмотров: 725
Джур пишет:
Пивом? Благо не кровью... мда... А я предлогаю еще один способ 100% антикеширования Улыбка нужно к адресу странич добавлять "&".time(); тогда каждая страничка будет расматриватся сервером как "нечто новое"

Запрет кэширования средствами PHP:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Дата в прошлом
  4. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  5. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  6. header("Pragma: no-cache"); // HTTP/1.0
  7. ?>
  8.  

Для полного запрета кэширования приходиться всегда посылать 4 указанных заголовка, и ни один пропустить нельзя - в противном случае не сработает либо браузер, либо Proxy-сервер.
evgenijj Отправлено: 30 Мая, 2007 - 19:08:04 • Тема: Вопрос по PHP • Форум: Программирование на PHP

Ответов: 10
Просмотров: 725
-SCHATTEN- пишет:
Это что метод научного тыка , при исправлении проблем ?

Мне его "научный тык" в два часа рабочего времени обошелся. Сначала БД и таблицы создал. Дальше хуже - половина экрана в сообщениях об ошибках. Основные исправил, что-то закомментировал. И только потом разбираться начал...
evgenijj Отправлено: 30 Мая, 2007 - 18:57:16 • Тема: Пишу на пхп бесплатно • Форум: Объявления

Ответов: 3
Просмотров: 3182
generator пишет:
Пишу за символическую плату небольшие скрипты на пхп.

Это называется - в Тулу со своим самоваром....
evgenijj Отправлено: 30 Мая, 2007 - 16:17:44 • Тема: Вопрос по PHP • Форум: Программирование на PHP

Ответов: 10
Просмотров: 725
Ну ты орел. Сначала включил кэширование
session_cache_limiter("public");
а потом удивляешься "А что же страница не обновляется?". Спрашивается, зачем использовать функции, назначения которых не понимаешь?

P.S. Проверил - Firefox работает только если строка
session_cache_limiter("public");
закомментирована. А MS IE работает в любом случае - есть ли кэширование или нет. Почему - не знаю.

Страниц (81): В начало « ... 55 56 57 58 [59] 60 61 62 63 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB