  PHP

David Sklar (sklar@student.net) is the CTO of Student.Net Publishing.
Adam Trachtenberg (adam@student.net) is the Vice President for Production of Student.Net Publishing. 
 . 

          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     ?>. (   PHP ,       ASP: <% %>    <SCRIPT LANGUAGE="php"></SCRIPT>.) ,         PHP-. 

  PHP   C  Perl.        .      ( ). PHP   -  - ,        . 

 PHP      ,     Apache,  Web- PHP       Microsoft IIS  Netscape Enterprise Server.           PHP,       Web- (http://www.php.net/).      ,        PHP. 

 PHP

   PHP  .   


<?php
echo "Hello, World!";
?>

 


Hello, World!
    $.    "Hello, World!"    : 


<?php
$message = "Hello, World!";
echo $message;
?> 
 ()     . ();     ,     :


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


Hello 6 people!
PHP         ,    ,         C  C++.    PHP    : " , :       ." 

 ,    Perl, ,    , ,          ,          ,    .  


<?php
$name = 'Susannah';
$greeting_1 = "Hello, $name!";
$greeting_2 = 'Hello, $name!';
echo "$greeting_1\n";
echo "$greeting_2\n";
?> 
 


Hello, Susannah!
Hello, $name!
   ,  \n       ,    Perl   C.       ,     . 



PHP          (as regular variables),   ,     CGI- (    PHP  ). ,    "http://www.domain.com/farm/cattle/cow-cow.cow.html"  PHP- 


<?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.     . 

,   ,      : 


<INPUT TYPE=TEXT NAME="name" VALUE="Glen Morris">
   ,      PHP-,  $name   Glen Morris. 

       : 


echo "Hi $name!"; 
     : 


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

      .        (  ,   CGI-,    ),    PHP-,         ,        . 

 


     : 


<?php
function display_form() {
  global $PHP_SELF;
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
:   <INPUT TYPE=TEXT NAME="name"><BR>

  : <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo Mozzarella


    :
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m"> 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n"> 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d"> 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l"> 


<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
<INPUT TYPE=SUBMIT VALUE="Thanks!"> 
</FORM>
<?php
}
?>

       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()      . 


<?php
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() : 


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


?> 

   ,   -   $stage.  PHP    (empty),       (       -),      (   ,      - '',     0).       ,  $stage .         ;        . 

  ,           PHP. 

  

   HTML,  ,  . ,   ,        ,          ? 

 ,  HTTP           ,        .  ,            PHP        .     -       ,        ()       .  ,         .    -   (, ,    )   ,     ,         cookies. 

   ,       $state,    .   ,           ,         . 

     ,    .    ,             . 

        .      ,     .  display_form()    display_name(). 


<?php
function display_name() {
 global $PHP_SELF;

?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
Name: <INPUT TYPE=TEXT NAME="name"><BR>
<INPUT TYPE=HIDDEN NAME="stage" VALUE="cheese">
<INPUT TYPE=SUBMIT VALUE="Thanks!">
</FORM>
<?php
}
?> 

       ,     ,  ,       "cheese",       ,      . 

   display_cheese(). 


<?php
function display_cheese() {
  global $PHP_SELF;
  global $name;

?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
   : 
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie 
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo Mozzarella


    : 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m"> 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n"> 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d"> 
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l"> 


<INPUT TYPE=HIDDEN NAME="name" VALUE="<?php echo htmlspecialchars($name); ?>">
<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
<INPUT TYPE=SUBMIT VALUE="Thanks!">
</FORM>
<?php
}
?>


     .          . ,       ,        ,        $name,     ,      .         ,      PHP,   htmlspecialchars().  HTML   ,       ,        : <, >, ",  &.   ,    ,         ,   $name   htmlspecialchars(),  ,   "Bret & Jeff",    "Brett & Jeff." 

,   ,    ,        . 

        -    process_form().      .   ,    ,     : 


<?php
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 .,  : 


<?php
$y2k = mktime(0,0,0,1,1,2000);
setcookie('name', 'bret', $y2k);
?> 
     cookie  ,      (?) .  ,       cookie      ,    ,      "jeff." 


<?php
$y2k = mktime(0,0,0,1,1,2000);
setcookie('name', 'jeff', $y2k);
?> 
   ,        $name.     .            cookie,      : 


<?php
$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()  : 


<?php
setcookie('name', 'jeff', $y2k, '~/myhome', '.domain.com');
?> 
   setcookie(),     , ,   cookie     Web-,     ,   SSL.    ,       1. 

 cookie   ,    setcookie()  cookie  PHP   : 


<?php setcookie('name'); ?> 
      ,   cookie.   ,    cookies   HTTP,     cookie   - .   , PHP      cookie   .   : 


<?php
setcookie('name', 'jeff');
echo "Hello Everyone!";
?> 
  - : 


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


 PHP          ,          . 

 ,        ,   date().      :         ,      .        "    1970 ". (     ,     time(),     .)  date()    ,      strftime()  C    POSIX::strftime()  Perl. 


<?php
$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. 

,       ,     ,          .   ,  ,   ,         ,       : 


<SELECT NAME="when">
<?php
$d = time();
for ($i = 0; $i < 10; $i++) {
echo '<OPTION VALUE="'.$d.'">'.date('F d',$d);
$d += 86400;
}
?>
</SELECT> 
         ,  10   --      9 .           $d.    ,   <OPTION>,  "value"        Unix,        ("July 27," "July 28,"   .)     (  <OPTION>),  $d   86,400 (    -- 24  * 60  * 60 ). 

  mktime()  date()       ,     . ,    ,      (    )   . -,  ,      : 


<?php

function display_form() {
  global $PHP_SELF;


$dotw = array('Sunday','Monday','Tuesday','Wednesday','Thursday',
     'Friday','Saturday');
$months = array( 1 => 'January','February','March','April','May','June',
                'July','August','September','October','November','December');
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
Find the first 
<SELECT NAME="dotw">
<?php
for ($i = 0; $i < 7; $i++) {
    echo "<OPTION> $dotw[$i]";
}
echo '</SELECT> after <SELECT NAME="month">';
for ($i = 1; $i <= 12; $i++) {
    echo "<OPTION VALUE=\"$i\"> $months[$i]";
}
echo '</SELECT> <SELECT NAME="day">';
for ($i = 1; $i <= 31; $i++) {
    echo "<OPTION> $i";
}
echo '</SELECT>, <SELECT NAME="year">';
$start_year = date('Y') - 10;
$end_year = $start_year + 20;
for ($i = $start_year; $i <= $end_year; $i++) {
    echo "<OPTION> $i";
}
echo '<INPUT TYPE="HIDDEN" NAME="stage" VALUE="process">';
echo '</SELECT> <INPUT TYPE="SUBMIT" VALUE="Do it!"7></FORM>';
}


?> 

      ,     .  $months   -,    ,      1,    0.        ,  ,     ,     display_form(),      PHP, -      .    $start_year  $end_year   date('Y')      ,   10        20   . 

      : 


<?php 
function process_form() {
    global $dotw;
    global $month;
    global $day;
    global $year;
    $timestamp = mktime(0,0,0,$month,$day,$year); 

    $next_dotw = '';
    $next_timestamp = $timestamp;


    while ($next_dotw != $dotw) {
      $next_timestamp += 86400;
      $next_dotw = date('l',$next_timestamp);
    }


    $formatted_first = date('F d, Y',$timestamp);
    $formatted_next = date('F d, Y',$next_timestamp);
    echo "The first $dotw after $formatted_first is $formatted_next.";
}
?> 

-,     ,   Unix.     ,     ,       ,       . 

       ,   "next day"     ,  .   ,  "next day"   86400  ( ,   24  * 60  * 60 )    . 

    , process_form()   : 

The first Sunday after June 25, 1999 is June 27, 1999. 

   ,     : 


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


?> 

          ,    ,  , ,         .   date()  mktime()           ,   Unix,      .  date()  mktime()          .         (Greenwich Mean Time - GMT),    gmdate()  gmmktime(). 

,   (  )    ,        4 ,   : 


<?php 
$today = mktime(12,0,0,6,25,1999);
echo '   '.date('g:i:s a, F d, Y',$today);
echo '';
echo '   '.gmdate('g:i:s a, F d, Y',$today);


?> 

    : 


   12:00:00 pm, June 25, 1999
   4:00:00 pm, June 25, 1999

 


PHP -          Web-.  ,             ,            ,     ,   -     . 

         PHP.      . PHP          : MySQL, Oracle, Microsoft SQL Server  .         .        .        IMAP, LDAP, PDF, SNMP, WDDX, XML   . 

 ,       PHP (    )     (http://www.php.net/). -  (http://www.php.net/manual/)      PHP   .      ,      ,  PHP.  ,          . 

          PHP,     ,                    PHP.    (http://www.php.net/support.php3)             .