| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Часто задаваемые вопросы (FAQ) по PHP
1. Общие вопросы
1.1 Что такое PHP?(перевод документации) "PHP, что означает 'PHP: Hypertext Preprocessor' ('PHP: Предварительный Обработчик Гипертекста'), является внедряемым в HTML языком описания скриптов. Многое из его синтаксиса было позаимствовано из C, Java и Perl с добавлением некоторых уникальных, специфичных для PHP, особенностей. Целью создания языка является предоставление web-разработчикам возможности быстрого создания динамически генерируемых страниц."
(ответ ivan kovalenko, 2:5057/53)
1.2 Где взять PHP?Hа сайте производителя: http://www.php.net/downloads.php
(ответ ivan kovalenko, 2:5057/53)
1.3 Как расшифровывается 'PHP'?'PHP' - это рекурсивный акроним (аналогия с 'Linux' - 'Linux Is Not UniX') словосочетания 'PHP: Hypertext Preprocessor' ('PHP: Предварительный Обработчик Гипертекста'), что успешно отражает общую идеологию его функционирования. До версии PHP 3.0 название было несколько иным ('PHP/FI') и расшифровывалось как 'Personal Home Page tools / Forms Interpreter' ('Утилиты для Домашней Страницы / Интерпретатор Форм').
(ответ ivan kovalenko, 2:5057/53)
2. Сетевые дела
2.1 Почему с'апложенные jpeg-файлы не отобpажаются? (бьются?) Веб-сервер - русский АпачВсе дело в том, что русский Апач по умолчанию производит перекодировку
файлов. <Location>
CharsetRecodeMultipartForms Off
</Location>
(ответ Дмиртия Селезнева, 2:5095/6)
2.2 Как опpеделить валидность e-mail?Функция, предложенная Maxim Matyukhin
function valid_mail ($email) {
if (eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-\.]+)\.([a-z]{2,3}$)",
$email, $check)) {
if (getmxrr($check[1] . "." . $check[2]) return "Valid";
else return "No MX for " . $check[1] . "." . $check[2];
}
else return "Badly formed address";
}
Есть другой способ, использующий сокеты, предложенный Jon S. Stevens <?php
/*
By: Jon S. Stevens jon@clearink.com
Copyright 1998-1999 Jon S. Stevens, Clear Ink
This code has all the normal disclaimers.
It is free for any use, just keep the credits intact.
*/
function validateEmail ( $email )
{
global $SERVER_NAME;
$return = array ( false, "" );
list ( $user, $domain ) = split ( "@", $email, 2 );
$tld = $domain;
if ( checkdnsrr ( $tld, "MX" ) )
{
if ( getmxrr ( $tld, $mxhosts, $weight ) )
{
for ( $i = 0; $i < count ( $mxhosts ); $i++ )
{
$fp = fsockopen ( $mxhosts[$i], 25 );
if ( $fp )
{
$s = 0;
$c = 0;
$out = "";
set_socket_blocking ( $fp, false );
do
{
$out = fgets ( $fp, 2500 );
if ( ereg ( "^220", $out ) )
{
$s = 0;
$out = "";
$c++;
}
else
if ( ( $c > 0 ) && ( $out == "" ) )
{ break; }
else
{ $s++; }
if ( $s == 9999 ) { break; }
} while ( $out == "" );
set_socket_blocking ( $fp, true );
fputs ( $fp, "HELO $SERVER_NAME\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "MAIL FROM: <info@".$tld.">\n");
$output = fgets ( $fp, 2000 );
fputs ( $fp, "RCPT TO: <$email>\n" );
$output = fgets ( $fp, 2000 );
if ( ereg ( "^250", $output ) )
{
$return[0] = true;
}
else
{
$return[0] = false;
$return[1] = $output;
}
fputs ( $fp, "QUIT\n" );
fclose( $fp );
if ( $return[0] == true )
{ break; }
}
}
}
}
return $return;
}
?>
2.3 Как опpеделить валидность URL?Лично я использую следующую функцию: <?php
function check_url($url) {
if (eregi( '^http://', $url)) {
$urlArray = parse_url($url);
if (!$urlArray[port]) $urlArray[port] = '80';
if (!$urlArray[path]) $urlArray[path] = '/';
$sock = fsockopen($urlArray[host], $urlArray[port],
&$errnum,&$errstr);
if (!$sock) $res = 'DNS';
else {
$dump .="GET $urlArray[path] HTTP/1.1\r\n";
$dump .="Host: $urlArray[host]\r\nConnection: close\r\n";
$dump .="Connection: close\r\n\r\n";
fputs($sock, $dump);
while ($str = fgets($sock, 1024)) {
if (eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", $str))
$res[code] = trim(eregi_replace('^http/[0-9]+.[0-9]+
([0-9]{3})
[a-z ]*', "\\1", $str));
if (eregi("^Content-Type: ", $str))
$res[contentType] = trim(eregi_replace("^Content-Type: ",
"",
$str));
}
fclose($sock);
flush();
return $res[code];
}
} else $res = "N/A";
return $res;
}
?>
(ответ Дмиртия Селезнева, 2:5095/6)
3. PHP и БД
3.1 Имеем MySQL. Добавляем запись с автоинкрементным уникальным индексом. Как узнать значение последнего индекса?Есть замечательная функция mysql_insert_id ([идент. соединения]). Возвращает целое значение, которое и есть необходимый идентификатор, сгенерированный полем AUTO_INCREMENT в последем операторе INSERT. Подробно см. в доках по функциям PHP.
(ответ Дмиртия Селезнева, 2:5095/6)
4. PHP на Win32
4.1 Скрещивание PHP/Win32 и Apache/Win32Предполагается, что вы уже установили PHP и Apache. Для внесения пущей
ясности положим, что PHP установлен в каталоге 'C:\HTTP\php', а Apache в 'C:\HTTP\apache',
причем Apache уже настроен и без лишней ругани отзывается на имя localhost, а
необходимые изменения внесены в php.ini. Теперь определимся, каким образом PHP
будет функционировать: в виде CGI-приложения [1] или как SAPI-модуль Apache [2]
(разбор полетов на предмет различий см.) 1. Hастройка PHP в качестве CGI-приложения. Откройте Notepad'ом (FAR'ом, NC, WinCmd, и т.п.) файл C:\HTTP\apache\conf\httpd.conf
и найдите в нем и раскомментируйте (уберите значок # в начале строки) следующие
строчки: #AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
,затем вставьте после них это: ScriptAlias "/__php_dir__/" "C:/HTTP/php/"
Action application/x-httpd-php "/__php_dir__/php.exe"
2. Hастройка PHP в качестве модуля Apache. Добавьте в файл C:\HTTP\apache\conf\httpd.conf строчки: LoadModule php4_module c:/HTTP/php/sapi/php4apache.dll
AddType application/x-httpd-php .php
Тестирование Теперь перезапустите Apache. Создайте в каталоге C:\HTTP\apache\htdocs
файл test.php следующего содержания: <?php phpinfo(); ?> Запустите браузер и перейдите на http://localhost/test.php. Если ваш браузер отобразил нечто табличное с большим количеством непонятной информации, примите поздравления. Если вместо этого ваши старания увенчались 'Error 500 - Internal Server Error', попробуйте прочитать эту статью немного более внимательно.
(ответ ivan kovalenko, 2:5057/53)
Запись в файл$f=fopen("file.txt","w");
flock($f,LOCK_EX);
fwrite($f,$defPack);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
Рубрика: PHP
Релиз Microsoft Silverlight 2.0. Что новог....
Наши коллеги из Редмонда сообщают радостную для разработчиков RIA-приложений на .NET новость — Silverlight 2.0 выходит в свет 14 октября. Официальный документ можно зачитать здесь. Для тех, кто заинтересован в возможностях технологии, приведу обозначенный список основных фич.
Подробнее... |
Рубрика: Microsoft Silverlight
| Добавлено: 14.10.2008
XML документация в C#.
Сегодня речь пойдет об одной интересной и полезной возможности языка С#, которая поможет нам в документировании кода. Она называется «XML документация» или «Документирующие комментарии XML». Это такие специальные теги XML, которые содержаться в комментариях и описывают свойства или методы в конкретном файле. Так вот, есть по крайней мере три веских причины, почему всегда следует заполнять XML комментарии.
Подробнее... |
Рубрика: XML в .NET
| Добавлено: 08.10.2008
Курсоры в MySQL 5.
Начиная с 5-ой версии, MySQL имеет возможность создавать курсоры. Курсор — это виртуальная таблица, предоставляющая альтернативный способ просмотра табличных данных. Курсор не содержит данных, а лишь ссылается на них из других таблиц. Из этого вытекает ряд особенностей, но об этом ниже.
Подробнее... |
Рубрика: MySQL
| Добавлено: 08.10.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|