Techniques de Programmation pour Internet

Année Spéciale Informatique

ENSIMAG 2002 - 2003

James L. Crowley

Séance 8

18 mars 2003

Les Scripts en PHP

Plan :

Php

PHP est un langage de script interprété par le serveur. (A l'opposition au langage interprété par le Navigateur comme «JavaScript»)

Suite à l'exécution, PHP rend du code HTML.

Des documentation sont disponibles à PHP Reference Manual PHP et MySQL sont une couple idéal pour des sites web.

PHP et MySQL

MySQL est un petit serveur de base de donnée relationnelle. MySQL interprète les commande de SQL (ANSI). Il compile sur les plusieurs plates-formes (UNIX, Windows, etc.). Sur Unix, il exploit les « threads » pour une gain important d'efficacité. MySQL peut être exécuté sur Windows NT et comme une procès normale de Windows 95/98. (Attention, les threads de Windows 95 ont un problème de fuite de mémoire).

PHP est une logiciel ouvert que support authentification des utilisateurs, XML, les image dynamique, WDDX, mémoire partagé, et création des documents PDF.

Voici un exemple de PHP.

<H1> lets test PHP </H1> <H2> Try Hello World</H2> <html> <body> <?php $myvar = "Hello World"; echo $myvar; ?> </body> </html> </pre>

La partie :

<?php $myvar = "Hello World"; echo $myvar; ?> est envoyé au PHP par APACHE. Le symbole <?php indique le début d'un bloc de code. Le symbole ?> indique le fin. Des expressions PHP peuvent être placés n'importe ou dans le code.

Le symbole « ; » sert de marquer pour les fins de commandes. PHP n'interprète pas les sauts de lignes. Donc, <?php $myvar = "Hello World"; echo $myvar; ?> et <?php $myvar = "Hello World"; echo $myvar; ?>

sont strictement équivalent. Le symbole de fermeture ?> vaut un « ; ».

Variables

Les variable, comme $myvar commence par une « $ ». Ils peuvent représenter les chaînes, les nombres ou les tableaux.

PHP utilise une syntaxe proche de C, C++ et Unix. Par exemple :

<?php

echo "This is a test"; // This is a one-line c++ style comment

/* This is a multi line comment

yet another line of comment */

echo "This is yet another test";

echo "One Final Test"; # This is shell-style style comment

?>

Les noms et mots réservé ne sont pas sensible au majuscules. Par exemple :

See the environmental variable $HTTP_USER_AGENT

<?php echo "You are using <P>"; ?>

<?php echo $HTTP_USER_AGENT; ?>

Mélange de PHP et HTML

Il est possible de mélanger l'HTML au milieu de l'PHP. Voici un exemple :

to get a list of environment variables with phpinfo()

<?php phpinfo()?>

Test an environment variable

"strstr()" searches for a string (arg2) in arg1.

<?php

if(strstr($HTTP_USER_AGENT,"MSIE"))

{

echo "You are using Internet Explorer<br>";

}

?>

You can jump in and out of PHP!

<?php

if(strstr($HTTP_USER_AGENT,"MSIE")) {

?>

<center><b>You are using Internet Explorer</b></center>

<?php} else {?>

<center><b>You are not using Internet Explorer</b></center>

<?php}?>

PHP peut interpréter les données d'une FORM.

Php can allow form actions from within a second HTML (php) file

<form action="action.php3" method="POST">

Your name: <input type=text name=name>

You age: <input type=text name=age>

<input type=submit>

</form>

Avec le fichier : action.php3

Hi <?php echo $name?>. You are <?php echo $age?> years old.

PHP décode les arguments et construits un « hash », automatiquement. (Donc les blocs de codes magique de PERL ne sont pas nécessaire en PHP.

Avec les « add-ins » on peut trouver 700 fonctions en PHP.

PHP a les types de variables suivants :

Array, floating-point numbers , integer , object et string

Les types de variables sont déterminés automatiquement par le contexte, pendant l'exécution. Mais il est toujours possible de forcer un typage avec le commande settype() .

Les chaînes de caractères.

Les chaînes sont spécifiés avec les quotes «"» et «' » comme en PERL.

Avec le quote «"» les variables sont interprétés.

Comme avec C et PERL, le caractère « \ » sert de échappement pour les caractères spéciales.

Exemples :

\n linefeed (LF or 0x0A in ASCII)

\r carriage return (CR or 0x0D in ASCII)

\t horizontal tab (HT or 0x09 in ASCII)

\\ backslash

\$ dollar sign

\" double-quote

\[0-7]{1,3} Les caractères en octal

\x[0-9A-Fa-f]{1,2} Les caractères en hexadécimal.

Il est possible de échapper des autres caractères, mais ceci génère une message d'erreur.

On peut également échapper avec « ' ». Dans ce cas, les seul échappement sont « \\ » et « \' »

Les variables ne sont pas interprétés à l'intérieur des « \' ».

On peut également délimiter les chaînes avec « <<<xxx » ou xxx représente n'importe que chaîne

Le chaîne est terminé par xxx sur un debut de ligne. Le chaîne xxx doit contenir que des alphanumérique.

Exemple :


<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

Voici une deuxième exemple :

/* More complex example, with variables. */
class foo {
var $foo;
var $bar;

function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}

$foo = new foo();
$name = 'MyName';

echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>

Comme avec PERL, les chaînes peuvent être concaténés par '.' (dot). L'opérateur « + » ne marcherai par pour le concaténation. On peut obtenir le « nième » caractère d'un chaîne par indexation numérique.

Voici un exemple :

<?php

/* Assigning a string. */

$str = "This is a string";

/* Appending to it. */

$str = $str . " with some more text";

/* Another way to append, includes an escaped newline. */

$str .= " and a newline at the end.\n";

/* This string will end up being '<p>Number: 9</p>' */

$num = 9;

$str = "<p>Number: $num</p>";

/* This one will be '<p>Number: $num</p>' */

$num = 9;

$str = '<p>Number: $num</p>';

/* Get the first character of a string */

$str = 'This is a test.';

$first = $str[0];

/* Get the last character of a string. */

$str = 'This is still a test.';

$last = $str[strlen($str)-1];

?>

See <A Href="http://www.php.net/manual/langref.php">PHP Reference Manual</A> for more information.

</body>

</html>