<?php ... ... ?>
// Définition d'une constante define('ZeConstante', 'ZeValeur') ; $Variabme = ZeConstante ; // Pour une constante insensible à la casse define('ZeConstante', 'ZeValeur', TRUE) ; $Variabme = ZeCONSTANTE ;
Les condition IF .. ELSE de base.
if (condition) { ... ; ... ; }
if (condition) { ... ; ... ; } else { ... ; ... ; }
if (condition) { ... ; ... ; } elseif (condition) { ... ; ... ; } else { ... ; ... ; }
Les cas de valeurs de variable.
switch ($variable) { case valeur1 : { ... ; break ; } case valeur2 : { ... ; break ; } default : { ... ; break ; } }
Les ternaires : Il s'agit d'une condition en une ligne.
$reponse = ($age >= 18) ? 'Que oui' : 'Que non' ;
Boucle While.
$i = 0; while ($i <= 10) { ... ; ... ; }
Boucle de 1 à 10.
for ($i = 1; $i <= 10; $i++) { ... ; ... ; }
Boucle sur un tableau.
foreach ($UnTableau as $Element) { ... ; ... ; }
Boucle sur un tableau de clés et valeurs.
foreach ($UnTableau as $cle => $Element) { ... ; ... ; }
Opérateur | Description |
---|---|
== | Egal à |
!= | Différent |
< | Inférieur |
<= | Inférieur ou égal |
> | Supérieur |
>= | Supérieur ou égal |
and | Et |
& | Et |
or | Ou |
|| | Ou |
=== | Identique en type et valeur |
!== | Différent en type et valeur |
! | Négation de la condition suivante |
Fonction avec retour de valeur.
function ZeFonction($arg1, $arg2) { ... ; ... ; return $reponse } .. $var = ZeFonction(1, 2) ;
Fonction avec argument par défaut sans retour de valeur.
function ZeFonction($arg1 = 1, $arg2 = 2) { global $a, $b ; ... ; ... ; } .. ZeFonction() ;
Inclure un script PHP (warning en cas d'erreur).
include 'LeFichier.php' ;
Inclure un script PHP (erreur grave en cas d'erreur).
require 'LeFichier.php' ;
Obligatoirement avant le code HTML.
header('Location: VersAutreSite.php') ;
Une variable dont la valeur sera modifiable et gardé à chaque appel de fonction.
static $count = 0; static $connect = null;
Des variables disponibles partout.
global $a, $b;
define('UNECONSTANTE', 10) ; echo UNECONSTANTE ;
$VariableNumerique = 128 ; $VariableAlphab1 = 'Oh le beau texte' ; $VariableAlphab2 = "Oh le beau texte avec un retour chariot. \n" ; $VariableAlphab3 = 'Oh le beau texte concaténé avec un retour chariot.' . "\n" ; $VariableAlphab4 = "Oh le beau texte avec une variable $LaVariable et des \"guillemets échappés\"." ; $VariableAlphab4 = 'Oh le beau texte avec une variable ' . $LaVariable . ' concaténée.' ; $VariableBool = false ; $VariableFloat = 3.141592 ;
Les types possibles sont (int), (float), (string), (bool).
$VariableNumerique = (int)$VariableAlpha ;
// --- Attribution --- $i = 5 ; // --- Ajout de 1 --- $i += 1; // --- Ajout de 1 --- $i++ ; // --- Concaténation de chaine --- $var .= $texte ;
Déclaration de tableau.
$LeTablo = array() ; $AutreTablo = array(1, 2, 'trois', false, 45.3) ;
Ajouter des valeurs à partir de 0 (compris).
$LeTablo = array() ; $LeTablo[] = 'valeur 1' ; $LeTablo[] = 'valeur 2' ; $LeTablo[3] = 3 ; $LeTablo[] = 'valeur 4' ;
Tableau associatif.
$LeTablo = array() ; $LeTablo['cle'] = 'valeur' ; $LeTablo['nom'] = 'Gotlib' ; $LeTablo['prenom'] = 'Marcel' ; $LeMemeTablo = array('cle' => 'valeur', 'nom' => 'Gotlib', 'prenom' => 'Marcel');
Nombre d'éléments d'un Tableau.
$LeNb = count($Tablo) ;
Recherche d'une clé.
$LeNo = array_search('Marcel', $LeTablo) ;
Existence d'une clé.
if (array_key_exists('prenom')) { echo 'trouvé !' ; }
Vérification d'appartenance.
if (in_array('Marcel', $LeTablo)) { echo 'trouvé !' ; }
Tri d'un tableau
// Tri en ordre croissant sort($tablo) ; // Tri en ordre décroissant rsort($tablo) ;
Supprimer une valeur
unset($tablo['prenom']) ;
Variables superglobales (de type tableau).
Superglobale | Description |
---|---|
$_GET[...] | Variables récupérées dans l'URL. |
$_POST[...] | Variables postées par un formulaire. |
$_FILES[...] | Liste et caractéristique d'un fichier transmis. |
$_SERVER[...] | Informations sur la requete en cours. |
$_ENV[...] | Informations sur l'environnement. |
Ecriture de base.
echo 'en Html, vieux php : ' . htmlentities($variabl, ENT_COMPAT ,'ISO-8859-1') ; echo 'en Html : ' . htmlentities($variabl, ENT_COMPAT | ENT_HTML401 ,'ISO-8859-15') ; echo 'en Xhtml : ' . htmlentities($variabl, ENT_COMPAT | ENT_XHTML ,'UTF-8') ; echo "un texte très beau : $variabl" ;
Debugage.
echo "une variable : $variabl" ; print_r($ZeTablo) ; var_dump($ZeObjet) ;
Affichage formaté.
// affiche : PHP 05, PHP 5.10, PHP 101 printf('PHP %2d, PHP %.2f, PHP %b', 5.1, 5.1, 5.1) ;
// --- Calcul de longueur --- $LongueurTexte = strlen($var) ; // --- Remplacement de texte --- $var = str_replace('old', 'new', $var) ; // --- Mélange des lettres --- $var = str_shuffle($var) ; // --- Mise en minuscule --- $var = strtolower($var) ; // --- Mise en majuscule --- $var = strtoupper($var) ; // --- prend 5 caractères à partir de la première pos. --- $var = substr($var, 0, 5) ; // --- Recherche la position d'un texte. --- $pos = strpos($var, "<br />") ; // --- Retrait des blancs --- $var = trim($var) ; $var = ltrim($var) ; $var = rtrim($var) ; // --- Ajout de caractères d'échapement --- $var = addSlashes($var) ; // --- Retrait de caractères d'échapement --- $var = stripSlashes($var) ; // --- Retrait des balises html et php --- $var = strip_tags($var) ; // --- Affichage de variable --- echo 'en Html, vieux php : ' . htmlentities($variabl, ENT_COMPAT ,'ISO-8859-1') ; echo 'en Html : ' . htmlentities($variabl, ENT_COMPAT | ENT_HTML401 ,'ISO-8859-15') ; echo 'en Xhtml : ' . htmlentities($variabl, ENT_COMPAT | ENT_XHTML ,'UTF-8') ; // --- conversion des caractère spéciaux html --- $var = htmlspecialchars($var, ENT_COMPAT ,'ISO-8859-1') ; $var = htmlspecialchars($var, ENT_COMPAT | ENT_HTML401 ,'ISO-8859-15') ; $var = htmlspecialchars($var, ENT_COMPAT | ENT_XHTML ,'UTF-8') ; // --- Ajout d'un saut de ligne html à chaque nouvelle ligne --- $var = nl2br($var) ; // --- Découpage/regroupement d'une chaine en tableau --- $tab = explode($separateur, $var [, $limite]) ; $var = implode($separateur, $tab) // --- Ajout d'un saut de ligne html à chaque nouvelle ligne --- $var = nl2br($var) ; // --- Encodage d'un mot de passe : md5 --- $var = md5($PassWord) ; // --- Présentation d'un décimal --- $var = number_format($nb, 2, ',', '')
Timestamp du jour (secondes depuis début de l'époque unix)
$LeTimeStamp = time() ;
Date selon différents formats
echo "Date SQL : " . date('Y-m-d', time()) ; echo "Date affich. : " . date('d/m/Y', time()) ;
Paramètres de la fonction date
Code | Description |
---|---|
w | Jour de la semaine : 1 |
D | Jour de la semaine : Mon |
l | Jour de la semaine : monday |
d | Jour : 01 |
j | Jour : 1 |
m | Mois : 01 |
d | Mois : 1 |
F | Mois : January |
M | Mois : Jan |
Y | Année : 1953 |
y | Année : 53 |
g | Heure (format 12h) : 6 |
h | Heure (format 12h) : 06 |
G | Heure (format 24h) : 1 |
H | Heure (format 24h) : 01 |
i | Minutes : 05 |
s | Seconde : 01 |
z | Nbre de jour dans l'année : 57 |
W | Numéro de la semaine : 02 |
Contrôle d'une date
if (checkdate($mois, $jour, $annee)) { echo "Date valide" ; }
Construire un Timestamp
$ts = mktime($heur, $minut, $sec, $mois, $jour, $annee) ;
if (empty($var)) echo 'La variable non initialisée ou égale à zéro.' ; if (isset($var)) echo 'La variable initialisée.' ; if (is_array($var)) echo 'La variable est un tableau.' ; // --- désaffectation de la variable --- unset($var) ; // --- Type d'une variable --- echo gettype($var) ;
Sympbole | Description |
---|---|
^ | Début de ligne. |
$ | Fin de ligne. |
| | Alternative. |
( ) | Capture de motif (pour matcher un contenu). |
[ ] | Caractères possibles [0134] ou [a-z] ou [a-zA-Z0-9]. |
[^a] | Négation de caractère [^a]. |
. | Tout caractères. |
{n} | n caractères exactement. |
{n,m} | n à m caractères. |
? ou {0,1} | zéro ou un fois. |
* ou {0,} | Zéro à n fois. |
+ ou {1,} | Un à n fois. |
[[:alnum:]] | Caractère alphanumérique |
[[:alpha:]] | Caractère alphabetique |
[[:digit:]] | Caractère numérique |
[[:blank:]] | Espace ou Tabulation |
[[:space:]] | Tout caractère d'espace |
[[:lower:]] | Caractère minuscule |
[[:upper:]] | Caractère majuscule |
Recherche
// --- Recherche --- // --- La chaine de recherche est toujours encadrée. if (preg('#^[0-9]+$#', $chaine) { ... ; } // --- Recherche --- if (preg('/[0-9]+/', $chaine, $tabloResultat) { ... ; }
Remplacement de chaîne
// --- Remplacement --- $Result = preg_replace('#(b([a-z]+)e)+#', '\\3remplac', $chaine)
Ce type d'accès est sur le point d'être abandonné de PHP, mais certain provider n'accepte que lui.
Connexion MySQL + Database MySQL.
$link = mysql_connect($Base, $User, $Password) or die('Erreur de connexion '.mysql_error()) ; mysql_set_charset('latin1',$link); // -- selon version Php - MySQL // mysql_set_charset('utf8',$link) ; mysql_select_db($Database) or die('Erreur de selection '.mysql_error()) ;
Déconnexion MySQL.
mysql_close($link) ;
Boucle de lecture.
$sql = ' SELECT ZeRubr' ; $sql .= ' FROM TestPost' ; $sql .= " WHERE variab = '" . mysql_real_escape_string($NoPost, $link) . "'" ; $sql .= ' ORDER BY 1 ' ; $sql .= ' LIMIT 0,10 ' ; $result = mysql_query($sql, $link) or die('Select - Erreur SQL ! '.mysql_error()) ; $nbligne = mysql_num_rows($result); while ($row = mysql_fetch_assoc($result)) { echo htmlentities($row['ZeRubr']).'<br />' ; }
Simple lecture.
$sql = 'SELECT ZeRubr FROM TestPost' ; $result = mysql_query($sql, $link) or die('Select - Erreur SQL ! '.mysql_error()) ; if ($row = mysql_fetch_assoc($result)) { echo htmlentities($row['ZeRubr'], ENT_COMPAT ,'ISO-8859-1')).'<br />' ; }
Insertion données.
$sql = 'INSERT INTO TestPost VALUES (' ; $sql .= mysql_real_escape_string($NewNoPost, $link) . ", " $sql .= "'" . mysql_real_escape_string($NewPosteur, $link) . "', " ; $sql .= 'current_date, ' ; $sql .= " '" . mysql_real_escape_string($NewTitre, $link) . "', " ; $sql .= " '" . nl2br(mysql_real_escape_string($NewContenu, $link)) . "' " ; $sql .= ")" ; $result = mysql_query($sql) or die('Insert - Erreur SQL ! '.mysql_error()) ;
Mise à jour de données.
$sql = 'UPDATE TestPost SET ' ; $sql .= " POSTEUR = '" . mysql_real_escape_string($NewPosteur, $link) . "' " ; $sql .= " , DATEPOST = current_date " ; $sql .= " , TITRE = '" . mysql_real_escape_string($NewTitre, $link) . "' " ; $sql .= " , CONTENU = '" . nl2br(mysql_real_escape_string($NewContenu, $link)) . "' " ; $sql .= " WHERE NOPOST = " . mysql_real_escape_string($NoPost, $link) ; $result = mysql_query($sql) or die('Update - Erreur SQL ! '.mysql_error()) ;
Suppression de données.
$sql = ' DELETE FROM TestPost ' ; $sql .= " WHERE NOPOST = " . mysql_real_escape_string($NoPost, $link) ; $result = mysql_query($sql) or die('Delete - Erreur SQL ! '.mysql_error()) ;
Isolation session de COMMIT.
$sql = " START TRANSACTION " ; mysql_query($sql, $link) or die('START : - Erreur SQL !'.mysql_error()) ;
Commit.
$sql = " COMMIT " ; mysql_query($sql, $link) or die('COMMIT - Erreur SQL ! '.mysql_error()) ;
Rollback.
$sql = " ROLLBACK " ; mysql_query($sql, $link) or die('ROLLBACK - Erreur SQL ! '.mysql_error()) ;
Type d'accès conseillé.
Connexion MySQL + Database MySQL.
$link = mysqli_connect($Base, $User, $Password, $Database) ; if (mysqli_connect_errno($link)) { die('Erreur de connexion : '. mysqli_connect_error() ) ; } if (!mysqli_set_charset($link, "latin1")) { die('Erreur de Pagecode : '. mysqli_connect_error() ) ; } // if (!mysqli_set_charset($link, "utf8")) { die('Erreur de Pagecode : '. mysqli_connect_error() ) ; }
Déconnexion MySQL.
mysqli_close($link) ;
Boucle de lecture.
$sql = ' SELECT ZeRubr' ; $sql .= ' FROM TestPost' ; $sql .= " WHERE variab = '" . mysqli_real_escape_string($link, $NoPost) . "'" ; $sql .= ' ORDER BY 1 ' ; $sql .= ' LIMIT 0,10 ' ; $result = mysqli_query($link, $sql) or die('Select - Erreur SQL ! '.mysqli_connect_error() ) ; $nbligne = mysqli_num_rows($result) ; while ($row = mysqli_fetch_assoc($result)) { echo htmlentities($row['ZeRubr']), ENT_COMPAT ,'ISO-8859-1')).'<br />' ; } mysqli_free_result($result);
Simple lecture.
$sql = 'SELECT ZeRubr FROM TestPost' ; $result = mysqli_query($link, $sql) or die('Select - Erreur SQL ! '.mysqli_connect_error() ) ; if ($row = mysqli_fetch_assoc($result)) { echo htmlentities($row['ZeRubr'], ENT_COMPAT ,'ISO-8859-1')).'<br />' ; } mysqli_free_result($result);
Insertion données.
$sql = 'INSERT INTO TestPost VALUES (' ; $sql .= mysqli_real_escape_string($link, $NewNoPost) . ", " $sql .= "'" . mysqli_real_escape_string($link, $NewPosteur) . "', " ; $sql .= 'current_date, ' ; $sql .= " '" . mysqli_real_escape_string($link, $NewTitre) . "', " ; $sql .= " '" . nl2br(mysqli_real_escape_string($link, $NewContenu)) . "' " ; $sql .= ")" ; $result = mysqli_query($link, $sql) or die('Insert - Erreur SQL ! '.mysqli_connect_error() ) ; mysqli_free_result($result);
Mise à jour de données.
$sql = 'UPDATE TestPost SET ' ; $sql .= " POSTEUR = '" . mysqli_real_escape_string($link, $NewPosteur) . "' " ; $sql .= " , DATEPOST = current_date " ; $sql .= " , TITRE = '" . mysqli_real_escape_string($link, $NewTitre) . "' " ; $sql .= " , CONTENU = '" . nl2br(mysqli_real_escape_string($link, $NewContenu)) . "' " ; $sql .= " WHERE NOPOST = " . mysqli_real_escape_string($link, $NoPost) ; $result = mysqli_query($link, $sql) or die('Update - Erreur SQL ! '.mysqli_connect_error() ) ; mysqli_free_result($result);
Suppression de données.
$sql = ' DELETE FROM TestPost ' ; $sql .= " WHERE NOPOST = " . mysqli_real_escape_string($link) ; $result = mysqli_query($link, $sql) or die('Delete - Erreur SQL ! '.mysqli_connect_error() ) ; mysqli_free_result($result);
Isolation session de COMMIT.
$sql = " START TRANSACTION " ; $result = mysqli_query($link, $sql) or die('Start - Erreur SQL ! '.mysqli_connect_error() ) ; mysqli_free_result($result); ou mysqli_begin_transaction($link) ;
Commit.
$sql = " COMMIT " ; $result = mysqli_query($link, $sql) or die('Commit - Erreur SQL ! '.mysqli_connect_error() ) ; mysqli_free_result($result); ou mysqli_commit(link) ;
Rollback.
$sql = " ROLLBACK " ; $result = mysqli_query($link, $sql) or die('Rollback - Erreur SQL ! '.mysqli_connect_error() ) ; mysqli_free_result($result); ou mysqli_rollback(link) ;
Type d'accès conseillé.
Connexion MySQL + Database MySQL.
$mysqli = new mysqli($Base, $User, $Password, $Database) ; if ($mysqli->connect_errno) { die('Erreur de connexion : '. $mysqli->connect_error ) ; } if (!$mysqli->set_charset("latin1")) { die('Erreur de Pagecode : '. $mysqli->error ) ; } // if (!$mysqli->set_charset("utf8")) { die('Erreur de Pagecode : '. $mysqli->error ) ; }
Déconnexion MySQL.
$mysqli->close() ;
Boucle de lecture.
$sql = ' SELECT ZeRubr' ; $sql .= ' FROM TestPost' ; $sql .= " WHERE variab = '" . $mysqli->real_escape_string($NoPost) . "'" ; $sql .= ' ORDER BY 1 ' ; $sql .= ' LIMIT 0,10 ' ; $result = $mysqli->query($sql) or die('Select - Erreur SQL ! '.$mysqli->error ) ; $nbligne = $result->num_rows ; while ($row = $result->fetch_assoc()) { echo htmlentities($row['ZeRubr']).'<br />' ; } $result->free();
Simple lecture.
$sql = 'SELECT ZeRubr FROM TestPost' ; $result = $mysqli->query($sql) or die('Select - Erreur SQL ! '.$mysqli->error ) ; if ($row = $result->fetch_assoc()) { echo htmlentities($row['ZeRubr'], ENT_COMPAT ,'ISO-8859-1')).'<br />' ; } $result->free();
Insertion données.
$sql = 'INSERT INTO TestPost VALUES (' ; $sql .= $mysqli->real_escape_string($NewNoPost, $link) . ", " $sql .= "'" . $mysqli->real_escape_string($NewPosteur) . "', " ; $sql .= 'current_date, ' ; $sql .= " '" . $mysqli->real_escape_string($NewTitre) . "', " ; $sql .= " '" . nl2br($mysqli->real_escape_string($NewContenu)) . "' " ; $sql .= ")" ; $result = $mysqli->query($sql) or die('Insert - Erreur SQL ! '.$mysqli->error ) ; $result->free();
Mise à jour de données.
$sql = 'UPDATE TestPost SET ' ; $sql .= " POSTEUR = '" . $mysqli->real_escape_string($NewPosteur) . "' " ; $sql .= " , DATEPOST = current_date " ; $sql .= " , TITRE = '" . $mysqli->real_escape_string($NewTitre) . "' " ; $sql .= " , CONTENU = '" . nl2br($mysqli->real_escape_string($NewContenu)) . "' " ; $sql .= " WHERE NOPOST = " . $mysqli->real_escape_string($NoPost) ; $result = $mysqli->query($sql) or die('Update - Erreur SQL ! '.$mysqli->error ) ; $result->free();
Suppression de données.
$sql = ' DELETE FROM TestPost ' ; $sql .= " WHERE NOPOST = " . $mysqli->real_escape_string($NoPost) ; $result = $mysqli->query($sql) or die('Delete - Erreur SQL ! '.$mysqli->error ) ; $result->free();
Isolation session de COMMIT.
$sql = " START TRANSACTION " ; $result = $mysqli->query($sql) or die('Start - Erreur SQL ! '.$mysqli->error ) ; $result->free(); ou $mysqli->begin_transaction() ;
Commit.
$sql = " COMMIT " ; $result = $mysqli->query($sql) or die('Commit - Erreur SQL ! '.$mysqli->error ) ; $result->free(); ou $mysqli->commit() ;
Rollback.
$sql = " ROLLBACK " ; $result = $mysqli->query($sql) or die('Rollback - Erreur SQL ! '.$mysqli->error ) ; $result->free(); ou $mysqli->rollback() ;
Existence d'un fichier.
if (file_exists($ZeFich)) { ... }
Vérifie s'il s'agit d'un fichier.
if (is_file($ZeFich)) { ... }
Vérifie s'il s'agit d'un répertoire.
if (is_dir($ZeFich)) { ... }
Lecture binaire.
if (!$ZeFich = fopen($AdressFich, "r")) { echo "Impossible d'ouvrir le fichier ($filename)"; exit; } $lecture = fread($ZeFich, filesize($filename)) ; if ($lecture === FALSE) { echo "Impossible de lire le fichier ($AdressFich)"; exit; } fclose($ZeFich) ;
Ecriture binaire.
if (!$ZeFich = fopen($AdressFich, "w")) { echo "Impossible d'ouvrir le fichier ($filename)"; exit; } if (fwrite($ZeFich, $ZeText) === false) { echo "Impossible d'écrire dans le fichier ($AdressFich)"; exit; } fclose($ZeFich) ;
Lecture en Tableau.
$lines = array(); $lines = file($AdressFich);
Création d'un repertoire avec des droits "700".
mkdir($ZeCheminRepert, 0700);
$ZeSautDeLigne = PHP_EOL ;
Lecture d'un répertoire de fichiers dans un tableau
$repert = array(); $d = dir("./"); while (false !== ($entry = $d->read())) { $suff1 = substr($entry, 0, 1) ; $suff4 = substr($entry, strlen($entry) -4, 1) ; $suff5 = substr($entry, strlen($entry) -5, 1) ; if ( ($suff1 !== ".") and (($suff4 == ".") or ($suff5 == ".") ) { $repert[] = $entry ; } } $d->close();
Modes de lecture de la fonction fopen.
mode | Description |
---|---|
'r' | Ouvre en lecture seule, et place le pointeur de fichier au début du fichier. |
'r+' | Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier. |
'w' | Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer. |
'w+' | Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer. |
'a' | Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. 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. |
'x' | Crée et ouvre le fichier en lecture seule ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2 et fonctionne uniquement avec des fichiers locaux. |
'x+' | Crée et ouvre le fichier pour lecture et écriture; le comportement est le même que pour 'x'. |
'c' | Ouvre le fichier pour écriture seulement. Si le fichier n'existe pas, il sera crée, s'il existe, il n'est pas tronqué (contrairement à 'w') et l'appel à la fonction n'échoue pas (comme dans le cas de 'x'). Le pointeur du fichier est positionné au début. Ce mode peut être utile pour obtenir un verrou (voyez flock()) avant de tenter de modifier le fichier, utiliser 'w' pourrait tronquer le fichier avant d'obtenir le verrou (vous pouvez toujours tronquer grâce à ftruncate()). |
'c+' | Ouvre le fichier pour lecture et écriture, le comportement est le même que pour le mode 'c'. |
Ajouter 'b' au mode pour forcer une lecture en mode binaire.
Définition d'une classe.
class Panier { // Eléments de notre panier var $items; // Ajout de $num articles de type $artnr au panier function add_item($artnr, $num) { $this->items[$artnr] += $num; } // Suppression de $num articles du type $artnr du panier function remove_item($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } elseif ($this->items[$artnr] == $num) { unset($this->items[$artnr]); return true; } else { return false; } } } ?>
Utilisation d'une classe.
$cart = new Panier; $cart->add_item("10", 1); $another_cart = new Panier; $another_cart->add_item("0815", 3);
Une méthode de même nom que la classe deviendra son constructeur, ici en plus on étend la classe par Extends.
class Auto_Panier extends Panier { function Auto_Panier () { $this->add_item ("10", 1); } }
On peut utiliser une méthode non instanciée grace au "::"
A::example();
Les fonctions serialize() et unserialise() permette de sauver une classe
$a = new A; $s = serialize($a); ... $c = unserialize($s);
Ouverture de la session (Début de document obligatoire).
session_start() ;
Fermeture de la session (Début de document obligatoire).
session_start() ; session_destroy() ;
Ecriture d'une variable de session.
$_SESSION['AutorisationAcces'] = 'OK' ;
Lecture d'une variable de session.
if ($_SESSION['AutorisationAcces'] != 'OK') { header('Location: SaisirMotPass.php') ; }
Ecriture d'une variable de cookie pour 90 jours.
setcookie('MaVariableCOOKIE', $Var_a_Sauver, time()+60*60*24*90) ;
Lecture d'une variable de session.
if (isset($_COOKIE['MaVariableCOOKIE'])) { $var_a_recuperer = $_COOKIE['MaVariableCOOKIE'] ; ; }
Inutile en PHP5 si l'option "allow_url_fopen" est à "OFF". Le but est de controler la présence d'un fichier include demandé dans le formulaire.
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')) { include $_GET['page'].'.php'; } else { include 'accueil.php'; }
Il faut éviter qu'un champ puisse détourner une requete SQL (par ajout d'une condition " or 1 = 1 ").
En premier, on inactive les guillemets magiques pour tout les objets reçus (Get / Post / Cookie).
// // -- Inactivation Magic Quotes // if(get_magic_quotes_gpc()===1) { if (isset($_POST['login'])) { $_POST['login'] = stripslashes($_POST['login']); } if (isset($_POST['passe'])) { $_POST['passe'] = stripslashes($_POST['passe']); } }
Les données encapsulées dans un ordre SQL sont protégées.
// // Préparation d'un ordre MySQL // .. $sql .= ", Var01 = '" . mysql_real_escape_string($Var01, $link) . "' " ; $sql .= ", Var02 = '" . mysql_real_escape_string($Var02, $link) . "' " ; $sql .= ", Var03 = '" . mysql_real_escape_string($Var03, $link) . "' " ; $sql .= ", Var04 = '" . mysql_real_escape_string($Var04, $link) . "' " ; ..
Le code html présent dans des champs lus doit être inactivé.
echo '<tr>' ; echo '<td>'.htmlentities($row['JourEVT']).'</td>'."\n" ; echo '<td>'.htmlentities($row['JourAlertEVT']).'</td>'."\n" ; echo '<td>'.htmlentities($row['Libelle']).'</td>'."\n" ; echo '<td>'.htmlentities($row['Type']).'</td>'."\n" ; echo '</tr>' ;
Exemple de réception de donnée alphanumérique sécurisé.
$variabl = '' ; if (isset($_GET['variabl'])) { $variabl = (get_magic_quotes_gpc()===1) ? stripslashes($_GET['variabl']) : $_GET['variabl'] ; $variabl = trim($variabl) ; // facultatif }
Exemple de réception de donnée numérique sécurisé.
$variabl = '' ; if (isset($_GET['variabl'])) { $variabl = (get_magic_quotes_gpc()===1) ? stripslashes($_GET['variabl']) : $_GET['variabl'] ; $variabl = intval(trim($variabl)) ; // facultatif }
L'encodage par défaut passe en UTF-8 à partir de la 5.4, pour éviter d'être géné par ce changement, j'externalise la fonction pour éviter les surprises.
// * * * Util Reception * * * * * * * * * * * * * * * * * * * * * * * * * function affhtml($var) { // * * php 5.2 * * // return htmlentities($var, ENT_COMPAT, 'ISO-8859-15') ; // * * html 4 * * // return htmlentities($var, ENT_COMPAT | ENT_HTML401, 'ISO-8859-15') ; // * * xhtml * * return htmlentities($var, ENT_COMPAT | ENT_XHTML ,'UTF-8') ; }
Pour récupérer le POST, sinon le GET, sinon la valeur par défaut. Prise en compte des magic quotes.
// * * * Util Reception * * * * * * * * * * * * * * * * * * * * * * * * * function getGETPOST($trDef, $trGet, $trPost) { if ($trPost != '' and isset($_POST[$trPost])) { return (get_magic_quotes_gpc()===1) ? stripslashes($_POST[$trPost]) : $_POST[$trPost] ; } if ($trGet != '' and isset($_GET[$trGet])) { return (get_magic_quotes_gpc()===1) ? stripslashes($_GET[$trGet]) : $_GET[$trGet] ; } return $trDef ; }
Présentation des dates.
// * * * Fonctions diverses * * * * * * * * * * * * * * * * * * * * * * * function date2SQL($TrDate) // -- Conversion en format SQL { if (substr($TrDate,4,1) == '-' and substr($TrDate,7,1) == '-') { return $TrDate ; } if (substr($TrDate,2,1) == '/' and substr($TrDate,5,1) == '/') { return substr($TrDate,6,4).'-'.substr($TrDate,3,2).'-'.substr($TrDate,0,2) ; } if (substr($TrDate,2,1) == '.' and substr($TrDate,5,1) == '.') { return substr($TrDate,6,4).'-'.substr($TrDate,3,2).'-'.substr($TrDate,0,2) ; } return $TrDate ; } function date2AFF($TrDate) // -- Conversion en format Français { if (substr($TrDate,2,1) == '/' and substr($TrDate,5,1) == '/') { return $TrDate ; } if (substr($TrDate,2,1) == '.' and substr($TrDate,5,1) == '.') { return substr($TrDate,0,2).'/'.substr($TrDate,3,2).'/'.substr($TrDate,6,4) ; } if (substr($TrDate,4,1) == '-' and substr($TrDate,7,1) == '-') { return substr($TrDate,8,2).'/'.substr($TrDate,5,2).'/'.substr($TrDate,0,4) ; } return $TrDate ; } function date2LONG($TrDate) // -- Conversion en format long { $recmois = array('01' => 'janvier', '02' => 'février', '03' => 'mars', '04' => 'avril', '05' => 'mai', '06' => 'juin', '07' => 'juillet', '08' => 'août', '09' => 'septembre', 10 => 'octobre', '11' => 'novembre', '12' => 'décembre') ; if (substr($TrDate,2,1) == '/' and substr($TrDate,5,1) == '/') { return substr($TrDate,0,2).' '.$recmois[substr($TrDate,3,2)].' '.substr($TrDate,6,4) ; } if (substr($TrDate,2,1) == '.' and substr($TrDate,5,1) == '.') { return substr($TrDate,0,2).' '.$recmois[substr($TrDate,3,2)].' '.substr($TrDate,6,4) ; } if (substr($TrDate,4,1) == '-' and substr($TrDate,7,1) == '-') { return substr($TrDate,8,2).' '.$recmois[substr($TrDate,5,2)].' '.substr($TrDate,0,4) ; } return $TrDate ; } function ts2AFF($TrDate, $TrPrf) // -- Conversion timestamp en affichage clair { $dt = date2AFF($TrDate) ; $dj = date('d/m/Y', time()) ; $dh = date('d/m/Y', (time() - 86400) ) ; $dd = date('d/m/Y', (time() + 86400) ) ; if ($dj == $dt) { $dt = "aujourd'hui" ; } elseif ($dj == $dh) { $dt = "hier" ; } elseif ($dj == $dd) { $dt = "demain" ; } elseif ($TrPrf != '') { $dt = $TrPrf.' '.$dt ; } $hr = 0 + ( substr($TrDate,11,2) ) ; $hr = $hr.'h'.substr($TrDate,14,2) ; return $dt.' à '.$hr ; }
Présentation des dates.
// * * * Partie Gestion SQL * * * * * * * * * * * * * * * * * * * * * * * * // // * * * La connexion de base à faire une fois // * On récupère la variable $link // function SQLconnex() { $link = mysql_connect(BaseHost(), Baselogin(), Basepass()) or die('Erreur de connexion '.mysql_error()) ; mysql_set_charset('latin1',$link) ; // - selon la version de PHP // mysql_set_charset('utf8',$link) ; // - Pour de l'UTF-8 mysql_select_db(Basebase()) or die('Erreur de selection '.mysql_error()); return $link ; } // // * * * Pb donc ROLLBACK + DIE (dans le cas ou on a démarrer une transaction) // function SQLrollback($link, $mess) { $sql = " ROLLBACK " ; mysql_query($sql, $link) or die('Erreur SQL !'.mysql_error() . ' / ' . $mess) ; die($mess) ; }