This page was exported from GTUTO [ https://www.gtuto.com ] Export date:Sat May 31 20:45:55 2025 / +0000 GMT ___________________________________________________ Title: PHP aide mémoire --------------------------------------------------- Aide-Mémoire PHP StructuresTag PHP<?php ... ... ?> Définition de constante// Définition d'une constante define('ZeConstante', 'ZeValeur') ; $Variabme = ZeConstante ; // Pour une constante insensible à la casse define('ZeConstante', 'ZeValeur', TRUE) ; $Variabme = ZeCONSTANTE ; Structures ConditionnellesLes 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' ; Les BouclesBoucle 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) { ... ; ... ; } Les Opérateurs ConditionnelsOpérateurDescription==Egal à!=Différent<Inférieur<=Inférieur ou égal>Supérieur>=Supérieur ou égalandEt&EtorOu||Ou===Identique en type et valeur!==Différent en type et valeur!Négation de la condition suivanteLes FonctionsFonction 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() ; Inclusion de codeInclure un script PHP (warning en cas d'erreur).include 'LeFichier.php' ; Inclure un script PHP (erreur grave en cas d'erreur).require 'LeFichier.php' ; Débranchement directObligatoirement avant le code HTML.header('Location: VersAutreSite.php') ; Les Variables et TableauxGlobal et StaticUne 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;Constantesdefine('UNECONSTANTE', 10) ; echo UNECONSTANTE ; Affectation de variables$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 ; Transtypage de variablesLes types possibles sont (int), (float), (string), (bool).$VariableNumerique = (int)$VariableAlpha ; Opérations simple// --- Attribution --- $i = 5 ; // --- Ajout de 1 --- $i += 1; // --- Ajout de 1 --- $i++ ; // --- Concaténation de chaine --- $var .= $texte ; Gestion de tableauxDé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 valeurunset($tablo['prenom']) ; Les variables super-globalesVariables superglobales (de type tableau).SuperglobaleDescription$_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.Fonctions d'affichageEcriture 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) ; Fonctions utilesFonctions texte.// --- 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, ',', '') Fonctions date.Timestamp du jour (secondes depuis début de l'époque unix)$LeTimeStamp = time() ; Date selon différents formatsecho "Date SQL : " . date('Y-m-d', time()) ; echo "Date affich. : " . date('d/m/Y', time()) ; Paramètres de la fonction dateCodeDescriptionwJour de la semaine : 1DJour de la semaine : MonlJour de la semaine : mondaydJour : 01jJour : 1mMois : 01dMois : 1FMois : JanuaryMMois : JanYAnnée : 1953yAnnée : 53gHeure (format 12h) : 6hHeure (format 12h) : 06GHeure (format 24h) : 1HHeure (format 24h) : 01iMinutes : 05sSeconde : 01zNbre de jour dans l'année : 57WNuméro de la semaine : 02Contrôle d'une dateif (checkdate($mois, $jour, $annee)) { echo "Date valide" ; } Construire un Timestamp$ts = mktime($heur, $minut, $sec, $mois, $jour, $annee) ;Fonctions de variable.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) ; Expressions Régulières.SympboleDescription^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 majusculeRecherche// --- 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) Accès MySQLAPI mysql - En cours d'abandonCe 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()) ;API mysqli - Mode procéduralType 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) ; API mysqli - Mode objetType 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() ; Accès FichiersTest de présenceExistence 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 de fichierLecture 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 de fichierEcriture 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 de fichier dans un tableauLecture en Tableau.$lines = array(); $lines = file($AdressFich); Création de RepertoireCréation d'un repertoire avec des droits "700".mkdir($ZeCheminRepert, 0700); Saut de ligne PHP$ZeSautDeLigne = PHP_EOL ;Lecture d'un répertoireLecture 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(); Option d'ouverture de fichierModes de lecture de la fonction fopen.modeDescription'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. Les ClassesDescription d'une classeDé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); La gestion des Sessions et des CookiesGestion des sessionsOuverture 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') ; }Gestion des cookiesEcriture 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'] ; ; } Les failles à éviterLa faille include.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'; } La faille SQL injection.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) . "' " ; .. La faille du code HTML et des formulaires.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 réception de données (pour GET, POST, Cookie).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 } Petites fonctions PersonellesLe remplacement de htmlentities.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') ; } La réception des champs.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 ; } Des fonctions d'affichage.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 ; } Des fonctions de connexion, déconnexion et rollback.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) ; } --------------------------------------------------- Images: --------------------------------------------------- --------------------------------------------------- Post date: 2016-01-20 23:24:46 Post date GMT: 2016-01-20 23:24:46 Post modified date: 2016-02-11 12:17:55 Post modified date GMT: 2016-02-11 12:17:55 ____________________________________________________________________________________________ Export of Post and Page as text file has been powered by [ Universal Post Manager ] plugin from www.gconverters.com