Généralités

Dans cette page, je donne des exemples d'appel de fonctions ecrites en PHP, dont les arguments sont saisis par le client, à partir d'un formulaire. Pour bien comprendre comment écrire des formulaires, faire passer des données aux fonctions, construire des fonctions qui traitent les chaînes, les tableaux, vous consulterez le cours de Dominique Gonzalez, de l'université Lille 3, qui contient de nombreux exemples simples et des exercices corrigés :

 Lien externe : PHP, une initiation

Ici, je me contente d'insister sur quelques différences entre le langage C et le PHP.

Syntaxe des fonctions en PHP et saisie des arguments par le client

Les fonctions se construisent comme en c, mais il y a une différence, pour le passage des arguments par valeurs ou par références. Dans les fonctions du PHP, les arguments d'une fonction sont passés par valeurs (par défaut)

Contrairement au langage c, dans lequel les chaînes de caractères sont passées par référence, 'en PHP, il faut le demander en faisant précéder l'argument par le symbole &.

Exemple interactif d'une fonction dont l'argument est saisi en utilisant un formulaire

Pour saisir les arguments d'une fonction dans une page, on utilisera un formulaire. Voici un exemple interactif, dans lequel on saisit l'argument de la fonction abs(val) avec un champ d'édition d'un formulaire. Commencez par regarder le script postexemple.php, que j'ai placé dans le fichier postexemple.txt :

fichier postexemple.txt, qui contient la source postexemple.php

L'argument $int de la fonction val, est saisi par le formulaire du fichier exemple.html, que vous pouvez consulter dans le fichier exemple.txt :

fichier exemple.txt, qui contient la source du fichier exemple.html

La fonction retourne $f=val si val est positif, ou $f=-val, si val est négatif : Exécution de la fonction abs(val) avec une valeur de l'argument "val" de votre choix :

exemple.html : saisie de $var et calcul de $f=fon($var)

Vous remarquerez que si vous entrez une chaîne de caractères qui n'est pas un nombre, le résultat obtenu est assez surprenant! Cela provient d'une différence assez fondamentale entre le langage C et le langage PHP. En C, on doit déclarer une grandeur avec son type, avant de l'affecter. En PHP, on ne déclare pas (en général) les variables, et c'est leur affectation qui détermine le type de celle-ci.

Ainsi, si vous entrez la valeur -5*6 dans le champ d'édition pour la variable val, l'instruction $val="-5*6"; la considère comme une chaîne de caractères, et le résultat affiché par la fonction abs(val) est 5. Si vous écrivez $val=-5*6; le membre de droite étant numérique, les opérations sont effectuées, et la fonction abs(val) retourne 30. Vous pouvez vérifier que si vous entrez un entier, ou un nombre décimal, la chaîne $val aura le type "integer" ou "double".

L'exemple ci-dessus peut être élargi aux fonctions de plusieurs variables sans difficultés.

La sécurité et l'exécution d'applications pour le shell, unix, ou windows

Comme dans le langage C, on peut utiliser dans un script en PHP, des fonctions comme shell_exec, system, exec, execthru, pour exécuter des .exe situés sur le serveur. Pour des raisons de sécurités, des paramètres come safe_mode, safe_mode_exec_dir... servent pour que l'on puisse activer ou non, des fichiers exécutables d'un répertoire. Par défaut, le paramètre booléen safe_mode est sur off.

Dans le fichier de configuration php.ini, que vous pouvez lister par la commande phpinfo(), vous chercherez la ligne :

safe_mode = Off

Vous la remplacerez par :

safe_mode = On

Il faut encore donner un dossier pour le paramètre :

safe_mode_exec_dir =

Si l'on ne fait pas figurer de dossier dans ce paramètre, c'est le dossier racine qui sera le dossier qui permettra d'exécuter les .exe qu'il contient. Si on veut interdire tous les exécutables, écrire :

p.ex. safe_mode_exec_dir = /dummy

(où dummy est un dossier qui n'existe pas).

remarque: le safe mode n'autorise pas une commande utilisant ".." pour remonter hors de ce dossier Pour plus de détails, consultez le manuel sur la sécurité avec le lien ci-dessous :

 Lien externe : manuel sur les modes de sécurité "safe_mode", pour l'exécution d'applications du shell

Voici un petit script, qui essaye d'exécuter le programme hello.exe, qui écrit "bonjour tout le monde"

sortie :

Vous remarquerez que le fichier hello.exe n'a pas l'autorisation d'être exécuté sur le serveur mutualisé studyvox.biwi.ca Il est dangeureux de permettre l'exécution de .exe sur un serveur, car celui-ci peut être vandalisé! Pour une sécurité à cent pour cent de votre PC et de celle du serveur studyvox.biwi.ca, j'ai choisi une méthode un peu plus contraignante, pour l'exécution des commandes (elle sera exposée dans la page suivante de cette rubrique outils sur le PHP)

Les fonctions de recherche et de remplacement de motifs dans les chaînes

Nous avons décrit la manière de construire des "modèles", ou "expressions régulières" dans la page précédente. Il existe des fonctions du PHP, qui permettent de les utiliser comme motifs, pour la recherche et le remplacement de sous-chaînes dans des chaînes. Ce sont des fonctions comme :

ereg($regex,$chainecible)

eregi($regex,$chainecible)

preg_match($regex,$chainecible,$chaineresu)

preg_replace($regex,$rep,$chainecible)

Il y en a beaucoup d'autres, comme esplit, espliti, egrep, egrepi, preg_match_all, p_rep_callback...

Quand le nom de la fonction se termine par le caractère "i", l'action est insensible aux minuscules et aux majuscules.

Pour une recherche simple d'une sous-chaîne dans une autre, on utilisera plutôt les fonctions usuelles strstr et strpos, qui sont plus rapides d'exécution que les fonctions qui utilisent les "modèles".

Pour couper une portion d'une chaîne, on utilisera la fonction substr($chainesource,$deb,$lon) qui renvoie la portion de la chainesource, de longueur $lon, depuis la position $deb+1.

Pour des exemples simples d'utilisation des fonctions du PHP, consultez :

 Lien externe : manuelphp.com, exemples, fonctions strstr, substr...

Il devient alors possible d'utiliser tous ces outils pour créer des utilitaires comme :

rechercher et marquer des mots d'une page

séparer des mots d'un tableau pour traiter des dictionnaires ou des bases de données

normaliser des pages html, en retirant des balises superflues

rechercher automatiquement des balises et les modifier pour augmenter l'accessibilité des sites WEB aux aveugles...

Vous trouverez des exemples simples de tels utilitaires dans le site expreg.com :

 Lien externe : article du site expreg.com, exemples d'utilisation des fonctions ereg, eregi...

Vous approfondirez le langage en prenant connaissance de la documentation officielle sur les fonctions des versions php4 et php5. Vous trouverez par vous-même des sites de tout niveau, qui seront les mieux adaptés aux projets que vous désirez réaliser. Vous trouverez dans la page suivante, une petite application simple, dans laquelle on saisit un mot, et l'on renvoie sa traduction en utilisant un dictionnaire, du côté serveur :

Suivant : un petit dictionnaire en ligne

Retour dans le sommaire de la rubrique outils