Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Рассылка сайта РНР для всех!

Выпуск номер 22

GeoHOST.RU: Профессиональный хостинг, доступный каждому! Вы будете приятно удивлены ценами на хостинг и регистрацию доменов. Круглосуточная служба поддержки, неограниченный трафик, мощные сервера и каналы связи, гибкая система скидок. Каждому клиенту - 50000 баннерных показов, предустановленные скрипты, удобная панель управления сайтом и многое другое.
GeoHOST.RU: Неограниченные возможности именно Вашего сайта!

Здравствуйте

Вы получили этоот выпуск рассылки, так как являетесь подписчиком рассылок сайта http://subscribe.ru Рассылка выходит еженедельно, и предлагает Вам авторские материалы на тему программирования на скриптовом языке гипертекстового препроцессора РНР. Кроме того - есть система вопросов и ответов, обмен ссылками и баннерами, раздел Ваши письма и многое другое.

заказать книги по РНР (только Беларусь)

Строковые функции
(выдержки из мануала)

Chop -- удаляет повторяющиеся пробелы
string chop(string str); $trimmed = Chop($line);

trim -- Обрезает пробелы с начала и с конца строки
string trim(string str);

strlen -- Возвращает длину строки
int strlen(string str);

strpos -- Находит позицию первого появления строки.
int strpos(string haystack, string needle, int [offset]);

Возвращает номер позиции первого появления строки needle в строке haystack. В отличии от strrpos(), эта функция может рассматривать целую строку в качестве параметра needle и целая строка будет использоваться. Если параметр needle не найден, то возвращается false. Если параметр needle не является строкой, то он переводится в целое число и рассматривается как числовое значение символа. Дополнительный параметр offset позволяет вам пределять, с какого символа в строке haystack начинать поиск. Позиция возвращается все равно относительно начала строки haystack.

str_replace -- Заменяет все вхождения строки на указанную строку
string str_replace
(string needle, string str, string haystack);
$bodytag = str_replace("%body%", "black", "<body text=%body%>");

Эта функция заменяет все вхождения строки needle в строке haystack на указанную строку str. Если вам не требуются причудливые правила замены, то вам следует всегда использовать эту функцию вместо ereg_replace().

strtr -- Переводит определенные символы
string strtr(string str, string from, string to); $addr = strtr($addr, "дец", "aao");

Эта функция обрабатывает строку str, заменяя все появления каждого символа из строки from на соответствующие символы в строке to, и возвращает результат. Если строки from и to имеют различную длину, то дополнительные символы более длинной из строк игнорируются.

AddSlashes -- выделяет строку обратной чертой
string addslashes
(string str);

Возвращает строку с обратной чертой (/) перед символами, которые должны быть выделены в запросах к базам данных и т.п. Эти символы: ('), двойные кавычки ("), (\) и NUL (нулевой байт).

Chr -- возвращает специалный символ
string chr
(int ascii);

возвращает односимвольную строку, содержащую символ, определенный кодом ascii.

$str .= chr(27); /* добавляет символ ESC в конец $str */
/* Часто это более полезно */
$str = sprintf("The string ends in escape: %c", 27);

Эта функция дополняет функцию ord(). См. также sprintf() с форматирующей строкой %c.

chunk_split -- разбивает строку на мелкие части
string chunk_split
(string string, int [chunklen] , string [end] );

Может быть использована для разбития строки на более меньшие части, например, при конвертировании результата функции base64_encode в формат RFC 2045. Функция вставляет каждый chunklen-ый (по умолчанию до 76) символ строку end (по умолчанию "\r\n"). Функция возвращает новую строку, оставляя исходную не тронутой.

# format $data using RFC 2045 semantics
$new_string = chunk_split(base64_encode($data));

Эта функция значительно быстрее, чем ereg_replace().

convert_cyr_string -- переводит из одной русской кодовой таблицы в другую
string convert_cyr_string(string str, string from, string to);

Эта функция переводит указанную строку из одной русской кодовой таблицы в другую. Аргументы from и to являются одним символом, который определяет исходную и целевую кодовую таблицу. Поддерживаемые типы:

  • k - koi8-r
  • w - windows-1251
  • i - iso8859-5
  • a - x-cp866
  • d - x-cp866
  • m - x-mac-cyrillic

crypt -- шифрует строку методом DES
string crypt(string str, string [salt]);

crypt() Зашифрует строку, используя стандартный метод шифрации UNIX DES. Аргументы являются строкой, которую нужно зашифровать, и дополнительная 2-символная строка salt, на которой будет основываться шифрование. См. документацию UNIX для дополнительной информации. Если аргумент salt отсутствует, то он буде генерирован случайным образом. Некоторые операционные системы поддерживают больше одного типа шифрования. В действительности, иногда метод шифрования DES заменятеся основанными на MD5 алгоритмами. Тип шифрования устанавливается аргументом salt. Во время установки PHP определяет возможности функций шифрации и будет поддерживать аргумент salt для других методов шифрации. Если параметр salt не установлен, то PHP автоматически сгенерирует стандартный 2-х символный ключ DES, если же в системе по умолчанию установлен тип шифрации MD5, то будет сгенерирован MD5-совместимый ключ. Стандартная шифрация DES crypt() содержит ключ в двух первых символах потока вывода. Нет других функций дешифрации, кроме crypt() использующей однопроходный алгоритм.

echo -- выводит одно или более строк
echo(string arg1, string [argn]...);

Выводит все параметры. echo() в действительности не является функцией (это языковая конструкция), поэтому вам не обязательно использовать круглые скобки.

explode -- разбивает строку на строки
array explode(string separator, string string);

Возвращает массив строк, содержащий в элементы, разделенные срокой separator.

$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);

flush -- освобождает буферы вывода
void flush(void);

Освобождает буферы вывода PHP и все остальные, использумые PHP (CGI, web-сарвер и т.д.). Это эффективная возможность выдать все накопленное в буферах в броузер пользователя.

get_meta_tags -- Извлекает все содержимое атрибутов тег meta из файла и возвращает в массиве
array get_meta_tags(string filename, int [use_include_path]);

Открывает файл filename и обрабатывает его строка за строкой и извлекает теги <meta>.

<meta name="author" content="name">
<meta name="tags" content="php3 documentation">
</head> <!-- parsing stops here -->

(обратите внимание на окончание строк - PHP3 использует интеллектуальную функцию для обработки входного потока, поэтому файлы MAC не будут работать на Unox). Значение свойства name становится ключем, значение свойства content становится значением возвращаемого массива, поэтому вы можете легко использовать стандартные функции для его обработки или доступа к отдельным элементам. Специальные символы в значении свойства заменяются символом '_', остальные переводятся в нижний регистр. Установка параметра use_include_path в 1 приведет к тому, что PHP3 будет пытаться открыть файл по стандартному include пути.

htmlspecialchars -- Переводит специальные символы в коды HTML
string htmlspecialchars(string string);

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

  • '&' (амперсанд) становится '&amp;'
  • '"' (двойные кавычки) становится '&quot;'
  • '<' (знак меньше) становится '&lt;'
  • '>' (знак больше) становится '&gt;'

Следует отметить, что эта функция не заменяет ничего, кроме указанного выше. Для полной обработки см. функцию htmlentities().

htmlentities -- Переводит все возможные символы в коды HTML.
string htmlentities(string string);

Эта функция идентична htmlspecialchars() , кроме того, что все символы, которые имеют соответсвующий код HTML заменяются на этот HTML код. В настоящее время применятеся кодовая таблица ISO-8859-1.

implode -- Объединяет массив элементов в строку
string implode(array pieces, string glue);
$colon_separated = implode($array, ":");

Возвращает строку, содержащую совокупность всех элементов массива в том же порядке, со строкой glue между каждым элементом.

join -- Присоединяет элементы массива к строке
string join(array pieces, string glue);

join() является псевдонимом функции implode(), и полностью ей идентична.

ltrim -- Удаляет пробелы из начала строки.
string ltrim(string str);

md5 -- Вычисляет значение md5 для строки
string md5(string str);

Вычисляет значение MD5 для строки str используя алгоритм RSA Data Security, Inc. MD5 Message-Digest

nl2br -- Переводит символы новой строки в HTML-тег разрыва строки
string nl2br(string string);

Возвращает string с '<BR>' вставляемыми перед каждой новой строкой.

Ord -- Возвращает ASCII-значение символа
int ord(string string);

Возвращает ASCII-значение первого символа строки string. Эта функция дополняет функцию chr().

if (ord($str) == 10) { echo("The first character of \$str is a line feed.\n"); }

parse_str -- Разбирает строку на переменные
void parse_str(string str);

Разбирает строку str , как если бы она была URL-строкой запроса, и устанавливает переменные текущей среды.

$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first; /* prints "value" */
echo $second[0]; /* prints "this works" */
echo $second[1]; /* prints "another" */

(Информация не авторская. Хороший человек перевел, а я в свое время обработал. Пусть не обижается автор перевода - ну не сохранилось его имя в архиве! Буду рад, если он откликнется.)


Если Вас интересует покупка книг по РНР, предлагаю Вам как вариант белорусский электронный магазин OZ.BY . Вы сможете перевести деньги как почтовым переводом, так и через расчетный счет из сберкассы. Доставка по Минску, Гродно, Борисову и Бресту.


Сайты в тему

Предлагаю Вам коллекцию сайтов, где Вы сможете отыскать различную информацию по поводу РНР. Если у Вас есть предложения по поводу расширения этого списка - я с удовольствием добавлю сюда еще один полезный ресурс. Присылайте свои ссылки и описания.

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.
  • http://www.php-encoder.f2s.com - защита РНР скриптов UPDATED.
  • http://phpclub.net - Архив бесплатных PHP-приложений (вкл. E-commerce), форумы, чаты, рассылки, книги, обучение, хостинг.
  • http://www.devshed.com/Server_Side/PHP/ интересные статьи по PHP и не только.
  • http://ancient.dax.ru На сайте много готовых решений на PHP: форумы, чаты, гостевые книги и многое другое. Кроме того сам сайт реализован на php.
  • http://detail.phpclub.net/ - как обычно, о РНР.
  • http://firststeps.narod.ru/html/php/php.html
  • http://detail.phpclub.net/
  • http://phpclub.unet.ru
  • http://open.appideas.com/   сборник скриптов
  • http://programmingpub.com/scripts.html   скрипты на perl,php,python,tcl
  • http://px.sklar.com   php сборник скриптов
  • http://phplib.netuse.de   Здесь можно найти самую матёрую библиотеку на php(не отдельные скрипты, а цельное пособие по разработке), только не спешите подписываться на рассылки (авторы думают что все в мире должны знать немецкий
  • http://php.resourceindex.com/   коллекция скриптов
  • http://phpwizard.net   Tobias Ratschiller ничего не говорит?
  • http://www.umnik.f2s.com/ содержит информацию для вебмастера (по всем актуальным языкам веб-программирования), установка домашнего сервера Apache (разных версий)+MySQL+PHP+Perl. Также можно подписаться на рассылки
    "Вопросы и ответы по ОС" и "Будь достойным вебмастера". Имеются множество советов по компьютеру...
  • www.phpbuilder.com Здесь есть все! Форум, статьи, мануал, скрипты, да и вообще очень много профессионалов, тусующихся на сайте.

Где можно посмотреть

А и правда. РНР, да РНР! А где посмотреть как все это работает и оценить, стоит или нет заниматься этим... Правильное решение будет таким. Посетите сайты, указанные ниже, и посмотрите как они работают. Кстати, если хотите продемонстрировать всем свой проект или то, чего Вы достигли изучая РНР, присылайте ссылку и описание, и все это будет размещено здесь. Только не забудьте поставить у себя наш баннер, можно и не на главной, но буду не против :-) Ссылки на сайты будут вращаться по кругу по мере поступления.

http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков, анекдоты.
www.gdekupit.ru Интернет-каталог Где купить в России. Каталог полностью автоматизирован. Регистрация, добавление нового города, Оформление Договора, выписка счета, служба рассылки и т.д. полностью автоматизировано. Все, кроме счетчика посещений на PHP и MySQL. Кстати, регистрация предприятий, расположенных в любом города России, абсолютно бесплатная.
http://www.ohrana.nsk.su - Практически весь сайт написан на PHP. Используется БД на MySQL.
http://www.webclub.lv   - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.
http://www.love24h.com/ru/   - международная служба знакомств, все анкеты (более 1500) с фото
http://www.freeglobus.com/ - сайт бесплатных игр (все со скриншотами и линками на загрузку)
http://trinet.wallst.ru - на PHP сделан каталог игр
www.nixers.com - сайт для поиска непостоянной работы в Ирландии. Short term, part-time and temporary jobs in Ireland.
http://karaganda.central.kz - "На связи Караганда" - содержание сайта полностью отделено от оформления.
http://moredeneg.wallst.ru - Сайт о Реальном заработке в сети. На сегодняшний день сайт почти полностью на PHP.
http://www.yanka.f2s.com - полностью написан на PHP. Работают следующие скрипты: новости, talk box, links, фотографии, гостевая, тексты, дневник.
http://softm.vov.ru - программы для бизнеса - это простые решения сложных задач
http://rec.gov.by - Сайт Центральной Комисси Республики Беларусь по выборам и проведению республиканских референдумов.
http://www.zgoda.f2s.com сайт белорусской опозиционной газеты "ЗГОДА" полностью сделан на php:"движок", гостевая, счетчик, голосование, обновление, а так же еще пару других мелких, но полезных фишек.
http://rec.gov.by - Сайт Центральной Комисси Республики Беларусь по выборам AK> и проведению республиканских референдумов.
www.saratoff.ru
- "Саратовские народные новости". Новости политики, экономики, культуры, спорта и общественной жизни Саратовской области. Посетители сайта сами могут публиковать собственные новости на сайте. Удобная система администрированная, реализованная на принципиально новой технологии алгоритмизации, с использованием всех возможностей PHP и MySQL позволяет авторизованным пользователям самим создавать и администрировать новые разделы на портале.
www.ecsot.narod.ru  Это сайт ПП "Эксот", которое специализируется на изготовлении сепараторов для очистки сжатого воздуха от масла и влаги.
http://americansingles.to - знакомства, магазин. Много интересного, и вс ена РНР.


Почта рассылки

В этом разделе будут публиковаться материалы, дополнения и обзоры, составленные по Вашим письмам. Письмо, присланное Вами будет автоматически считаться разрешенным для опубликования, если только на это не будет указан явно запрет. Авторство указывается, только если оно указано в тексте письма или материала.

Напишите пожалуйста в разделе про РНР что при написании в файл .htaccess вот такой строки
AddType application/x-httpd-php3 .html .htm
РНР будет работать в файлах не только с расширением php, php3, phtml но и в файлах с расширением html и htm Алексей! Вообщем сам тоже программирую на РНР.


Вопросы и ответы
задать вопрос

Предлагаю Вам присылать свои вопросы на адрес рассылки. Вопрос должен быть кратким, точным и по теме. Ответы на вопросы по мере знаний будут даваться мной, а если я не смогу дать Вам исчерпывающий ответ - кто-то из подписчиков обязательно поможет. А если Вы знаете ответ на заданный вопрос - не поленитесь ответить. Этим Вы очень поможете кому-то решить свою проблему. Синтаксис и грамматика - авторские.

Внимание! - вопросы, на которые никто не ответил не будут переноситься в следующий выпуск. Если вы так и не нашли ответ, попробуйте поточнее сформулировать свою проблему и изложить ее еще раз. Если Вы хотите, что бы авторство ответа указывалось в самом ответе, указывайте ссылку на себя в тексте ответа, тогда она пойдет в рассылку.

задать вопрос

Вопросы: 

  1. А как быть, если мне надо передать неопределенное число параметров в
    функцию? Как ее правильно проделарировать?
    ответить
  2. Как работает PHP4 с Интербейз .... слышал у этой связки есть
    ограничения и большие трудности ? напишите у кого реально работает ...
    как ставили ... какие глюки ? ))))
    ответить
  3. Cкажите, пожалуйста, как сделать на сайте авторизацию (чтобы спрашивался
    пароль, как в SpyLOG/Вход для пользователей)??? Через переменные
    PHP_AUTH_USER и PHP_AUTH_PW сделать это не получается: диалог не
    выводится; система показывает стр. 401 Unauthorized.
    ответить
  4. Мне нужно создать БД (MySQL) в которую будут заноситься имейлы людей которые
    регистрируються у меня на сайте. потом по всем имейлам имеющимся в БД отправлять
    письма. Как это осуществить с помощью PHP. Пожалуста начните объяснять с самого
    начала.

    и еще: как определиьт IP посетителя моего сайта, пишу $REMOTE_ADDR а он мне
    выдает 127.0.0.1 :(. Такой IP на моем Апачи стоит.
    Очень буду благодарен.
    ответить
  5. Я начал изучать php и столкунулся вот с какой проблемой, я разместил на ftp страницу отправки
    почты, форма точно такаеже какая у вас была в рассылке, но при отправке возникает ошибка 405
    вот что пишет сервер:
    Method Not Allowed
    The requested method POST is not allowed for the URL /~nikita/phorum/mail.phtml.
    ответить
  6. Поддерживает ли MS SQL Server7.0 работу с PHP? Заранее спасибо!
    ответить
  7. У меня PWS. Я на него поставил самый последний PHP, который с инсталлятором. Всё встало нормально, но до MySQL достучаться не могу, говорит что его нету. Я слышал что теперь PHP имеет встроенный MySQL? Ладно, поставил MySQL отдельно, но всё равно ничего не выходит. В чём может быть загвоздка? Может он с PWS по определению не работает? Спасибо
    ответить
  8. Я подключаю дополнительные модули php в php.ini
    magic_quotes_gpc=Off
    extension_dir=x:\usr\local\php4\ext
    extension=php_bz2.dll
    extension=php_ctype.dll
    extension=php_cpdf.dll
    extension=php_curl.dll
    extension=php_cybercash.dll
    extension=php_calendar.dll
    extension=php_db.dll
    extension=php_dba.dll
    extension=php_dbase.dll
    extension=php_domxml.dll
    extension=php_dotnet.dll
    extension=php_exif.dll
    extension=php_fdf.dll
    extension=php_filepro.dll
    extension=php_fbsql.dll
    extension=php_gd.dll
    extension=php_gettext.dll
    extension=php_hyperwave.dll
    extension=php_iconv.dll
    extension=php_ifx.dll
    extension=php_iisfunc.dll
    extension=php_imap.dll
    extension=php_ingres.dll
    extension=php_interbase.dll
    extension=php_java.dll
    extension=php_ldap.dll
    extension=php_mcrypt.dll
    extension=php_mhash.dll
    extension=php_ming.dll
    extension=php_mssql.dll
    extension=php_oci8.dll
    extension=php_openssl.dll
    extension=php_oracle.dll
    extension=php_pdf.dll
    extension=php_pgsql.dll
    extension=php_printer.dll
    extension=php_sablot.dll
    extension=php_snmp.dll
    extension=php_sybase_ct.dll
    extension=php_yaz.dll
    extension=php_zlib.dll)

    Запускаю php.exe и он мне говорит "unable to load dinamic library 'x:\usr\local\php4\ext/php_curl.dll (php_domxml.dll и тд.)' -не найден один из файлов библиотек, необходимых для выполнения данного
    приложения." Все эти модули в папке ext есть. И причем он пишет не все модули не найдены, а только некоторую часть.Что делать?
    ответить
  9. Здравствуйте. Почему у меня не работает функция Синтаксис: void mail(string to, string subject, string message, string add_headers); пишет ошибка в этой строке? На этом всё.
    ответить
  10. Как на php получить содержимое каталога (типа команды dir в DOS'e)?
    ответить
  11. Я просил рассказать мне как сделать виртуальные хосты и прод какими адресами они доступы нужны www или .ru как будет выглядеть адрес (http://name.com такк?) помгите.На этом всё.
    ответить


    Ответы на заданные вопросы:
  1. Hello,all! Я качнул Apache, потом все барахло(перл, пхп и тд) потом по руководству напорол чагото в httpd.conf, и в итоге апач не работает. Если ктонить знает, как нормально сконфигурировать httpd.conf, ответьте! Операционка - винда миллениумовая. Мне нужн осделать так, чтобы все
    нормально работало под операционку.


    Ответ:
    Пришли httpd.conf на l0g_err@xakep.ru Посмотрю - поправлю и напишу чего было не так.

    Посмотри подробную инструкция настройки web-сервера Apache на http://www.tweak.tut.by/artciles/web_server.shtml Денис, denis@tut.by , www.tweak.tut.by

    Дарова. Ты бы вначале написал, какие ошибки апач выдает, и такой вопрос, насколько тебе   критично, под какой ОС-кой работать, у меня была меляха и апач нормально пахав, да и httpd.conf в нем разобраться не трудно. Короче пиши, чем можем, тем поможем kwon@hosiery-mill.com

  2. Здравствуйте Андрей, наткнулся на ваши статьи почитал, хотел найти каким образоим можно передавать значения из переменных JS в переменые PHP.Я хотел бы поинтересоваться у вас, как мне
    сделать чтобы передать выбранные данные из одного SELECT в другой, мой скрипт:

    <html>
    <script language="javascript">
    function fnew(f)
    { var rt=f.group.options.length;
    for(im=0;im!=rt;im++)
    { if (f.group.options[im].selected==true)
    { ark=f.group.options[im].value;
    <? $zzz=$ark; ?>
    }
    }
    }
    </script>
    <body>
    <form action=<? echo $PHP_SELF; ?> method="POST">
    <b>select_1: </b> <br>
    <select name="group" size=7 onClick=fnew(this.form)>
    <option value=111> help </option>
    <option value=222> new </option>
    <option value=333> week </option>
    <option value=444> door </option>
    </select> <br>
    <b>select_2:</b> <br>
    <select name="people" size=7 >
    <? echo"<option>".$zzz."</option>"; ?>
    </select> <br> <br>
    <input type=submit value='ok'>
    </form>
    </body>
    </html>
    не обходимо, чтобы небыло перезагрузки и обязательно через переменныю php, помогите с советом,
    буду рад если ответите. С уважением, Сергей.


    Ответ:

    По-моему ты или сам запутался или плохо объяснил. Во-первых из JavaScript в PHP можно передать значение только либо через адресную строку (с последующим переходом по этому адресу) либо через скрытую форму. Нельзя передать значения из JavaScript в PHP без перегрузки, потому что сначало выполняется на сервере PHP-скрипт, он выдает клиенту (броузеру) HTML-файл с джаваскриптами, а уже потом выполняется JavaScript. Если хочешь передать выбранный SELECT в другой скрипт - поставь в форме <form method=post action="otherscript.php"> А твой скрипт можно написать так.
    <html><body>
    <form method=post action=<?php echo $PHP_SELF;?>
    <b>select_1: </b> <br>
    <select name="group" size=7 onClick=fnew(this.form)>
    <option value=111> help </option>
    <option value=222> new </option>
    <option value=333> week </option>
    <option value=444> door </option>
    </select> <br>
    <?php
    if (!empty($submit)):
    ?>
    <b>select_2:</b> <br>
    <select name="people" size=7 >
    <option value="<?php echo $group;?>"><?php echo $group;?></option>"
    </select> <br> <br>
    <?php endif; ?>
    <input type=submit name=submit value="OK">
    </form></body></html>

  3. Дело вот в чём: У меня на сайте достаточно часто появляются пользователи, многие из них оставляют следы в виде файлов, записей в БД и т.д. Следы эти надо периодически убирать. Уборку делать надо или через некоторое время после последнего обновления "следов", например через минут
    15, либо в определённое время суток. Что-нить подобное таймеру сгодится, но я не знаю, есть ли подобное на PHP. Вопрос: как на PHP можно осуществить подобное, т.е. сделать какое-либо действие через некоторое время после прекращения активности пользователя или в определённое время суток? Желательно не привязывать эти действия к посещениям других пользователей, т.к. это резко снижает производительность, да и пользователей может в нужное время и не оказаться на сайте.


    Ответ:

    То, что тебе нужно называется робот. Его можно сделать CRON'ом (юниксовый шедулер) - просто прописываешь в его настройках, что в определенное время или через определенный интервал времени запускать приложение. Приложение пишешь на пехепе :)) Только необходимо два обязательных условия - первое: админ сервака eq твой лучший друг. Второе: сборщик мусора не дожен лежать в общежоступных папках (а-ля www и ниже по дереву - а то сервак нагнут так, что мало не покажется). Подробнее о нужных тебе технологиях написано на http://php.spb.ru если будут нужны разъяснения пиши на l0g_err@xakep.ru

    Сделай файл в котором у тебя будут описаны нужные действия по очистке базы и пр. если что-то в нем будет инклюдиться, то используй явным образом прописанные пути. попроси админа чтоб он в crontable (Линуксовый шедулер) прописал твой файлик (ему намек как это сделать - lynx myfile.php) lynx - это типа
    Линуховой бродилки которая вызовет твой файл, тебе же нужно послать http запрос серверу чтоб он распарсил myfile.php. Для виндов аналогичная фигня - шедулер.

    Надо использовать Cron - идет со всеми Юникс - там задать по расписанию выполнятся скрипт,
    например на Перл-е. А сам скрипт уже будет подчищать информацию о пользователях. Задать
    запуск скрипта можно на любое время, по дну и т. д. В винде можно попробовать использовать
    "Планировщик заданий" - но это жалкая копия Cron-а.


    Ну в чем проблема то ? Делаешь простую проверочку на тот скрипт который у тебя и добавляет этот самый мусор:
    $date=date("H"); // Текуший час (если тебе нужно
    // сброс каждый час для старых данных)
    // тут тебе нужно выбрать час последнего обновления из базы (именно
    час)
    if ($last_hour<$hour) {
    // т.е. если прошел час со времени последнего обновления файла то
    нужно килять его
    .....киляеш.....
    }
    в принципе все, правда нужна проверка на то что если будет 00 тек.
    час, а сравнивая с 23 получишь неверный рез., т.к. что это тоже надо
    проверить. Есть правда одна милая такая строчка, которая сделает тоже
    самое, только одним махом, но она для записей, а не файлов:
    DELETE FROM table WHERE (TO_DAYS(NOW())-TO_DAYS(time)) = 1
    где time последнего обновления. С уважением MaximatoR
    (maximator_@rambler.ru)

  4. Создал файл, который нужно включать (include) почти во все страницы моего сайта. Но включают его только страницы, которые лежат только в том же каталоге (папке). Я пробовал вставлять относительно, как в HTMLе: include './JabaScript.Inc'; но не включается. В мануале насчёт относительных инклюдов ничего не сказано. В принципе, можно же как-то в чистый HTML Жабу вставить. Относительно вставить. Только вот не знаю как.  С ув. Eric.

    Ответ:

    Напиши так: include ("$DOCUMENT_ROOT/include/your_file.inc"); $DOCUMENT_ROOT - путь до корневища твоего сервера иногда эта переменная может называться по другому, но это зависит от извращений сисадмина и встречается редко. Если не покатит, спроси у него как он ее переобозвал.

    А какие проблемы?? './' - указывает на текущий каталог, './'-переход на один уровень вверх. Можно еще использовать абсолютный путь:'$DOCUMENT_ROOT/katalog/file'; переменная $DOCUMENT_ROOT содержит абсолютный путь к корневому каталогу вашего сайта. Успехов, skyjam@inbox.ru


    используй
    include "./blabla.inc"; С уважением MaximatoR (maximator_@rambler.ru)

  5. как считать некоторое кол-во символов в тексте, который вводит юзер, и поставить знак переноса если это кол-во было превышено (\n)?

    Ответ:
    есть функция в ПХП wordwrap()
    $text = "A very long woooooooooooord.";
    $newtext = wordwrap( $text, 8, "\n", 1);
    echo "$newtext\n";
    получим
    A very
    long
    wooooooo
    ooooord.
    Читай мануал

    Очень просто: $wrapped = wordwrap($text, $maxlen); или $wrapped = wordwrap($text, $maxlen, '\n');


    В php есть функция
    wordwrap ($str [, макс. шириниа строки [, чем заделять порезанные
    строки [, можно ли резать слово]]])

    вот и ответ на вопрос :)

    примеры использования:
    $text = "The quick brown fox jumped over the lazy dog.";
    $newtext = wordwrap( $text, 20 );
    echo "$newtext\n";

    Выведет на экран:
    The quick brown fox
    jumped over the lazy dog.

    Кстате этот же вопрос уже помоему задавали, как в гостивой
    контролировать вводимую информацию, и резать строчку, а то есть узер
    как очумелый нажал 1000 раз буковку 1 и поле текста, то я думаю вид у
    гостивой будет привеселый 8) С уважением MaximatoR ( maximator_@rambler.ru )

  6. Как можно вставить из под PHP файл .shtml содержащий директивы SSI и
    чтобы они выполнялись? Простое include не работает.

    Ответ:
    Можно через сокеты или так:
    $a=implode("",file("http://localhost/red/main.shtml"));
    echo $a;

    Напрямую нельзя. Для того, чтобы SSI inside PHP работал, надо прописать либо файлы с ПХП расширения как Server-Side Include или файлы sh*(SSI Files) как application-php :((( Админы не идиоты. Это даже не дырка в защите, а просто паровозный туннель. Такого никто делать не даст, да и сам, если соображаешь, так делать не будешь. Если нужны решения по-поводу совмещения этих двух технологий - напиши на l0g_err@xakep.ru - расскажу как можно от этого гимора избавиться. Касается всех. :))) В рассылке рассказывать - выпусков 6 надо.

    Возможно, что никак: у меня Apache вообще не работает с PHP и SSI одновременно.

    virtual('filename') - эквивалент <!--#include virtual...

  7. В одном из номеров расылки вы рассказывали как павильно посыласть почту. Но вот такая ситуация, я хочу  послать почту не в инет, а на внутреннюю почту фирмы. Адреса у нас сотоят из трех слов , например, Иванов Иван Иванович, но при попытке отослать php видит только первое слово...
    ЧТо делать ? Заранее спасибо... Павел


    Ответ:
    попробуйте вместо пробела поставить %20

    Тебе пробельчики мешают :( их надо заменить. Почитай про вот эти функции. rawurlencode(), urldecode(), urlencode().

  8. У меня вопрос:
    1. Что делает строка ereg("(.+)\.(.+)",$file,$regs)? По идее должна из переменной $file отрезать в $regs расширение файла.
    2. Где найти доку по регулярным выражениям (на русском)?
    3. Как мне получить список всех папок в указанной директории?
    4. Как мне получить список всех файлов в указанной директории?


    Ответ:
    1. А самому трудно посмотреть. Выполни скрипт и посмотри что в массиве $regs находится. Я думаю что расширение лучше вытаскивать так
    ereg("^.+\.(.+)$",$file,$regs); расширение будет в $regs[1]
    2. Можешь посмотреть на сайтах, посвященных PERL, но там не все будет работть в ПХП.  ИМХО лучше читать мануал по ПХП, там есть сатья по регулярным выражениям, еще можешь зайти на www.php.net  и посмотреть описания функций ereg_*

    1. Она и отрезает, но не в $regs, а в $regs[2]. Т.е. $regs это массив, regs[0]-вся найденная строка, regs[1]...regs[n] - соответствуют фрагментам в круглых скобках.
    3., 4. Вобщето в Юниксах имена файлов не обязаны иметь расширение, и могут содержать несколько точек, а имена каталогов тоже могут содержать точки :(((. В общем файл это или каталог - определятся атрибутами файла (опять же в Юниксах файлы и каталоги, и даже железки, монитор и пр. это все файлы 8-|). Поэтому используем функции is_file, is_dir, is_executable и пр.
    $dir=opendir('.');
    while($file = readdir($dir))
    if(is_file($file))$files[]=$file;
    elseif(is_dir($file))$subdirs[]=$file;
    closedir($dir);
    for($i=0;$subdirs[$i];$i++) echo$subdirs[$i].'<br>';
    for($i=0;$files[$i];$i++) echo$files[$i].'<br>';
    Успехов, skyjam@inbox.ru

    1. (ereg("(.+)\.(.+)",$file,$regs) проверяет строковую переменную $file в соответствии с шаблоном: (.+) означает "один или более символов, кроме перевода строки". Далее должна быть точка, а затем опять (.+). Как нетрудно догадаться, можно использовать для определения имя_файла.расширение, причем имя файла может быть и полным, например, "C:\elena\o1.txt". $regs представляет собой массив, причем в $regs[0] будет находиться вся строка, а каждая найденная в соответствии со скобками
    подстрока будет находиться в следующих элементах массива, т.е.
    $regs[0]="C:\elena\o1.txt";
    $regs[1]="C:\elena\o1";
    $regs[2]="txt".
    Если строка не соответствует шаблону, то
    ereg("(.+)\.(.+)",$file,$regs)
    возвращает false и $regs не устанавливается. Вот простой пример:
    <?
    $file="C:\elena\o1.txt" ;
    if(ereg("(.+)\.(.+)",$file,$regs))
    echo ("$regs[0]+$regs[1]+$regs[2]");
    else echo ("Несоответствие шаблону");
    ?>

    2. По поводу документации, к сожалению, ничего посоветовать не могу, а вот насчет литературы - пожалуйста, пиши, отвечу.
    3.
    <? chdir("C:\\elena"); //изменили текущий каталог
    $dir=opendir("."); //открыли текущий каталог
    while($file=readdir($dir)) // пока есть файлы, читаем...
    { if(is_dir($file)) // если это директория
    echo("$file<br>");
    } //печатаем...
    closedir ($dir);
    ?>
    4. Точно так же можно проверить is_file (cм.выше).
    Удачи! timlenka@mail.ru

  9. День добрый ! не могли бы вы мне подсказать как сделать хоть примитивую сортировку средствами PHP ? Хочу применить эту вещь на форуме http://phpdemo.hop.ru Спасибо заранее !

    Ответ:
    Man asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), and uksort()

    Можно разными способами, можешь забить все это в массив и сделать
    $massiv=sort(massiv); // читай доку
    но лучше и быстрей это сделать на mysql:
    $q->query("SELECT * FROM table ORDER BY date DESC LIMIT 0,50");
    т.е. смотри мы в одну строчку запихали:
    выбрать из таблицы table все поля отсортировать из по полю даты в обратном порядке выдать только данные с первой записи до 50 ! С уважением MaximatoR (maximator_@rambler.ru)

задать вопрос


Обмен ссылками и баннерами

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Если есть желание разместить свой баннер 88*31 на сайте рассылки http://virtual.bresttelecom.by/php/ , укажите это дополнительно, и пришлите код своего баннера. В любом случае, Вам надо будет разместить у себя код баннера сайта рассылки, и только на главной страничке Вашего сайта.

Взять код моего баннера (на выбор) можно по адресу: http://virtual.bresttelecom.by/php/index.phtml?php/banner.html или воспользоваться этим:

<!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php1.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a><!-- PHP banner end -->


php1.gif - название файла баннера. Если менять цифры в названии от 1 до 5 - будут показаны разные баннеры.

Предлагаю Вашему вниманию работы дизайнеров, приславших свои работы в качестве баннеров для сайта РНР для всех! Номер в списке соответствует номеру в имени баннера - php1, php2 и т.д. Так что Вы можете оценить их работы и при желании воспользоваться их услугами.

  1. http://tweak.tut.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!

  2. http://www.webclub.lv - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.

Правила у меня стандартные - описания Ваших сайтов будут периодически (в зависимости от их количества) размещаться в рассылке. И конечно - будет отдельная страничка на сайте, на которой будут представлены все друзья сайта.

Наши друзья

http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
http://saleha.al.ru/anecdot/index.phtml   - самые новые и смешные анекдоты.
http://klepan.narod.ru  - Халява pliz! - реферал клуб.
http://www.ohrana.nsk.su - Название: Управления вневедомственной охраны г.Новосибирска. Описание: Услуги по охране квартири других объектов, сопровождение грузов. На сайте: интересные статьи, новости, криминальная хроника, вакансии и другая полезная информация!
http://www.programing.narod.ru - программирование на РНР
http://icebreaker.dax.ru - самый информативный сайт об ударных инструментах, здесь находится огромное количество полезной информации для ударника:фотографии,статьи,табулатуры,самоучители,ссылки и много чего ещё!
http://webd.hut.ru - AGS Design. Сайт для вебмастера. 1500+ изображений фонов, иконки и кнопки, отличная графика, скрипты, очень понятная документация по различным языкам программирования, изучение Фотошоп
от А до Я, и мн. др.
www.nokstr.dax.ru - Программы, статьи и примеры по Visual Basic, C++, Халява.
http://www.ancient.dax.ru - Ancient - Каталог Веб-Мастера. Бесплатные скрипты CGI, PHP, JAVA
WebCraft - всё для вебмастеров, увеличение вашего трафика на 200 посетителей в день.

http://softm.vov.ru - программы для бизнеса - это простые решения сложных задач
http://moskalyuk.com/links/index.htm . На сайте собрана коллекция ссылок, причем, как нетрудно убедиться, многие посвящены программированию и компьютерным наукам. По РНР отдельно пока ничего нет, просто в последнее время я увлекался языком Perl, кому-то может показаться интересным.
http://sos.dax.ru - Проект "SOS:Помощь пользователю". На сайте вы найдете множество статей, советов по компьютеру. Всегда свежий софт. А также вы сможете задать вопрос и получить на него моментальный ответ. Если вам нужна помощь - мы поможем вам!
http://www.uvd.tula.ru - сайт криминальной милиции УВД Тульской области. Здесь будет все, что касается милиции, права и жизни города Тулы.
http://www.pro-forex.com/ru/index.php - Большой проект финансовой тематики, полностью реализованный на PHP и MySql: Дилинговый Центр PRO-FOREX.COM
http://myvote.hut.ru - MyVote - голосование на Вашем сайте.Сервис для всех вебмастеров, которые хотят сделать свой сайт более интерактивным. Позволяет организовать опрос мненияпользователей на любом сервере.


Подпишитесь на рассылки!

Рассылки Subscribe.Ru
Программируем на PHP - вопросы и ответы
Новости сайта Виртуальный Брест
Оптимизация и настройка компьютера
SOS:Помощь пользователю Интернета
Кроссворды от К.Ермакова
JavaScript и PHP.

поддержка http://umnik.vov.ru/

Здесь будет публиковаться список рассылок, рекомендуемых к подписке. Если у Вас есть рассылка - предлагаю Вам обменяться подобной формочкой для подписчиков. Достаточно прислать мне код рассылки и ее название.


Обращаю Ваше внимание, что правильный адрес рассылки - virtualphp@tut.by. Сайт рассылки доступен по адресу http://virtual.bresttelecom.by/php/ Там Вы найдете все старые выпуски, а так-же теперь доступны версии рассылки для печати.
Если Вы можете помочь сделать баннер для сайта, буду Вам очень признателен. С графикой я не очень дружу, но думаю, что смогу быть полезен и Вам. Жду предложений. Нужен баннер 88*31, лучше анимированный, по теме РНР, вопросы, ответы, статьи и т.д. Все, приславшие свои предложения, будут рекламироваться в рассылке. Первые работы уже есть.


автор рассылки Андрей Кухарчик



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное