PHP - News

Transcription

PHP - News
Introduction à PHP
Master Créations Images et Multimédia Multilingue / CAWEB
1.Historique
Php est né du fruit du travail de Rasmus Lerdorf , une première version du
langage voit le jour en 1994. La diffusion du langage debute dès 1995. Le nom
initial du projet ( « Personal Home Page tools » sera rebaptisé « hypertext
préprocessor ») . A l'heure actuelle ce langage est devenu très populaire chez
les web designers, simple d'approche et surtout très puissant , il évolue
constamment grâce à une communauté de développeurs très importante.
On est aujourd’hui à la version 5 du langage
PHP est distribué librement et gratuitement sous licence GNU GPL
il est téléchargeable sur http://www.php.net
1.2 Principe de fonctionnement
•
PHP est avant tout un langage de script (scripting).
•
Le code inséré dans les pages HTML, est exécuté par le serveur sous réserve
que les pages portent l'extension .php3 .php ou .php4. Le fichier contenant du
code php est hébergé sur le serveur ; lors d’une requête HTTP , le code HTML
est retourné tel quel et le code php est extrait et exécuté par le serveur . Les
résultats seront intégrés au flot HTML.
•
Très simple à appréhender car possédant une syntaxe claire et très proche du
langage C, le PHP reste une solution qui conviendra aux débutant comme aux
professionnels, pour dynamiser un site Web ou l'interfacer avec une Base de
données.
1.3 Php et la concurrence
•
Le PHP utilise une syntaxe très simple car elle reste très proche du langage C,
langage maîtrisé par la plupart des développeurs.
•
Les autres langages du web sont :
- ASP : c’est la réponse de Microsoft à PHP, ASP utilise une syntaxe basée
sur VBScript (Version allégée de Visual Basic)
- PERL : C’est un langage de script puissant, adapté à Internet mais difficile
à maîtriser
- CGI : Composants exécutables, rapide mais spécifiques à la plate formeserveur et pose souvent des problèmes de securité tout en étant complexe à
développer.
- JAVASCRIPT : Javascript est quand à lui interprété par le logiciel client ( =
le navigateur ) des problèmes de sécurité sont inhérents à ce mode de
fonctionnement
- RUBY : Langage de script qui peu être utilisé pour le dvt web on parle
surtout de RoR ( Ruby on Rails projet un peu jeune mais prometeur ! ) un
framework de dvt web basé sur Ruby.
L'appelation « ruby » vient d'un jeu de mot sur Perl. Ruby utilise la
programmation dite MVC ( modèle vue contrôleur )
- Python : Comme python c'est un langage de script orienté objet
qui utilise le modèle MVC on le couple souvent à Django ou Zope
pour le dvt web.
- JAVA, Webdev (...)
1.3.1 ASP :
<html>
<head>
<title>De l'ASP dans le cours de ToMa !!!!!!</title>
</head>
<body bgcolor="white" text="black">
<%
Dim strMessage
strMessage = "Hello les copains"
Response.Write (strMessage)
Response.Write ("<br>")
Response.Write ("Il est : " & Time())
%>
</body>
</html>
1.3.2 PERL :
#!/usr/local/bin/perl
print("content-type : text/html\n\n");
print("Hello les copains !");
($secondes,$minutes,$heure)=localtime(time);
print(''Il est $Heure:$minute:$secondes'');
1.4 Intégration et syntaxe de PHP
•
Avant d’utiliser PHP il faut s’assurer que notre hébergeur le supporte à moins
qu’on désire travailler localement - installation possible sous windows du pack
easyphp ( http://www.easyphp.org ) ou sous linux il faut utiliser le systeme de
packetages ( rpms ) ou les fichiers binaires.
•
Les hébergeurs Wanadoo, Free… supportent le PHP (pas intégralement car
certaines fonctions comme mail() ne sont pas toujours activées).
•
Intégrer du php dans une page est très simple à réaliser , une page type combine
souvent HTML et PHP , il faut alors introduire une notation particulière pour
distinguer les deux langages .
1.4.2 Integration dans une page HTML
Il existe 4 méthodes pour intégrer PHP à l'intérieur d’un document HTML :
A l'aide des tags courts <? et ?>
<? echo (‘’ hello world !!!!"); ?>
A l'aide des tags <?php et ?>
<?php echo (" hello world !!!!"); ?>
A l'aide de délimiteur de type ASP (<% et %>)
<% echo (" hello world !!!! "); %>
A l'aide de la balise <script language="...">
<script language="PHP">
<!-echo (" hello world !!!!");
//-->
</script>
1.4.3 Notions importantes
•
•
Extensions
Selon la version du langage, les extensions sont différentes :
version 2 (php) : ".phtml" version 3 : ".php3" version 4-5 : ".php" “.php4” …
Selon les paramétrages du serveur, les anciennes extensions sont reconnues ou
non.
Les Variables : C’est une zone de mémoire vive ou on enregistre des
informations comme du texte ou des nombres ...
•
Les règles à retenir :
chaque ligne doit se terminer par un point-virgule (";")
chaque variable commence par le signe dollar ("$")
•
Les commentaires peuvent prendre soit une ligne, soit plusieurs lignes.
sur une ligne :
//commentaire avec deux barres obliques
#commentaire avec le signe dièse
sur plusieurs lignes,
/*
lignes de commentaires
*/
1.4.4 Premier script
<?
echo ‘’<marquee>HELLO WORLD</marquee> ‘’;
?>
1.5 Les types de données
•
•
•
•
Les nombres entiers (integer).
$nombre = 123;
Les nombres à virgules (doubles).
$a = 123.456;
Les chaînes de caracteres (string)
$chaine = ‘’desscimm";
Les tableaux (array )
$chiffres = array(6,7,5,3);
$coolvibes = array("I","won’t","do","what","you","tell","me");
echo $coolvibes[3] ;
1.5.2 Notion de tableau
• Les tableaux sont très important à maîtriser en
PHP, car ce langage est souvent lié à des
bases de données. Ces bases de données
retournent plusieurs valeurs, et généralement
sous forme de tableau.
$site[0] = ‘’www.google.fr";
$site[1] = ‘’www.supersite.fr";
$site[2] = ‘’www.superloose.com";
1.5.3 Les variables
En PHP, les variables sont déclarées par le signe '$'. Elles servent à stocker des données
dans le script, pour les réutiliser plus tard.
<?php
/*
Definition des variables
*/
$a = 2;
$b = 4;
/* Addition */
$addition = $a + $b; // $addition vaut 6
echo $addition;
/* Soustraction */
$soustraction = $b - $a; // $soustraction vaut 2
/* Multiplication */
$multi = $a * $b; // $multi vaut 8
echo $multi;
/* Division */
$div = $b / $a; // $div vaut 2
echo $div;
?>
• Comme en Javascript , on peut incrémenter ( ou le contraire ) la valeur
d'une variable de 1 en écrivant : $variable++; ou $variable--;
•
1.5.4 Les variables d’environnement
•
Il est possible en PHP d'obtenir des informations aussi diverses que le nom du
navigateur de l'internaute ou le serveur utilisé. Ces informations sont stockées
dans des variables spéciales appellés "variables d'environnement". La
commande "phpinfo()" récapitule toutes ces variables :
<?
phpinfo();
?>
$REMOTE_ADDR par exemple, contient l'adresse IP du client
$HTTP_USER_AGENT contiendra le nom du navigateur utilisé
1.5.6 Opérations sur les chaines de caractères
• En PHP, la concaténation de deux chaînes se
fait à l’aide du symbole "."
<?
$a = 'php c\’est'; $a = ''php c'est top'';
$b = $a . ' top !';
echo $b;
?>
1.6 Les fonctions
•
PHP propose de nombreuses fonctions, mais on peut definir ses propres
fonctions à l’aide de function().
•
Exemple fichier fonction.php :
<?
function Arial($taille,$couleur,$texte)
{
print("<font face=Arial size=".$taille." color=".$couleur.">".$texte."</font><br/>");
}
?>
1.6 Les fonctions
Exemple d’un script utilisant notre fonction
<?
function Arial($taille,$couleur,$texte)
{
print("<font face=Arial size=".$taille." color=".$couleur.">".$texte."</font><br/>");
}
Arial("2","red", "super ...");
Arial("3","#0F74A3", " Genial ...");
?>
1.7 Include et Require
• Les deux fonctions include et require
permettent d'insérer dans un script le code
contenu dans un autre fichier.
Ex : <?php include "mesfonctions.php";?>
<?php require "http://www.cool.com/rastafari.php";?>
1.7 Include et Require
•
Dans notre exemple :
Fichier index.php :
<?
include "MesFonctions.php";
Arial("2","red", "super ...");
Arial("3","#0F74A3", " Genial ...");
?>
Fichier MesFonctions.php :
<?
function Arial($taille,$couleur,$texte)
{
print("<font face=Arial size=".$taille." color=".$couleur.">".$texte."</font><br/>");
}
?>
1.7.2 Différences Include et Require ?
•
Avant la version 4.0.2, la méthode mot "require" pratiquait l'inclusion du fichier au moment de l'analyse
(interprétation par php) et non de l'exécution du script.
•
Dans les versions actuelles la méthode include encas de non existence du fichier inclus affiche un
avertissement et continue l'exécution du script alors que require génère une erreur et interrompt le script.
•
Il est donc conseillé d'utiliser la méthode require quand le fichier à inclure est vraiment requis par
l'application php. Si on préfere la méthode include il faut tester l'existence du fichier ou non.
•
Si le fichier n'existe pas et qu'on utilise include, la fonction include renverra false ( = booléen )
<?php
if( file_exists( 'SuPaFicHier.php' ) ) include 'SuPaFicHier.php';
else die("erreur fatale"); // die equivalent à exit() exit("erreur fatal");
?>
1.8 Exemples de codes php : passage de variables à un script depuis un formulaire
Fichier formulaire.html :
<form name="formulaire" method="post" action="page.php">
ton ptit nom : <input type="text" name="nom">
<input type="submit’’ value=‘’envoyer’’>
</form>
Fichier page.php :
<?php
echo "bonjour ".$nom;
?>
<?php
echo "bonjour ".$_POST['nom'];
?>
1.8 Exemples de code php : afficher la date
•
La fonction date permet de décrire une date en retournant une chaîne de caractères sous le format
désiré. Cette date est exprimée en fonction du timestamp qui est le nombre de secondes écoulées
depuis le 1 Janvier 1970 (époque UNIX)
echo time(); //donnes le nb de secondes écoulées
Syntaxe : Chaîne date("format", "timestamp")
L'argument timestamp est optionnel. S'il est vide, l'heure et la date courante seront utilisées.
•
Constantes de formatage :
a am ou pm
A AM ou PM
dJour du mois, avec conservation des zéros "01" et "31"…
D Jour de la semaine, abrégé en trois lettres ( en anglais "Mon" "Fri" … )
F Mois en anglais et en entier "january" ….
h Heure, de 1 à 12
H Heure, de 0 à 23 ( format 24h)
i Minutes
J Jour du mois, avec suppression des zéros
L Jour de la semaine
m Chiffre du mois, de 01 à 12
M Abréviation du nom du mois en anglais
Y Année, sur quatre unités "2001"
1.8 Exemples de codes PHP
•
<?php
$datedujour=date(" j/m/Y");
echo $datedujour;
?>
1.8 Exemples de codes : dates et locales
•
strftime --Formate une date/heure locale avec les options locales
string strftime ( string format [, int timestamp] )
Les mois et jours de la semaine, et toutes les chaînes dépendantes de la
langue sont fixées avec la commande setlocale()
Pour le paramètre format :
%a : nom abrégé du jour de la semaine
%A : nom complet du jour de la semaine
%b : nom abrégé du mois
%B : nom complet du mois
%d : jour du mois en numérique (intervalle 01 à 31)
%H : heure de la journée en numérique, et sur 24-heures
%I : heure de la journée en numérique, et sur 12- heures
%j : jour de l'année, en numérique (intervalle 001 à 366)
%m : mois en numérique (intervalle 1 à 12)
%M : minute en numérique
%S : secondes en numérique
%T : l'heure actuelle (égal à %H:%M:%S)
1.8 Exemples de codes : dates et locales
<?php
echo strftime("En Finlandais est ");
setlocale(LC_ALL, "fi_FI.UTF-8");
echo strftime("%A, en Français ");
setlocale(LC_ALL, "fr_FR.UTF-8");
echo strftime("%A et en Allemand ");
setlocale(LC_ALL, "de_DE.UTF-8");
echo strftime("%A");
?>
1.8 exemples de codes PHP : date de maj
• Ce petit script va afficher la dernière date de mise à jour d’une page
html à l’aide de la fonction DATE de la fonction filemtime et d’une
variable d‘environnement $SCRIPT_FILENAME
• <?
echo("Dernière modification le ");
echo(date("d/m/Y à H:i",filemtime($_SERVER['SCRIPT_FILENAME'])));
?>
2.0 Complément sur la gestion des variables
• Un changement dans PHP pourrait rendre son
apprentissage plus complexe. Depuis la
version 4.2, la valeur par défaut de
register_global est à Off cf php.ini ou
phpinfo();
• Une variable envoyée par un formulaire
(method=POST name =motdepasse) ne sera
plus accessible avec $motdepasse mais avec
$_POST['motdepasse'].
2.0 Complément sur la gestion des variables
•
Pourquoi ?
– Pour sécuriser le code et empêcher l ’accès et la
manipulation des variables .
• Le code est en soi plus stable quand on gère les variables de cette
manière , on sait exactement ce que l ’on fait Il faut constamment
faire attention aux entrée (input) utilisateurs ( formulaires… )
• Pour aller plus loin :
http://www.php.net/release_4_1_0.php
( section SECURITY: NEW INPUT MECHANISM )
http://www.php.net/manual/fr/security.registerglobals.php
2.1 REGISTER GLOBAL
• La configuration du paramètre register_global est contrôlée dans le
fichier de configuration php.ini.
• Infos : http://www.php.net/manual/fr/configuration.php
• Le paramètre register_global peut prendre deux valeurs, On et Off.
Avant la version 4.2.0 la valeur par défaut était On mais cela a
changé et il faut adapter son code pour les nouvelles versions ou
les mises à jour de php chez votre hebergeur.
• On peut voir la valeur du parametre REGISTER GLOBAL à l ’aide
de la fonction phpinfo()
2.2 L ’origine des variables
•
•
Par les url : une des façons les plus simples pour faire transiter des variables de
pages en pages est l'insertion dans l'URL. On appelle ça communément la
méthode GET.
Anatomie d'une URL
http://mastercaweb.u-strasbg.fr/script.php?variable=toto&foo=bar
– http:// : C'est le protocole utilisé pour communiquer.
– mastercaweb.u-strasbg.fr/ : C'est le nom d'hote, le nom DNS ou l'adresse IP
du serveur référencé par cette url.
– script.php : C'est le nom du script.
– ? variable=toto &foo=bar : Il s'agit de la query ( requete) Elle permet
d'envoyer des informations au script script.php
•
Avec la configuration register_global à On, le script "script.php" aurait
automatiquement $var = 'test', $foo='bar'. Ces variables seraient des
variables globales pour le script auquel vous accédez.
2.2 L ’origine des variables
• Toutes les fois qu'un paramètre est indiqué dans l ’URL du script,
PHP créé un tableau global nommé $HTTP_GET_VARS.
• Il s'agit d'un tableau associatif. En prenant l'exemple précédent on
aurait :
• $HTTP_GET_VARS = array ('variable' => 'toto', 'foo' => 'bar');.
• Depuis la version 4.1.0 une variable globale nommée $_GET
contient exactement la même chose que $HTTP_GET_VARS.
• Ce tableau est nommé superglobal
2.2 L ’origine des variables
• Provenance : Formulaire
• Une autre méthode commune pour passer une
variable à un script est un formulaire sur une page
web.
2.2 L ’origine des variables
• Quand un utilisateur va cliquer sur le bouton "envoyer" le navigateur
va soumettre le formulaire au script "script.php" avec une variable
$foo qui aura la valeur que l'utilisateur aura rentrée.
• Avec la configuration register_global à On, le script "script.php"
aurait automatiquement attribué $foo='bar'.
• De façon similaire à l'exemple précédent sur la provenance URL,
PHP va générer automatiquement une tableau nommé
$HTTP_POST_VARS.
• Dans le cas de notre exemple : $HTTP_POST_VARS['foo'] = 'bar';.
• Depuis la version 4.1.0 une variable globale nommée $_POST
contient exactement la même chose que $HTTP_POST_VARS à
savoir $_POST['foo'] qui aura pour valeur bar.
2.2 L ’origine des variables
• Provenance : Un cookie : les cookies permettent de stocker des
informations sur le disque dur de la machine cliente.
• Dans l'exemple qui suit on va placer un cookie :
/* durée de validité du cookie 24h */
setcookie('foo', 'bar', time()+86400, '', $HTTP_HOST);
• Pour accéder aux valeurs du cookie on utilisera alors
$_COOKIES["foo"] qui nous indiqueras sa valeur ie 'bar'.
2.2 L ’origine des variables
• Provenance : Environnement ou Serveur : Le système d'exploitation
ainsi que les serveur Web disposent de nombreuses variables qui
peuvent être utilisées dans un script.
• Une de ces variables les plus utilisées sont : Le nom du script lui
même ainsi que le nom de l'hôte.
• PHP créé automatiquement deux tableaux associatifs
$HTTP_ENV_VARS et $HTTP_SERVER_VARS.
• Apres PHP 4.1.0 les mêmes tableaux sont nommés : $_ENV et
$_SERVER. ( voir fonction print_r )
2.3 Utilisation des superglobales
• Si vous utilisez plus d'une fois des variables passées en paramètre
vous pouvez tout simplement les assigner à une variable.
ex : $superCool = $_GET[superCool];
• Cela évitera de faire appel à des superglobales à chaque fois.
• Cette technique peut aussi permettre d'éviter de recoder tous les
scripts en assignant les bonnes valeurs aux bonnes variables en
début de script.
2.3.2 Pourquoi superglobales ?
• Normalement une variable utilisée dans une fonction est locale à
celle ci.
• Si on veut utiliser la variable globale dans une fonction
global $superCool;
• Les superglobales sont des exceptions à cette règle. Vous pouvez
utiliser les superglobales $_GET, $_POST, $_COOKIE, $_ENV,
$_SERVER et $_SESSION sans avoir besoin de les déclarer en
globales.
2.4 Conclusion
$_GET
contient les variables passées par la méthode GET
$_POST
contient les variables passées par la méthode POST
$_COOKIE contient les variables HTTP cookie
$_SERVER
contient les variables serveur (par ex.
REMOTE_ADDR)
contient les variables d'environnement
• $_ENV
Une fusion des variables GET. POST, COOKIE.
• $_REQUEST
En d'autres mots toutes les informations qui arrivent de l'utilisateur.
Et d'un point de vue purement sécurité, ce n'est pas sûr.
contient toutes les variables HTTP
• $_SESSION
enregistrées par le module de gestion de session
•
•
•
•
3.1 Les structures de controle
<?
while ( love & passion } {
for( fight = 0 ; rights < freedom ; rights++ )
fight = standup( rights );
free( babylon );
}
?>
3.1 Les structures de controle
if (condition)
{exécute le code}
<?
// On affecte une valeur, à une variable.
$un_nombre = 15 ;
//Condition :
if ( $un_nombre > 9) { // "Si"
// on execute le code suivant.
echo "Superieur à 9";
}
?>
3.1 Les structures de controle
if (condition)
{exécute le code}
else
{exécute le code}
<?
// On affecte une valeur, à une variable.
$un_nombre = 5 ;
//Condition :
if ( $un_nombre > 9) { // Si
// on execute le code suivant.
echo "Superieur à 9";
}else{ // Ou
echo "Alors Inferieur à 9";
}
?>
3.1 Les structures de controle
if (condition)
{exécute le code}
elseif (condition)
{exécute le code}
else
{exécute le code}
<?
?>
// On affecte une valeur, à une variable.
$un_nombre = 5 ;
//Condition :
if ( $un_nombre > 9) { // "Si"
// on execute le code suivant.
echo "Superieur à 9";
}elseif( $un_nombre < 2) { // ou si
// alors sinon on execute le code suivant.
echo "Inferieur à 2";
}else{ // Ou
echo "le nombre est inferieur à 9 et est superieur à 2 "; }
3.1 Les structures de controle
•
for(évaluation de l'expression (expr1); condition(expr2) ; expr3 ) { exécute le code}
<?
for ($i=0; $i < 10 ; $i++ ){
echo $i . " est inférieur à 10<br />";
}
// Pour la variable $i initialisé à Zéro
// Et si $i est inférieur à 10, on exécute le code entre {}.
// Apres avoir exécuté le code entre {}, on exécute le code expr3, c'est à dire $i++.
// et on reteste la condition
?>
3.1 Les structures de controle
while ( condition )
{exécute le code }
<?
// on initialise la variable '$i' avec la valeur 0
$i = 0;
// Tant que la variable $i est inférieur à 10
while ( $i <= 10 ) {
// on execute le code suivante
// affichage de la variable $i
echo "$i<br />";
// incrementation de la variable , peut se noter aussi $i = $i +1 ;
$i++;
}
?>
3.1 Les structures de controle
• Break
<?
// On initialise $i à 0.
$i= 0;
// Tant que 1, (boucle infinie)
while (1){
// Si $i est supérieur à 10.
if ($i > 10 ) {
// On stoppe le while avec le break.
break;
}
// Affichage d'un message.
echo "Passage en boucle pour la $i eme fois.<br />" ;
// incrementation.
$i++;
}
?>
3.1 Les structures de controle
• foreach(évaluation de l'expression ) {exécute le code}
<?
// On crée une variable $Tableau, et on insére dedans plusieurs éléments.
$Tableau = array("Punk","Post","Hard","Jazz");
// On met le pointeur du tableau au début.
// Pour chaque élément du $Tableau représenté par $rock
$i=0;
foreach ($Tableau as $Rock ) {
// on execute le code.
echo "element $i du tableau : $Rock est un élément du tableau rock !<br />";
$i++;
}
?>
3.1 Les structures de controle
• switch ($variable) { case "valeur": exécute de code; break; }
<?
$valeur = "peace";
switch ($valeur){
// Si valeur est égale à peace on execute le code jusqu'au break.
case "peace": echo "La valeur contenu dans valeur est 'peace'";
break;
case "hate": echo "La valeur contenu dans valeur est 'hate'";
break;
// Si on souhaite executé un morceau de code si la valeur
ne fait pas partie des cases.
default:
echo "Je n'ai pas reconnu la valeur '$valeur'";
break;
}
?>
3.1.2 Operateurs de comparaisons
•
•
•
•
•
•
•
•
•
$a == $b
Egal
TRUE si $a est égal à $b .
$a === $b Identique TRUE si $a est égal à $b et qu'ils sont de même type
(introduit en PHP 4).
$a != $b
Différent
TRUE si $a est différent de $b .
$a <> $b
Différent
TRUE si $a est différent de $b .
$a !== $b Différent
TRUE si $a est différent de $b ou bien qu'ils ne sont pas
du même type. (introduit en PHP 4)
$a < $b Plus petit que TRUE si $a est strictement plus petit que $b .
$a > $b Plus grand TRUE si $a est strictement plus grand que $b .
$a <= $b
Inférieur ou égal
TRUE si $a est plus petit ou égal à $b .
$a >= $b
Supérieur ou égal TRUE si $a est plus grand ou égal à $b .
3.1.3 Les operateurs logiques
• && c'est l'équivalent du ET
Ex: $toto=6;
$titi=3;
($toto < 10 && $titi > 1) retourne VRAI
• || c'est l'équivalent du OU
Ex: $toto=6;
$titi=3;
($toto==5 || $titi==5) retourne FAUX
• ! C'est l'équivalent du NON
Ex: $toto=6;
$titi=3;
!($toto==$titi) retourne VRAI
3.1,4 Création d’un site dynamique en php
•
Cahier des charges : créer l’ossature d’un site web dynamique
•
On utilisera plusieurs fichiers :
–
–
–
–
–
–
Index.php la page qui permettra de générer le site
navigation.htm menu du site
homepage.htm page d’accueil du site
liens.htm liens ouaibes
Cv.htm page avec cv
bas_page.htm affichage du bas de page
3.2 Envoyer des mails en php
• Envoyer un mail en php est très facile , tout se résume en une ligne
, à l’aide de la fonction mail() et de ses paramètres.
• La fonction reçoit un minimum de paramètres , à qui veut on écrire
tout d’abord , ( champ to: ) quel est le sujet du mail ( subject ) , le
contenu de notre message et enfin l’expéditeur (champ from: )
• Le champ ( from: ) permet aussi de spécifier d’éventuels copies
( Cc ) ou copies cachées ( Bcc ).
3.2 Envoyer des mails en php
• Envoyer un mail en php est très facile , tout se résume en une ligne
, à l’aide de la fonction mail() et de ses paramètres.
• La fonction reçoit un minimum de paramètres , à qui veut on écrire
tout d’abord , ( champ to: ) quel est le sujet du mail ( subject ) , le
contenu de notre message et enfin l’expéditeur (champ from: )
• Le champ ( from: ) permet aussi de spécifier d’éventuels copies
( Cc ) ou copies cachées ( Bcc ).
3.2 Exemples d’utilisation de mail()
<?
//On envoie un message à [email protected]
mail(' [email protected] ', 'sujet : admiration !!!', "Bofh président !!\n Trop
bien !!!!!!");
?>
<?
?>
$destinataires = ' [email protected], [email protected] ';
//On sépare les destinataires par une virgule.
$sujet = 'plouf !!!';
mail($destinataires, $sujet, "Trop sympatoche\n kewwwwwwwwwwl ! ");
3.2 adresse de l'expediteur
<?
$destinataire = '[email protected],[email protected]';
$sujet = 'is there someone ?';
$entete = "From: [email protected]\n";
mail($destinataire, $sujet, "Hello \n someone's here ? ",$entete);
?>
<?
?>
$destinataire = '[email protected],[email protected]';
$sujet = 'is there someone ?';
$entetes = "From: [email protected]\n";
$entetes .= "Reply-to: [email protected]\n";
mail($destinataire, $sujet, "Hello \n someone's here ? ",$entetes);
3.2.1 Exemple d’utilisation de mail()
<?php
$to = ‘’[email protected]’’;
$sujet = ‘’I luv ur software’’;
$contenu = ‘’ Just joking man ! ‘’;
$entetes = ‘’From: [email protected]\n‘’;
$entetes .= "Reply-to: [email protected]\n";
$entetes .= "Cc: [email protected] \n";
$entetes .= "Bcc: [email protected] \n";
$reponse = mail($to,$sujet,$contenu,$entetes);
if ($reponse ){
echo "message tipar !!!!!!!";
}
else
{
die( "Mssieur le facteur je crois qu'on a un problème !!!!");
}
?>
3.3 Site dynamique multilingue
• Principe : on va stocker le contenu texte dans des
variables spéciales appelées « constantes » .
• On utilisera un cookie pour retenir la langue choisie par le
visiteur du site
• On pourra determiner la langue à utiliser en fonction d'une
variable d'env. : HTTP_ACCEPT_LANGUAGE .
• On utilisera pour chaque langue un fichier à part pour
faciliter la mise à jour.
3.3 Site dynamique multilingue
•Les constantes :
Ce sont des variables définies à l’aide de la fonction define()
define(‘SUPER_CONSTANTE', ‘valeur de ma super constante');
•Par convention les noms des constantes sont toujours en
majuscules pour les différencier des autres variables de nos scripts.
define(‘SALUTATION’,’Yo c\’est super php!’);
echo SALUTATION;
3.3 Site dynamique multilingue : lang_fr.php
<?php define(‘MSG_BIENVENUE', 'Bienvenue sur mon site’);
define(‘MSG_GENIAL‘,’C\’est super php!’);
define(‘MSG_COPYLEFT‘,’Site fait par moi !’);
define('LIEN_FR','francais');
define('LIEN_EN','anglais');
?>
3.4 Site dynamique multilingue : lang_en.php
<?php define(‘MSG_BIENVENUE', Welcome to my website’);
define(‘MSG_GENIAL‘,’PHP is awesome :!’);
define(‘MSG_COPYLEFT‘,’made by myself’);
define('LIEN_FR','french');
define('LIEN_EN','english');
?>
3.5 Intégration des fichiers choixlang.php
<?
?>
//premier cas pas de cookie ni variable langue initialisée on part sur la langue du navigateur
If((!$_GET['lang'])&&(!$_COOKIE['lang'])){
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
setCookie("lang",$lang,time()+86400);
}
//deuxieme cas une valeur dans le cookie
Elseif(($_COOKIE['lang'])&&(!$_GET['lang'])){
$lang=$_COOKIE['lang'];
}
//sinon on se base sur la lang affecté en param
Else{
$lang=$_GET['lang'];
setCookie("lang",$lang,time()+86400);
}
// on switch sur lang pour savoir quel fichier inclure switch($lang){
case "fr":
include "lang/lang_fr.php";
break;
case "en":
include "lang/lang_en.php";
break;
default :
include "lang/lang_fr.php";
break;
}
3.6 Notre page web multilingue index.php
<?php
require(‘choixlang.php’);
?> <html>
<body> <?php echo MSG_BIENVENUE; ?> <br/>Avis sur php : <?php echo MSG_GENIAL; ?> <br/>Auteur : <?php echo MSG_COPYLEFT; ?> <br/><br/>
<a href=?lang=fr> <?php echo LIEN_FR; ?>
<a href=?lang=en> <?php echo LIEN_EN; ?>
</body>
</html>
3.7 Les fichiers en PHP
•
Un fichier stocke sur le disque dur des éléments ( textes,images... )
•
Php ignore la structure d’un fichier il traite de la même façon un fichier binaire ( images /
sons / prog… ) qu’un fichier texte.
•
Quand on ouvre un fichier en php on doit indiquer comment php doit evaluer le fichier
( LECTURE - ECRITURE – MODIFICATION )
•
On appelle "pointeur de fichier" la variable qui est affecté de la valeur de la fonction
d'ouverture de fichier :
$fp=fopen("leGentilFichier", 'a+');
fwrite($fp,"Barbatruc !!!!! \n");
3.7 Lecture rapide d’un fichier
• Readfile() : affiche le contenu d’un fichier à l’écran
<?
// affichage à l’ecran de MonSuperFichier.txt
readfile(‘’MonSuperFichier.txt’’);
// affichage url
readfile(‘’http://www.perdu.com/’’);
?>
3.8 Ouverture d’un fichier
La fonction fopen :
fopen(NomDuFichier, ModeOuverture)
• "r" - Ouvre en lecture seule et pointeur de fichier au début.
• "r+" - Ouvre en lecture/écriture et pointeur de fichier au début.
• "w" - Ouvre en ecriture seule - pointeur de fichier au début/réduit la
taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
• "w+" - Ouvre en lecture/écriture, pointeur de fichier au début du
fichier réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente
de le créer.
• "a" - Ouvre en ecriture seule; place le pointeur de fichier à la fin du
fichier file. Si le fichier n'existe pas, on tente de le créer.
• "a+" - Ouvre en lecture et écriture; place le pointeur de fichier à la
fin du fichier. Si le fichier n'existe pas, on tente de le créer.
• Fopen renvoie un booléen :
• if (!($f=fopen("exemple.txt","r")))
• exit("impossible d'ouvrir le fichier !!!!");
3.8.2 Fermeture d’un fichier
• Un fichier ouvert à l’aide de la fonction fopen
doit être fermé on utilise ainsi la fonction
fclose
fclose (pointeurversmonfichier);
3.8.3 Exemples
• <?
// ouverture sur un serveur ftp
$fp = fopen("ftp://login:mdp@nom_du_serveur_ftp/nom_du_fichier", "w");
// ouverture sur un serveur http
$fp = fopen("http://www.perdu.com/","r");
// ouverture d'un fichier en local (sur le serveur);
$fp = fopen("/mon_rep/mon_fichier.txt","r");
fclose($fp );
?>
•
<?
$fp = fopen("c:\MonRepertoire\info.txt", "r");
?>
3.8.4 Lecture d’un fichier
<?
// ouverture du fichier en lecture
$fp = fopen ( "MonSuperFichier.txt" ," r " ) ;
// affichage du fichier
fpassthru($fp ) ;
fclose($fp );
?>
<?
// affichage du fichier
readfile(‘’MonSuperFichier.txt’’);
?>
3.8.5 Lecture d’un fichier ligne par ligne
• fgets() parcourt un fichier ligne par ligne
fgets(PointeurVersMonFichier[,longueur])
• fgets permet de lire une chaine dans un fichier
(pointeurVersMonFichier est initialisé à l’aide
de fopen) a partir de la position courante dont
la longueur est specifié par longueur.
3.8.6 Lecture d’un fichier ligne par ligne
• <?
// ouverture du fichier
$fp = fopen ("/mon_rep/mon_fichier.txt", "r");
while (!feof($fp )) {
$contenuFichier = fgets($fp);
// Ecrire à l'écran la chaîne lue
echo $contenuFichier;
}
fclose ($fp );
?>
3.8.7 Ecrire dans un fichier
• fwrite (PointeurDeFichier, ChaineAEcrire [, Longueur])
fputs() est un alias de fwrite -> fwrite()=fputs()
<?
/*
ouverture du fichier en mode lecture-écriture :
le pointeur est à la fin du fichier
*/
$fp =fopen('fichier.txt' , 'a+');
// écriture de la ligne
fwrite($fp ,"Nouvelle ligne à insérer \n");
// fermeture du fichier
fclose ($fp );
?>
3.8.7 se deplacer dans un fichier
• Pour revenir au debut du fichier : rewind()
Ex :
<?
$fichier= fopen(''superfichier.txt'',"r+");
$contenu= fgets($fichier,25);
rewind($fichier); // rewiiiiiiiiiiiiiiiiiiiiiiiiind
fclose($fichier);
?>
• Se deplacer dans un fichier fseek() fseek(PointeurDeFichier,position)
<?
$fichier= fopen(''superfichier.txt'',"r+");
$contenu= fgets($fichier,25);
fseek ($fichier,0); // rewiiiiiiiiiiiiiiiiiiiiiiiiind
fclose($fichier);
?>
•
3.8.9 Exemple : Ecrire un compteur en php
• Il suffit de stocker quelque part le nombre de visite dans
une base de donnée ou dans un fichier
• On aura besoin d’un fichier "compteur.txt" qui stockera la
valeur de notre compteur. On utilisera fwrite et fopen pour
ecrire ou lire dans le fichier
• Exemple : http://mastercaweb.u-strasbg.fr/bofh/
• Source :
http://mastercaweb.ustrasbg.fr/bofh/compteur.phps
3.8.10 Exemples : Ecrire un livre d'or
• Il suffit de stocker dans un fichier texte les contributions
de nos visiteurs
• On aura besoin d’un fichier "livredor.txt" qui stockera ce
que nos visiteurs posteront à l'aide d'un formulaire
• Exemple : http://mastercaweb.u-strasbg.fr/bofh/livredor/
• Source : http://mastercaweb.u-strasbg.fr/bofh/livredor/src/
4.0 Les sessions
• Les sessions est un moyen simple de conserver des variables sur
toutes les pages d ’un site.
• Jusqu'ici, on était arrivés à passer des variables de page en page
via la méthode GET (en modifiant l'url : page.php?
variable=valeur&variable2=valeur2) et via la méthode POST (=un
formulaire).
• Si on veut transmettre une ou plusieurs variables sur TOUTES les
pages de son site, ca devient ingérable avec GET et POST... D'où
l'invention des sessions.
4.0 Les sessions
• Un visiteur se connecte. On demande à créer une session pour lui :
PHP génère un identifiant unique pour ce visiteur du site.
• Pour cela, on utilise la fonction session_start(). L ’identifiant est une
chaine de caractères assez conséquente codée en hexadécimal.
• Ex : a02bbffc6198e6e0cc2715047bc3766f
• Ce numéro sert d'identifiant et est appelé "ID de session" (ou
PHPSESSID).
• PHP transmet automatiquement cet ID de page en page en utilisant
un cookie ou via l'url (ex : mapage.php?
PHPSESSID=a02bbffc6198e6e0cc2715047bc3766f).
4.0 Les sessions
• A partir de là on peut créer une infinité de variables de session. Par
exemple : $_SESSION['login'] contient le login du visiteur,
$_SESSION['password'] contient le mot de passe etc...
• L'avantage, c'est que le serveur conserve ces variables même
lorsque la page PHP a fini d'être générée.
• Quelque soit la page visitée, on peut récupérer par exemple le login
et le mot de passe du visiteur !
• Lorsque le visiteur se déconnecte (il a cliqué sur un bouton
"Déconnecter" ou est resté inactif trop longtemps), alors la session
est fermée avec la fonction session_destroy()
• Il ne faut jamais oublier d'appeler session_start() sur chacune
des pages AVANT d'écrire le moindre code HTML.
4.1 Utilité des sessions
• Un script qui demande un login / mot de passe pour qu'un visiteur
puisse se "connecter" (s'authentifier). Ainsi, on peut enregistrer des
variables de session et se souvenir du login du visiteur sur toutes
les pages du site !
• Ce qui permet d'ailleurs de créer une zone d'administration
sécurisée sur plusieurs fichiers SANS utiliser de .htaccess. Les
variables de sessions sont suffisantes pour vérifier si le mot de
passe est le bon.
• on se sert des sessions sur les sites de vente en ligne. Cela permet
de gérer un "panier" : on retient les produits que commande le
client, quelle que soit la page où il est. Lorsqu'il valide sa
commande, on récupère ces informations et on le fait payer…
4.2 Ecriture d'une variable de session
• On utilisera session_start() et la superglobale $_SESSION[]
<?php
// initialisation
session_start() ;
$_SESSION['IlEstCommentBofh'] = 'il est cool';
?>
4.3 Lecture d'une variable
<?php
// initialisation
session_start() ;
// tester la présence de la variable 'IlEstCommentBofh' dans la session
if ( isset( $_SESSION['IlEstCommentBofh'] ) ) {
echo 'IlEstCommentBofh a pour valeur ' ;
// lecture de la variable de session 'langage'
echo $_SESSION['IlEstCommentBofh'] ;
} else {
echo 'IlEstCommentBofh inconnu snif snif' ;
}
?>
4.4 Fin de session
<?php
// on initialise et utilise la session
session_start();
$_SESSION['IlEstCommentBofh'] = 'Il est cool';
echo $_SESSION['IlEstCommentBofh']; // affiche Il est cool
// php is alive il travaille
// on détruit la session
session_destroy();
unset($_SESSION);
$_SESSION['IlEstCommentBofh'] ; // n'affiche rien
?>
5.0 Les expressions régulières
• Les expressions régulières sont des modèles créés à
l'aide de caractères ASCII permettant de manipuler des
chaînes de caractères et de trouver les portions de la
chaîne correspondant au modèle.
• Ce système vient de POSIX (norme à l'origine sous Unix).
De nombreux scripts sous UNIX les utilisent.
• Les expressions régulières permettent de rechercher
des occurrences (= suite de caractères correspondant à
ce que l'on recherche) grâce à une série de caractères
spéciaux. L'expression régulière en elle-même est donc
une chaîne de caractère contenant des caractères
spéciaux et des caractères standards
5.1 Domaine d’application
• Vérifier la validité des chaînes de caractères ( saisie
dans un formulaire : email, entrée chiffrée, entrée
texte, etc...)
• Extraire des parties bien précises d'une chaîne, d'un
texte, d'une page...
• Modifier une date au format us (05-30-1977) au
format fr notamment (30/05/1977)
• Remplacer automatiquement toutes les adresses
"http://" par des liens cliquables (cf forums,
guestbook … )
• Pour créer son propre langage simplifié à partir de la
norme HTML, bbCode ([b][/b]...)
5.1 Champ d’application
• Il existe 2 types d'expressions régulières.
• POSIX : ( Portable Operating System Interface
plus le X d'UniX )c'est un langage d'expressions
régulières mis en avant par PHP
• PCRE : ( Perl Compatible Regular Expression )
:ces expressions régulières sont issues d'un autre
langage (le Perl) plus complexes, elles sont
surtout bien plus rapides et performantes.
5.2 Les fonctions utiles
• preg_grep , preg_split , preg_quote , preg_match ,
preg_match_all , preg_replace ,
preg_replace_callback
• Chaque fonction a sa particularité, certaines
permettent de faire simplement une recherche,
d'autre une recherche / remplacement, mais leur
gros point commun c'est qu'elles utilisent un
"langage" identique pour faire une recherche.
5.3 preg_match
<?
?>
if (preg_match("** REGEX **", "string’’))
{
echo 'Le mot que vous cherchez se trouve dans la chaîne';
}
else
{
echo 'Le mot que vous cherchez ne se trouve pas dans la chaîne';
}
!(((https?|ftp)://(w{3}\.)?)(?<\!www)(\w+-?)*\.([a-z]{2,6}))!
5.1 Faire des recherches sur les chaines
• une regex est toujours entourée de caractères
spéciaux appelés délimiteurs.
On peut choisir n'importe quel caractère
spécial comme délimiteur, dans les exemples
suivant on prendra par convention le
délimiteur « ! »
!Ma regex! /Ma regex/ 'Ma regex'
5.1 Faire des recherches sur les chaines
• Pourquoi des délimiteurs
‘’ !MA REGEX! ‘’
‘’ !MA REGEX!Options ‘’
• Exemple :
<?
if (preg_match("!ture!", ‘’la culture c’est comme la confiture…"))
{
echo 'VRAI';
}
else
{
echo 'FAUX';
}
?>
5.1 Faire des recherches sur les chaines
• Attention les regex sont
sensibles à la casse
• Pour ne pas faire la
différence majuscules /
minuscules on peut
ajouter une option à
notre regex
CHAINE
REGEX
RESULTAT
J’adore aller à
Londres
!Londres!
VRAI
J’adore aller à
Londres
!LONDRES!
FAUX
CHAINE
REGEX
RESULTAT
J’adore aller à
Londres
!Londres!i
VRAI
J’adore aller à
Londres
!LONDRES!i
VRAI
5.1 Faire des recherches sur les chaines
• La barre oblique « | » signifie « ou » dans les
regex :
CHAINE
REGEX
RESULTAT
J’adore aller à Londres
!Londres|Amsterdam!
VRAI
J’adore aller à
Muloose
!Londres|Amsterdam!
FAUX
5.1 faire des recherches dans des chaines
• Les regex permettent des recherches précises et très structurés,
dans les exemples précédant le mot pouvait se trouver n’importe ou
dans la chaîne
• ^ (accent circonflexe) : indique le début d'une chaîne.
• $ (dollar) : indique la fin d'un chaîne.
• Ainsi si on veut qu’un chaine commence par ‘’Yo’’ il faudra noter la
regex de cette manière :
!^Yo!
• De même, si on veut vérifier que le chaîne se termine par ‘’ ca gaze
", on écrira cette regex :
!ca gaze$!
5.1 faire des recherches dans des chaines
CHAINE
REGEX
RESULTAT
Yo Bob ca gaze
!^Yo!
VRAI
Yo Bob ca gaze
!ca gaze$!
VRAI
Yo Bob ca roule
!ca gaze$!
FAUX
5.2 Les classes de caractères.
• !gr[aio]s!
• Entre crochets = la classe de caractères.
Cela signifie qu'une des lettres à l'intérieur
peut convenir pour notre REGEX.
• Notre regex reconnaît donc gras gros et gris
5.2 Les classes de caractères
CHAINE
REGEX
RESULTAT
La nuit, tous les chats sont gris
!gr[aoi]s!
La nuit, tous les chats sont gros
!gr[aoi]s!
VRAI
VRAI
Soyez réaliste demander l’impossible
!^[aeiouy]!
Kawai
![aeiouy]$!
FAUX
VRAI
5.3 Les intervalles de classes
• Grâce au symbole "-" (le tiret), on peut autoriser toute une plage de
caractères.
Si on veut que la chaine contienne une lettre on écrira pas :
[abcdefghijklmnopqrstuvwxyz] on peut utiliser les intervalles.
• [a-z] ou [a-e] avec les chiffres : [0-9] , [1-8] …
• On peu combiner les plages aussi : [a-z0-9]. Cela signifie
"N'importe quelle lettre (minuscule) OU un chiffre".
On peut aussi autoriser les majuscules, sans passer par les options
: [a-zA-Z0-9].
[a-zA-Z0-9]
=[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
5.3 Les classes de caractères.
CHAINE
REGEX
RESULTAT
Cette phrase contient une lettre
![a-z]!
VRAI
cette phrase ne comporte pas
de majuscule ni de chiffres
![a-z0-9]!
VRAI
Cette phrase commence pas
par un chiffre
!^[0-9]!
FAUX
<h1>Une balise de titre
HTML</h1>
!<h[1-6]>!
VRAI
5.3 Les classes de caractères
• Pour omettre un caractère dans une classe on utilise
aussi le symbole ‘^’
CHAINE
REGEX
RESULTAT
Cette phrase ne contient pas
de chiffre
![^0-9]!
VRAI
cette phrase ne comporte
pas de majuscule ni de
chiffre
![^A-Z0-9]!
VRAI
Cette phrase ne se termine
pas par une voyelle
![^aeiouy]$!
FAUX
Cette phrase ne commence
pas par une minuscule
!^[^a-z]!
VRAI
5.4 Les quantificateurs
• Les quantificateurs, ce sont des symboles qui permettent de dire
combien de fois peuvent se répéter un caractère, ou une suite de
caractères.
• ? (point d'interrogation) : ce symbole indique que la lettre est
facultative. Elle peut y être 0 ou 1 fois.
Ainsi, !a?! reconnaît 0 ou 1 "a".
• + (signe plus) : la lettre est obligatoire. Elle peut apparaître 1 ou
plusieurs fois.
Ainsi, !a+! reconnaît "a", "aa", "aaa", "aaaa" …
• * (étoile) : la lettre est facultative. Elle peut apparaître 0, 1 ou
plusieurs fois.
Ainsi, !a*! reconnaît "a", "aa", "aaa", "aaaa" etc... Comme c’est
facultatif si a n’y est pas ça renvoi vrai aussi !!!
• Les quantificateurs s'appliquent à la lettre directement derrière. On
peut ainsi autoriser le mot ‘’disque" qu'il soit au singulier comme au
pluriel, avec la regex !disques?!
5.4 Les quantificateurs
• Pour répéter plusieurs lettres on peut utiliser
les parenthèses :
• !Prout(prout)*! : reconnaitra
Proutproutproutprout …
5.4 Les quantificateurs
CHAINE
REGEX
RESULTAT
aaaaa
!a+!
VRAI
bbbb
!c?!
VRAI
Prouuuuuuuuuuut
!^Prou+t!
VRAI
Blablablablabla
!^Bla(bla)*$!
VRAI
5.4 Les quantificateurs.
• ? correspond à {0,1}
• + correspond à {1,}
• * correspond à {0,}
5.5 Les métacaractères.
• « Ce sont des caractères pas comme les
autres qui servent normalement à faire
quelque chose de particulier. »
• En PCRE (des Regex), les métacaractères
qu'il faut connaître sont les suivants :
!^$()[]{}?+*.\
5.5 Les métacaractères : les termes reservés
• "!" (point d'exclamation) : il sert toujours à indiquer la fin de
la Regex. Si on cherche ‘’kestumedis !? ’’ La regex sera :
! kestumedis \!\?!
• "]" (crochet fermant) : normalement, le crochet fermant
indique la fin de la classe il faut là aussi mettre un antislash
devant si on veut l’utiliser dans une regex.
• "-" (tiret) : Le tiret sert à définir un intervalle de classe
(comme [a-z]).
[a-z0-9-] permet de chercher une lettre, un chiffre, ou un
tiret.
5.5.2 Exemples :
•
•
On va tester la saisie d’une adresse email dans un
formulaire.
Les regles pour une adresse email valide :
–
–
–
–
On a tout d'abord le pseudonyme (au minimum une lettre). Il
peut y avoir des lettres minuscules (pas de majuscules), des
chiffres, des points, des tirets et des underscores "_".
Il y a ensuite une arobase : @
Ensuite il y a le nom du fournisseur d'accès. Pour ce nom, que
des minuscles, des chiffres, des tirets, des points et des
underscores.
Enfin, il y a l'extension (comme ".fr"). Cette extension
comporte un point, suivi de 2 à 6 lettres (minuscules).
5.5.2 Valider une adresse email
• !^$! Tout d’abord une fin et un début de chaine
• Ensuite, on a des lettres, chiffres, tirets, points, underscores, au
moins une fois. On utilise donc la classe [a-z0-9._-] à la suite de
laquelle on rajoute le signe + :
!^[a-z0-9._-]+$!
• l'arobase : !^[a-z0-9._-]+@$!
• Puis, encore une suite de lettres, chiffres, points, tirets au moins 2
fois : !^[a-z0-9._-]+@[a-z0-9._-]{2,}$!
• Pour le point de .fr .com … : !^[a-z0-9._-]+@[a-z0-9._-]{2,}\.$!
• Enfin l’extension (en minuscules) :
!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,6}$!
5.5.2 Valider une adresse email
<?
if (isset($_POST['mail']))
{
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,6}$!", $_POST['mail']))
{
echo 'L\'adresse ' . $_POST['mail'] . ' est <strong>valide</strong> !';
}
else
{
echo 'L\'adresse ' . $_POST['mail'] . ' n\'est pas valide, recommencez !';
}
}
?>
<form method="post">
<p>
<label for="mail">Votre mail ?</label>
<input id="mail" name="mail" /><br />
<input type="submit" value="Vérifier le mail" />
</p>
</form>

Documents pareils