RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

FAQ по PHP

Автор: fido7.ru.php Сайт: http://fido7.ru     Рейтинг: N/A из 7       <<НАЗАД
   
   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_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. Если ваш браузер отобразил нечто табличное с большим количеством непонятной информации, примите поздравления. Если вместо этого ваши старания не увенчались успехом, попробуйте прочитать эту статью немного более внимательно.
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool