Рейтинг
Порталус

Введение в PHP

Дата публикации: 28 сентября 2004
Публикатор: maskaev
Рубрика: КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ Программирование →
Номер публикации: №1096363030


ТРАХТЕНБЕРГ АДАМ СКЛЯР ДАВИД

Предисловие переводчика.

Некоторое время назад мне потребовалось написать небольшой скрипт на языке PHP для Web-странички. Поскольку до того момента мне не приходилось встречаться с PHP, я начала искать в Интернет руководство по этому языку и первым делом, естественно, обратилась на сайт PHP Club (http://phpclub.unet.ru/index.php3?m=links). К счастью, я знала о существовании этого сайта. К моему удивлению обнаружилось, что документации по PHP на русском языке очень мало. Да что там мало, можно сказать, что ее нет вообще, ведь практически единственное русскоязычное руководство (http://www.webclub.ru/materials/php/) относится к версии 2 этого языка (а сейчас уже вышла версия 4.0.3).
Этот факт тем более удивителен, что язык PHP используется на массе серверов в Интернет. К сожалению, за неимением статистической информации не могу указать здесь точный процент, но могу привести такой факт. В ноябре 2000 г. на сайте http://nevod.ru/linux был проведен опрос на тему "На каком языке проще, быстрее и качественнее писать CGI?". В опросе приняло участие 954 респондента (по состоянию на 28.11.00). По результатам опроса PHP оказался на втором месте (после Perl) по популярности среди языков, используемых для создания CGI-скриптов. Perl набрал 334 голоса (35 процентов), а PHP - 232 голоса (24 процента). Все остальные языки, включая C, C++, Delphi и Visual Basic, набрали не более 11 процентов голосов. Конечно, тут надо сделать поправку на то, что опрос проводился на сайте, посвященном ОС Линукс, а значит, результаты опроса могут не совсем правильно отражать реальную картину использования разных языков, но все же эти результаты говорят о том, что PHP достаточно широко используется.

Среди англоязычной документации по PHP в списке ссылок на сервере PHP Club конечно было указано и полное руководство по этому языку (http://phpclub.unet.ru/manual). Но я выбрала для первоначального знакомства с PHP документ, который на PHP Club назван "наиболее удачным описанием PHP" (оригинал статьи Вы можете найти по адресу http://www.builder.com/Programming/PHPIntro/?). А поскольку документации на русском мало, я решила попутно перевести этот документ полностью. Этот перевод я и предлагаю вниманию всех, кого интересует PHP.

Кстати говоря, за то время, пока я переводила этот материал, я нашла в Интернет еще пару руководств по PHP на русском языке. Думаю, что Вам пригодятся соответствующие ссылки (для полноты я включила сюда и ссылку на упоминавшееся выше руководство Д.Брэндона ко второй версии PHP):

Дик Брэндон. PHP/FI Version 2.0. (http://www.webclub.ru/materials/php/) Перевод Юрия Плетнева.
Букварь по PHP и mySQL. (http://www.rusdoc.ru/material/web/about_php_rus_pdf.zip) - pdf-файл. Данный букварь просто поможет вам сделать первые шаги в изучении PHP и способах взаимодействия его с БД MySQL.
Shawn Wallace Введение в PHP. (http://spslug.sposad.ru/doc/phpintro.html) Перевод Михаила Крайнова.
С.Лосев. Рабочие инструменты сайтостроителя. (http://officesoft.agava.ru/index1.php3?path=articles/php1&ftype=article)
В этом цикле статей, посвященного современному "сайтостроению", рассказывается о популярной системе MySQL и языке программирования PHP, как с их помощью можно решать задачи, с которыми сталкивается любой разработчик Интернет-сайта - подготовка и отображение новостей, ввод и отображение текстовой информации, поиск на сайте, организация дополнительных сервисов ("узнавания" посетителя, форумов, опросов и т.д.).
Часть 1. Первое знакомство с PHP и MySQL (http://officesoft.agava.ru/index1.php3?path=articles/php1&ftype=article)
Часть 2. Кругом новости, но как их ввести и отобразить? (http://officesoft.agava.ru/index1.php3?path=articles/php2&ftype=article)
Часть 3. Статьи для сайта (http://officesoft.agava.ru/index1.php3?path=articles/php3&ftype=article)
Часть 4. Дополнительные сервисы (http://officesoft.agava.ru/index1.php3?path=articles/php4&ftype=article)

Поскольку переведенный мной материал не повторяет эти руководства, надеюсь он будет полезен и читателям журнала "Мир ПК".

Что такое PHP?

PHP - это язык программирования для динамической генерации Web-страниц с помощью скриптов, запускаемых на Web-сервере. Вы создаете страницу с помощью PHP and HTML. Когда посетитель сайта открывает страницу, сервер выполняет включенные в html-код операторы PHP и посылает результат браузеру посетителя, точно так же, как это делается с помощью ASP или ColdFusion. Однако, в отличие от ASP или ColdFusion, PHP является продуктом с открытым исходным кодом (Open Source) и платформенно-независим. PHP работает на Windows NT и многих версиях Unix. Он может быть запущен как модуль в Apache или как исполняемая программа через CGI. В случае запуска в виде модуля Apache, PHP работает особенно легко и быстро. В этом случае отсутствуют накладные расходы, связанные с созданием процессов, поэтому результат выдается быстро, и не требуется настраивать mod_perl для уменьшения расходования памяти сервера.

Кроме различных операций с содержимым Ваших страниц, с помощью PHP Вы можете формировать HTTP-заголовки, установить cookie, управлять аутентификацией и перенаправить пользователя на другую страницу. PHP предоставляет великолепные возможности по доступу к базам данных (и ODBC), а также интеграцию с различными внешними библиотеками. Это позволяет Вам делать все - от генерации PDF-документов до грамматического разбора в XML.

Операторы PHP вставляются прямо в Ваши Web-страницы, так что нет необходимости в специальных средах разработки (IDE). Вы начинаете блок PHP-кода тегом . (Вы можете сконфигурировать PHP так, что будут использоваться теги в стиле ASP: <% %> или теги вида .) Все, что находится между этими тегами будет интерпретироваться как PHP-код.

Синтаксис языка PHP подобен синтаксису C и Perl. Вы не должны объявлять переменные до их использования. Легко создаются массивы и хэши (ассоциативные массивы). PHP даже имеет какие-то зачатки объектно-ориентированного программирования, обеспечивая удобный способ организации кода и его инкапсуляции.

Хотя PHP быстрее всего работает в том случае, когда он встроен в Apache, на Web-сайте PHP имеются инструкции по его установке на Microsoft IIS и Netscape Enterprise Server. Если у Вас еще нет копии программного обеспечения для установки PHP, Вы можете скачать ее с официального Web-сайта (http://www.php.net/). Там же Вы найдете подробное руководство, в котором описаны все функции и особенности PHP.


Синтаксис PHP

С основами синтаксиса PHP Вы знакомы. Следующий код



echo "Hello, World!";
?>


дает



Hello, World!

Имена переменных обозначаются знаком $. То же самое "Hello, World!" можно получить следующим образом:



$message = "Hello, World!";
echo $message;
?>

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


$greeting = "Hello ";
$num = 3 + 2;
$num++;
echo "$greeting $num people!";
?>

даст



Hello 6 people!

PHP имеет полный комплект операторов и они работают именно так, как Вы того ожидаете, особенно если у Вас имеется опыт работы с C или C++. При работе с PHP можно придерживаться простого правила: "Если сомневаешься, попробуй: скорее всего оно именно так и работает."

Так же, как и в Perl, строка, заключенная в двойные кавычки, означает, что встречающиеся в этой строке переменные будут заменены их значениями, в то время как если строка заключена в одинарные кавычки, такая замена не производится. Так



$name = 'Susannah';
$greeting_1 = "Hello, $name!";
$greeting_2 = 'Hello, $name!';
echo "$greeting_1n";
echo "$greeting_2n";
?>

даст



Hello, Susannah!
Hello, $name!

Обратите внимание на то, что n в строке означает переход к новой строке, совсем как в Perl или в C. Однако это работает только в тех строках, которые взяты в двойные кавычки.

Переменные

PHP обеспечивает доступ к переменным окружения как к регулярным переменным (as regular variables), включая переменные окружения, которые установлены сервером для CGI-программ (даже если Вы запустили PHP как модуль). Поэтому, если на странице "http://www.domain.com/farm/cattle/cow-cow.cow.html" содержится PHP-код



echo "[$REQUEST_URI]";
?>

то на выводимой странице Вы увидите [/farm/cattle/cow-cow-cow.html]

Массивы

Индексы массивов (как обычных, так и ассоциативных) задаются в квадратных скобках ([ и ]):



$fruit[0] = 'banana';
$fruit[1] = 'papaya';
$favorites['animal'] = 'turtle';
$favorites['monster'] = 'cookie';

Если Вы присваиваете какое-то значение элементу массива, не указывая номера элемента (оставляете поле индекса пустым), PHP присоединяет объект к концу массива. Так для приведенного выше примера с массивом $fruit можно достичь того же самого результата, написав:



$fruit[] = 'banana';
$fruit[] = 'papaya';

Вы можете также применять многомерные массивы:



$people['David']['shirt'] = 'blue';
$people['David']['car'] = 'minivan';
$people['Adam']['shirt'] = 'white';
$people['Adam']['car'] = 'sedan';

Создать массив можно также путем вызова функции array():



$fruit = array('banana','papaya');
$favorites = array('animal' => 'turtle',
'monster' => 'cookie);

или



$people = array ('David' => array('shirt' => 'blue',
'car' => 'minivan'),
'Adam' => array('shirt' => 'white',
'car' => 'sedan'));

Встроенная функция count() выдает число элементов в массиве.



$fruit = array('banana','papaya');
print count($fruit);

выдаст



2

Управляющие конструкции

Вы можете использовать операторы цикла, такие как for и while. В результате выполнения оператора



for ($i = 4; $i < 8; $i++) {
print "I have eaten $i bagels today.n"; }

получим



I have eaten 4 bagels today.
I have eaten 5 bagels today.
I have eaten 6 bagels today.
I have eaten 7 bagels today.

Тот же самый результат даст



$i = 4; while ($i < 8) {
print "I have eaten $i bagels today.n";
$i++;
}

Вы можете также использовать конструкции с if и elseif:



if ($user_count > 200) {
print "Сайт сейчас перегружен!";
} elseif ($user_count > 100) {
print "Сайт активно используется!";
else {
print "Сайт свободен - подключились только $user_count пользователей.";
}

Сформулированное выше правило "Пробуй!" вполне применимо и в части управляющих конструкций. Вы можете использовать конструкции с switch, do...while и даже ?:.

Простая форма


Одна из наиболее удобных и приятных особенностей PHP - это его способность автоматически передавать значения переменных из форм в переменные PHP. Это очень облегчает обработку форм.

Например, Вы обрабатываете форму, которая имеет поле ввода следующего вида:





и в то время, когда выводится страница с этим PHP-кодом, переменная $name имеет значение Glen Morris.

Тогда Вы можете вывести это значение на экран:



echo "Hi $name!";

или вставить проверку в условном операторе:



if ($name == "Glen Morris") { echo "Please check your email."; }

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

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

Вывод формы


Первая функция служит для вывода формы:



function display_form() {
global $PHP_SELF;
?>

Имя:



Любимый сорт сыра: Very soft French Brie
Farmhouse English Cheddar
Italian Buffalo Mozzarella


Когда Вы предпочитаете есть сыр:
На завтрак
В обед
На ужин
Поздно ночью





}
?>

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

Во-первых, это переменная $PHP_SELF. $PHP_SELF - это удобная форма ссылки, ее значение равно URL текущей страницы. Мы задаем атрибуту TARGET этой формы значение $PHP_SELF, потому что мы хотим, чтобы эта страница обрабатывала форму. Используя $PHP_SELF вместо реального пути к файлу страницы, мы получаем возможность переименовывать или перемещать наш скрипт, не заботясь о внесении соответствующих изменений каждый раз, как только мы заново используем тот же кусок кода.

Кстати, строка



global $PHP_SELF;

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

Во-вторых, как Вы могли заметить, мы свободно переходим в режим PHP и обратно даже внутри функции. Это полностью законно. PHP умеет игнорировать HTML-код и выделять только PHP-блоки. Это быстрее, чем оставаться в режиме PHP и организовывать вывод HTML, используя echo.

Теперь обратите внимание на атрибут NAME тега INPUT. Вы видите, что в случае, если тип поля ввода есть CHECKBOX, то после наименования поля (в данном случае times[]) стоит пара квадратных скобок, Если же тип поля ввода есть RADIO, то после имени (cheese) таких скобок нет. Это объясняется тем, что поля типа RADIO служат для выбора одного и только одного из вариантов ответа, поэтому значением переменной cheese будет одна строка. Поля типа CHECKBOX (их несколько) позволяют выбрать (или не выбрать) каждый из возможных вариантов, поэтому для сохранения ответов пользователя PHP должен запомнить их в виде массива. Добавление [] после имени переменной times и указывает на то, что в данном случае это массив, а не единичная переменная.

И, наконец, в этом куске кода имеется скрытая переменная с именем stage. Мы используем $stage чтобы сказать программе, хотим ли мы вывести форму или отобразить результаты обработки ответов.

Обработка формы


Теперь рассмотрим функцию process_form() обработки формы после ввода ответов пользователем.



function process_form() {
global $name;
global $cheese;
global $times;


if ($cheese == 'brie') { $cheese_message = 'I love brie.'; }
elseif ($cheese == 'cheddar') { $cheese_message = 'Cheddar is awesome!'; }
else { $cheese_message = 'Fresh mozzarella is divine.'; }


$favorite_times = count($times);

if ($favorite_times <= 1) {
$times_message = 'You should eat cheese more often.';
} elseif ($favorite_times > 1 && $favorite_times < 4) {
$times_message = 'Those are good times to eat cheese.';
} else {
$times_message = 'You are eating too much cheese.';
}


echo "Hello $name.";
echo "$cheese_message $times_message";
}


?>

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

Далее используется функция count() для того, чтобы подсчитать, сколько раз в день ест сыр человек, ответивший на наши вопросы. Если в предыдущем случае мы должны были сравнить ответ посетителя с каждым из возможных значений переменной $cheese, то при анализе значений переменной $favorite_times можно воспользоваться операциями сравнения "меньше чем" и "больше чем". Знаки && в условном операторе "$favorite_times > 1 && $favorite_times < 4" означают логическую операцию "И" ("and"). То есть $favorite_times должно одновременно быть больше 1 и меньше 4 для того, чтобы условие было выполнено.

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

Организуем вывод формы


Теперь, когда мы имеем эти две функции, остается добавить только маленький кусочек кода для того, чтобы вызвать их в нужной последовательности. Итак, после (или ниже) записи тела функций display_form() и process_form() добавляем:




if (empty($stage)) { display_form(); }
else { process_form(); }


?>

Здесь мы вначале проверяем, задано ли какое-либо значение переменной $stage. В PHP переменная считается пустой (empty), если ее значение не задано явно (то есть ей никогда не придаются значения по-умолчанию), или ей задано пустое значение (переменной присвоено значение пусто, если она приравнена пустой строке - '', или ей присвоено значение 0). Когда посетитель впервые попадает на нашу страницу, переменная $stage пуста. Поэтому на страницу будет выводиться форма с нашими вопросами; в противном случае мы должны обработать заполненную форму.

И это все, что мы хотели сказать об обработке простых форм с помощью PHP.

Многостраничные формы

Таких конструкций в HTML, вообще говоря, не существует. Но, в конце концов, если мы можем создать форму на одной странице, то почему бы не создать форму размером в несколько страниц?

К сожалению, протокол HTTP не имеет встроенных механизмов переноса данных с одной страницы на другую, поскольку в нем не определено понятие серии страниц. К счастью, с помощью нескольких хитрых трюков и ряда удобных встроенных функций языка PHP мы можем обойти это ограничение без больших затруднений. Основная идея очень проста - мы сохраняем в скрытых переменных все значения, введенные посетителем в поля формы на предыдущей странице(ах) и используем их затем на последующих страницах. Таким образом, нужная информация сохраняется при переходе со страницы на страницу. Реализация этой идеи - самое первое (хотя, возможно, и не самое лучшее) решение поставленной задачи, но это самый простой способ, и он не требует использования баз данных или cookies.

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

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

В результате мы будем иметь три функции вместо двух. В дополнение немного изменим их названия, чтобы они соответствовали изменившемуся содержанию. Функция display_form() теперь будет называться display_name().



function display_name() {
global $PHP_SELF;


?>

Name:




}
?>

Она идентична ранее введенной функции за тем исключением, что мы удалили все вопросы, кроме первого, и изменили название следующего этапа на "cheese", чтобы дать более точное указание на то, что будет делаться на следующем этапе.

Далее идет функция display_cheese().



function display_cheese() {
global $PHP_SELF;
global $name;


?>

Ваш любимый сорт сыра:
Very soft French Brie
Farmhouse English Cheddar
Italian Buffalo Mozzarella


Когда Вы предпочитаете есть сыр:
на завтрак
на обед
на ужин
поздно ночью






}
?>


Этот код вам тоже уже знаком. Тут не никаких неожиданных изменений по сравнению с предыдущим вариантом. Просто, перед тем как изменить значение скрытой переменной, используемой для определения этапа перемещения по нашим страницам, мы еще запоминаем имя и значение переменной $name, то есть ту часть информации, которая была получена на предыдущем этапе. При этом мы не просто напрямую передаем это значение, а пропускаем его через функцию PHP, которая называется htmlspecialchars(). Стандарт HTML определяет четыре символа, которые не могут использоваться в других целях, кроме как в тегах для разметки документов : <, >, ", и &. По этой причине, для того чтобы убедиться, что мы не поставим браузер пользователя в затруднительное положение, мы пропускаем $name через функцию htmlspecialchars(), чтобы некто, имеющий имя "Bret & Jeff", так и остался "Brett & Jeff."

Теперь, когда передается информация, введенная в эту форму, мы не потеряем ни одной части этой информации.

В результате этого трюка у нас нет необходимости что-либо менять в функции process_form(). Мы даже не меняем название функции. И в операторе, определяющем логику отображения страниц, мы добавляем только одну строку:



if (empty($stage)) { display_name(); }
elseif ($stage == 'cheese') { display_cheese(); }
else { process_form(); }
?>

Что мы видим? Все, что мы сделали, - добавили elseif в серединку между двумя предыдущими операторами. В этом прелесть использования переменной $stage. Если мы хотим добавить дополнительные страницы, нам нужно только написать новые функции для отображения того, что мы хотим, и еще по одной строке в оператор управления в соответствии с тем, когда эти страницы должны быть отображены.

Cookies


Примечания переводчика: 1) если Вы плохо представляете себе, что такое cookie, прочитайте очень хороший материал на эту тему "Что такое cookies и как с ними работать" Андрея Аликберова (http://www.citforum.ru/internet/html/cookie.shtml)
2) я не знаю русского эквивалента термину cookie (так же как и А.Аликберов), так что в тексте этот термин оставлен в английской транслитерации.

Установка и считывание cookies в PHP - это, можно сказать, подарок судьбы! Мы не хотим заниматься здесь агитацией в пользу cookie, но нельзя не сказать, что это очень удобный инструмент.

Для создания и модификации значения cookie используется функция PHP setcookie(). Функция setcookie() воспринимает до шести аргументов, в зависимости от того, как Вы собираетесь управлять значениями cookie и кто будет считывать ее значения.

Простейший способ установить cookie таков:



setcookie('name', 'bret');

Затем, для каждой последующей страницы на Вашем сайте, просматриваемой в течение данной сессии (пока пользователь не покинет сайт) переменная $name будет иметь значение 'bret' и его можно легко прочитать средствами PHP. Этот тип cookie известен как cookie-сессия, поскольку значение сохраняется в течение пользовательской сессии.

Если Вы хотите, чтобы значение cookie запоминалось браузером после того, как пользователь закончит сессию, Вы должны передать функции setcookie() третий параметр - дату истечения срока действия cookie. Поскольку PHP сформировался в основном в среде Unix, Вы должны представить время истечения срока действия cookie как число секунд, прошедших с 1 января 1970 г. Если Вы имеете опыт программирования для Unix, это не покажется Вам удивительным. Но, если Вы программировали только в среде Windows или Macintosh, Вы, может быть, удивитесь, что за чокнутый народ эти Unix-оиды.

Но не бойтесь. PHP имеет очень удобную функцию, mktime(). Вы указываете ей в качестве параметров (в указанном порядке) час, минуту, секунду, месяц, день и год, задающие тот момент времени, который Вы хотите представить в воспринимаемом UNIX формате, и mktime() возвращает Вам число секунд, прошедших с 1 января 1970 г. до указанного момента времени. Например, если Вы хотите, чтобы срок действия cookie истек 1 января 2000 г., Вы записываете:



$y2k = mktime(0,0,0,1,1,2000);
setcookie('name', 'bret', $y2k);
?>

Если Вы хотите изменить значение cookie на новое, Вы можете просто переписать его (ее?) значение. Таким образом, даже если браузер уже посылал значение cookie серверу на одной из предыдущих страниц, вполне возможно сообщить серверу, что в действительности Вас зовут "jeff."



$y2k = mktime(0,0,0,1,1,2000);
setcookie('name', 'jeff', $y2k);
?>

Обратите внимание на то, что при этом не меняется значение переменной $name. Оно устанавливается при загрузке страницы. Если Вы хотите чтобы значение переменной изменялось синхронно с изменением значения cookie, Вы должны изменить код следующим образом:



$name = 'jeff';
$y2k = mktime(0,0,0,1,1,2000);
setcookie('name', $name, $y2k);
?>

Следующие два параметра функции setcookie() позволяют Вам задать путь и имя домена того, кто может прочитать значение Вашего cookie. По умолчанию только страницы, расположенные в том же каталоге или ниже в структуре подкаталогов того сервера, который установил cookie, могут прочитать его (ее??) значение. Это делается из соображений безопасности. Однако, если у Вашего сервера два доменных имени: "www.domain.com" и "other.domain.com", и Ваш экаунт позволяет Вам обслуживать страницы из каталога ~/myhome, Вы должны вызывать функцию setcookie() следующим образом:



setcookie('name', 'jeff', $y2k, '~/myhome', '.domain.com');
?>

Последний параметр функции setcookie(), который мы никогда не использовали, требует, чтобы значение cookie передавалось только на те Web-сервера, которые используют безопасный протокол соединения, такой как SSL. Если Вам это нужно, то задайте для шестого параметра значение 1.

Удалить cookie тоже очень просто, достаточно передать функции setcookie() имя cookie и PHP сделает все остальное:





В заключение нужно сделать еще одно замечание, касающееся использования cookie. В силу того, как организована обработка cookies в протоколе HTTP, необходимо установить значения всех cookie до вывода какого-либо текста. Если сделать наоборот, PHP выдаст Вам предупреждение и значение cookie не будет послано. Вот так правильно:



setcookie('name', 'jeff');
echo "Hello Everyone!";
?>

А так - нет:



echo "Hello Everyone!";
setcookie('name', 'jeff');
?>


Время и даты


В PHP имеется целый набор удобных функций для вывода дат и времени, а также для различных преобразований данных о времени и дате.

Для того, чтобы отобразить в определенном формате дату и время, воспользуйтесь функцией date(). Для нее требуется задать два аргумента: описание формата вывода даты и указание того момента времени, информацию о котором Вы хотите вывести. Указание на момент времени дается в форме "число секунд с начала 1970 года". (Если Вы хотите вывести текущее время, Вы можете воспользоваться функцией time(), которая возвращает значение текущего времени.) Функция date() имеет массу опций форматирования, таких же как у функции strftime() в C или у функции POSIX::strftime() в Perl.



$birthday_stamp = mktime(19,45,0,3,10,1975);
$birthday_formatted = date('F d, Y - g:i a',$birthday_stamp);


echo "Давид родился $birthday_formatted."
?>

дает

Давид родился March 10, 1975--7:45 p.m.

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





Этот кусок кода служит для вывода на экран списка выбора, включающего 10 вариантов ответа -- сегодня и каждый из последующих 9 дней. До начала выполнения цикла мы сохраняем текущее время в переменной $d. В каждом варианте выбора, задаваемом строкой

Опубликовано на Порталусе 28 сентября 2004 года

Новинки на Порталусе:

Сегодня в трендах top-5


Ваше мнение?



Искали что-то другое? Поиск по Порталусу:


О Порталусе Рейтинг Каталог Авторам Реклама