Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Часто задаваемые вопросы (FAQ) по PHP

div.main {margin-left: 20pt; margin-right: 20pt} Часто задаваемые вопросы (FAQ) по PHP

FAQ взят из конференции fido7.ru.php, дополняется и пополняется из той же конференции, а также из других источников. 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ажаются? (бьются?) Веб-сервер - русский Апач

Все дело в том, что русский Апач по умолчанию производит перекодировку файлов.
Так, символ с кодом 0х00 он заменяет на пробел (символ с кодом 0х20).
Для борьбы с этим эффектом нужно добавить в конфигурационный файл Апача httpd.conf следующее:
<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_NAMEn" ); $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, "QUITn" ); 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.1rn"; $dump .= "Host: $urlArray[host]rnConnection: closern"; $dump .= "Connection: closernrn"; 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:HTTPphp', а Apache в 'C:HTTPapache', причем Apache уже настроен и без лишней ругани отзывается на имя localhost, а необходимые изменения внесены в php.ini. Теперь определимся, каким образом PHP будет функционировать: в виде CGI-приложения [1] или как SAPI-модуль Apache [2] (разбор полетов на предмет различий см.)

1. Hастройка PHP в качестве CGI-приложения.

Откройте Notepad'ом (FAR'ом, NC, WinCmd, и т.п.) файл C:HTTPapacheconfhttpd.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:HTTPapacheconfhttpd.conf строчки: LoadModule php4_module c:/HTTP/php/sapi/php4apache.dll AddType application/x-httpd-php .php

Тестирование

Теперь перезапустите Apache. Создайте в каталоге C:HTTPapachehtdocs файл test.php следующего содержания:
<?php phpinfo(); ?>

Запустите браузер и перейдите на http://localhost/test.php. Если ваш браузер отобразил нечто табличное с большим количеством непонятной информации, примите поздравления. Если вместо этого ваши старания увенчались 'Error 500 - Internal Server Error', попробуйте прочитать эту статью немного более внимательно.

(ответ ivan kovalenko, 2:5057/53)

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте