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

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


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

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

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

Здравствуйте все, кто не побоялся трудностей и решил окунуться в удивительный и странный мир программирования. Дело это не простое, но затягивает не хуже игрушек. Вообще, это и есть игра, только противник твой - упрямый сервер, а оружие - голова. Рассылка РНР для всех! позволит Вам сделать первые шаги в программировании на скриптовом языке РНР. У Вас будет возможность задать вопрос по интересующей Вас теме и получить на него профессиональный ответ. Или наоборот - дать ответ, если Вы его знаете. Вы сможете обмениваться мнениями и читать авторские статьи, а так же размещать здесь свою информацию. И это - только начало. Я надеюсь, что рассылка РНР для всех! станет хорошим помощником для многих из Вас! Вопросы по организации рассылки и свои мнения присылайте на адрес для связи - virtualphp@tut.by. Буду рад любым предложениям о сотрудничестве.

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


Дизайн сайта

Сегодняшний пример будет посвящен проблемам дизайна, а точнее одной из многих. Любой, кто хоть раз пробовал сделать в Интернете свой собственный сайт, рано или поздно сталкивается с проблемой ввода информации в многочисленные файлы своего сайта. Чаще всего такая ситуация возникает, когда нужно добавить еще один пункт в меню, или заменить старый баннер на всех страницах на новый. Если сайт маленький, и состоит из десятка файлов, это не такая уж и проблема, но если файлов больше сотни, тут уже стоит задуматься, а нет ли способа лучше? Конечно есть! И далеко ходить не надо, все уже есть, при обязательном условии, что сервер поддерживает РНР. Свой сайт можно просто склеивать из кусочков, а каждый кусочек применять не в одном месте, а везде где только можно. Опять же как пример - меню. Никто не запрещает нам использовать один и тот же кусочек с кодом на каждой страничке сайта. Здорово? Да, но есть и минусы. Все Ваши файлы придется переименовать в *.phtml, что довольно проблематично, если сайт большой. Но это раз - и навсегда! Зато дальше будет проще. Итак, поехали...

<html>
<head>
<?php include ("title.phtml"); ?>
</head>
<body>
<?php
$add = $QUERY_STRING;
if ($add == "") { $addres = "main.phtml"; } else { $addres = $add; }

include ( $addres );
?>
</body></html>

Наш новый файл index.phtml благополучно написан. Он представляет из себя каркас сайта, и содержит вложение двух других файлов. Первый будет вставлен между тегами <head>, а второй - <body>. Причем вторая вставка будет сделана исходя из запрошенного адреса. Адрес формируется в виде http://name/index.phtml?patch/index.phtml. Как видите, все изменения сводятся к замене слеша на вопросительный знак, и в случае запроса данного адреса в переменную $add будет введено patch/index.phtml и соответствующий файл по данному пути будет вставляем между тегами <body>. Причем если после вопросительного знака вообще ничего нет, будет вставлен файл main.phtml, так как вставлять что-то нужно в любом случае.

Как видите, это открывает интересные возможности. Вкладывать можно любое количество файлов, и их имена могут быть тоже любыми. Кроме того, у нас сохраняется возможность в любое время знать, что у нас загружено, и принимать соответствующее решение. Это достигается проверкой переменной $add, и если она пуста, у нас загружена главная страница. Как пример можно привести возможность открытия новых окон браузера только с основной страницы, а все остальные будут загружены только в одном окне.

Новая команда, с которой мы познакомились - include ( $addres ); Она представляет из себя оператор, который вставляет и исполняет содержимое указанного файла. Причем делает это он неограниченное количество раз, что позволяет использовать его в циклах. А вот другой оператор - require(), только вставляет вместо себя содержимое указанного файла, что не позволяет использовать его несколько раз, например в циклах. Кстати, никто нам не запрещает делать так: include ( "patch/prog.phtml" ); Другими словами - используйте смело каталоги и пути, как в обычном HTML-е. А вот абсолютные ссылки в этих операторах недопустимы - как всегда по соображениям безопасности.


Наши обшибки

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

  • Самое распространенное - не стоит завершающая оператор точка с запятой. Не ставится она только в конструкции if () {} {} Основной признак - ошибка в следующей строке за тем оператором, в котором нет точки с запятой.

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

  • В конструкции if () {} {} отсутствует завершающий знак - } Исключений нет. Признак этой ошибки очень простой, и позволяет детектировать эту ошибку очень просто. При запуске скрипта на выполнение интерпретатор выдает ошибку в самой последней строчке кода, где стоит завершающий тег ?>


Сайты в тему

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

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.


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

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

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 сделан каталог игр


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

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

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

Вопросы: 

  1. Здравствуйте помогите правильно напистаь скрипт по аудентификации, я что то совсем запутался с Oracle-ом, подскажите хотя бы что я делаю не так, с Mysql, мне не поможет, мне нужно именно с БД Oracle. Заранее благодарен, С уважением Олег.

    <html>
    <?php
    if(!isset($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic realm=\"restricted area\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo Вы ввели неправельный пароль... \n";
    exit;
    } else {
    $db="userpass";
    $conn = OCIlogon ("users", "password", $db);
    $str = OCIParse ($conn, "select * from users);
    $user_id = strtolower ($PHP_AUTH_USER);
    $result = -Oci -("select password from userpas" .
    "where username = '$username'")
    $row = -Oci - ($result);
    if ($PHP_AUTH_PW != $row["password"]){
    Header("WWW-authtenticate: basic realm=\"restricted area\"");
    Header("HTTP/1.0 401 Unathorized");
    echo " Аудентификация невозможна повторите попытку";
    exit;
    }
    }
    ?>
    </html>

    ответить
  2. есть index.html и php (который из текстового файла читает новости)... Как сделать так чтобы эти новости размещались в index.html?
    ответить
  3. Можно ли в пхп нормально вычитать даты? или только грабить из строки числа и
    самому дальше их вычитать?

    ответить
  4. Почему когда программа считывает информацию с файла с помощью fgets в переменную записывается только 256 символов, как можно расширить её объём?
    ответить
  5. Что мне нужно написать, чтобы форма отправлялась на p1@e-mail.ru названия форма msg1, msg2
    ответить
  6. Здравствуйте.Установил себя Apache и дистрибутив PHP. Проблема: не запускаются файлы с расширением phtml (php3 - работают) и не работают вставки в HTML. При запуске HTML странички с любой из следующих строк в теле ничего не происходит.
    <? echo("Hello"); ?>
    <?php echo("Hello"); ?>
    <script language="php">
    echo ("Hello");
    </script>;
    <% echo("Hello"); %>
    Заранее спасибо.
    ответить


    Ответы на заданные вопросы:
  1. В зависимости от типа броузера на страницу, помощью include, надо вставить различные фрагменты HTML кода. Как определить какой броузер у клиента?

    Ответ:
    Можешь попробовать вот так:
    function brow_type() {
    $brow = getenv("HTTP_USER_AGENT");
    if((ereg("Nav", $brow)) || (ereg("Gold", $brow)) || (ereg("X11", $brow)) ||
    (ereg("Mozilla", $brow)) || (ereg("Netscape", $brow)) AND (!ereg("MSIE", $brow))) $browser =
    "Netscape";
    elseif(ereg("MSIE", $brow)) $browser = "MSIE";
    .....
    else $browser = "Other";
    return $browser;
    }//End of function brow_type()


    Работает здесь: http://www.eav.vov.ru/pract/stat.html
    Андрей


    Ответ:
    С помощью переменной $HTTP_USER_AGENT, существует много freeware-скриптов разбирающих эту переменную. Также есть в PHP функция get_browser, но она работает только с известными ей браузерами и для неё нужно скачивать файл browscap.ini, в котором содержится описание браузеров для нее. К тому же мне так и не удалось заставить ее корректно работать на FreeBSD+apache+php4.
    Шабанов Василий.
  2. Не подскажите url с которого можно скачать дистрибутив Apache, а то на www.apache.org не могу найти.

    Ответ:
    http://httpd.apache.org/dist/httpd/binaries/win32/apache - 1.3.19-win32-no_src-r2.msi
    Поищи на www.freeware.ru, я там видел.
    Загляните на http://httpd.apache.org . Там есть ссылка Download и т.д. для разных ОС, с исходниками и без...
  3. Каким образом можно скрыто передать значение переменной, так, чтобы не через URL? Когда у нас есть форма, мы пользуемся <input type=hidden...>, а когда нет формы? Это осуществимо? (Допустим, входит зарегистрированный пользователь, и дальше на всех страницах мне надо знать его id. Нехорошо, если он будет светиться в УРЛе).

    Ответ:
    Скрыть пользовательский ID можно несколькими способами:
    - записать его в куки. Чтобы не записывать комбинацию логин/пароль можно расчитать какую нибудь уникальную величину и записать ее в куки пользователя и БД сайта (и уже по этой величине из БД определять логин/пароль);
    - использовать фреймы - ID передаеться между фреймами, а вадресной строке всегда висит адрес главного фрейма (посмотри www.beep.ru)
    С уважением, Daiz13


    Ответ:
    Вообще-то, самое оптимальное хранить подобные сведения в сессиях, так как даже отправку из hidden-поля формы легко подделать. Если же все-таки хочется отправить данные POST-запросом, то самое простое иметь где-нибудь на странице форму с нужными hidden-полями и submit'ить ее с помощью JavaScript. Шабанов Василий.

    Ответ:
    Это показано в документации на PHP 4.0.3 (я пользуюсь этой версией), в разделе "Session handling functions" есть примерчик, демонстрирующий скрытую переменную count. Запишите его с именем nextpage.php и запустите. Вот он:

    <?php
    session_register ("count");
    $count++;
    ?>


    Hello visitor, you have seen this page <?php echo $count; ?> times.<p>

    <php?
    # the <?=SID?> is necessary to preserve the session id
    # in the case that the user has disabled cookies
    ?>


    To continue, <A HREF="nextpage.php?<?=SID?>">click here</A>


    Ответ:
    Попробуйте разобраться с сессионными перемеными в php. Какие есть вопросы по этому поводу (я сам только что разбирался с ними - прелюбопытнейшая штука!!) - Пишите на мыло orelaz@tut.by , если знаю - отвечу. Александр.
  4. Здравствуйте!!!! Какое программное обеспечение необходимо, чтобы программировать на PHP? Если нужно,какое-то специальное ПО, то подскажите где его можно скачать. Заранее спасибо. Moiseev.

    Ответ:
    Из софта нужен Web сервер, например Apache http://httpd.apache.org и сам PHP http://www.php.net/ . Они совершенно бесплатно выкачиваются с указанных сайтов. И конечно, текстовый редактор, чтобы писать странички на HTML и php.

    Ответ:
    Просто - текстовый редактор (по минимуму), и умение находить нужные буквы на клавиатуре 8-)
    Хотя я использую на своей P200/mmx, 32мб озу Apache v 1.3.14 (хотя есть свежее, 1.3.19, не доберусь скачать) for win32 с модгруженным как модуль php v 4.0.4pl1
    http://www.apache.org/  По PHP смотрите все на http://www.php.net  http://www.phpmirror.narod.ru/
    Для бд - mysql v3.23.32 c клиентом 3.23.22-beta http://www.mysql.com/  http://www.mysql.com/downloads Для администрирования SkiBit Mascon 2000 v 1.10.48 http://www.scibit.com и phpMyAdmin Version 2.1.0 - 08/06/2000

    http://www.phpwizard.net/projects/phpMyAdmin/
    В качестве редактора использую или Aditor с подстроенными для себя вивлиотеками, (чиитай, кусками-заготовками кода) или, чаще PhpEdit v 2.96.1.2 http://www.soysal.com/PHPEd  Неплохой редактор, но с классными туркейскими выкрутасами в виде глюков, до сих пор не могу настроить
    под него дебуггер http://dd.cron.ru/dbg/ Есть еще и PHP Coder. Все проги доступны с http://www.php.net
  5. У меня есть переменная $num. Как из неё убрать кусок текста/цифры, скажем начиная с hello т.е.
    $num="Manhello!" а после преобразования остается "Man"


    Ответ:
    Загляните в фирменную доку по PHP, раздел "String functions". Например в функцию substr - дальше - в зависимости от того, что Вам требуется.

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


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

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

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

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

<!-- PHP banner end -->

Предлагаю Вашему вниманию работы дизайнеров, приславших свои работы в качестве баннеров для сайта РНР для всех! Номер в списке соответствует номеру в имени баннера - 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 - Название: Управления вневедомственной охраны г.Новосибирска. Описание: Услуги по охране квартири других объектов, сопровождение грузов. На сайте: интересные статьи, новости, криминальная хроника, вакансии и другая полезная информация!


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

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

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


Разное

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

Текстовая обменная сеть

TLE (http://www.tle.ru)   - это уникальная сеть обмена ссылками, позволяющая увеличить посещаемость Вашего сайта. Показывая у себя на сайте 100 баннеров, вы зарабатываете всего 80 показов Ваших баннеров. Показывая 100 рекламных блоков TLE.RU, Вы зарабатываете 255 показов Ваших ссылок! Почуствуйте разницу! Высокий CTR%, удобная панель управления, мгновенная регистрация. Спешите! Только до 15 мая каждому новому участнику 50,000 БЕСПЛАТНЫХ показов! Узнать подробности и стать участником сети можно на сайте http://www.tle.ru


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



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное