Outils pour utilisateurs

Outils du site


web:php:toc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
web:php:toc [2015/08/01 01:42] – modification externe 127.0.0.1web:php:toc [2022/12/09 20:35] (Version actuelle) – [Divers] sgariepy
Ligne 1: Ligne 1:
 ====== PHP ====== ====== PHP ======
-  * Faire des [[web:php:requetesmysql|requêtes MySQL avec PHP]] 
-  * [[web:php:filecopy|Copie de fichiers distant à local]] 
  
-====== Architecture trois tiers ====== 
  
-  - Informatique centralisée un ordinateur central avec des terminaux +  * [[web:php:introduction|Introduction]]
-  - Client-serveur ordinateur central avec des clients, qui sont des micro-ordinateurs où une partie du traitement est effectué +
-  - Architecture 3-tiers  +
-    - Serveur web qui fait le traitement +
-    - Clients légers (//thin client//) / navigateur +
-    - Serveur de base de données +
-  - Architecture n-tiers :  +
-    - clients légers (couche client) +
-    - Couche présentation -> seveur web (pilotage de l'interface) +
-    - Couche données +
  
-====== Environnement de développement ====== +====== Installation ======
-Pour développer des applications web avec PHP, nous avons besoin de trois éléments : +
-  * Serveur web (Apache) avec interpréteur PHP +
-  * SGBD (MySQL) +
-  * Client (Navigateur) +
-  +
-Plusieurs suites intègrent les éléments nécessaires au développement (sauf le navigateur), que l'on appelle WAMP, LAMP ou MAMP (Windows/Linux/Mac Apache-MySQL-PHP), dont par exemple EasyPHP qui est un WAMP.+
  
-====== Les tableaux ======+  * [[web:php:ubuntu_install|Installation de PHP5 sur Ubuntu]] 
 +  * [[web:php:windows_install|Installation de PHP sur Windows]]
  
 +====== Frameworks ======
  
 +  * [[web:php:cakephp13|CakePHP 1.3]]
 +  * [[web:php:cakephp20|CakePHP 2.x]]
 +  * [[web:php:codeigniter|CodeIgniter]]
  
-====== Interaction avec le client ====== 
-L'interaction se fait principalement avec les formulaires et l'envoi de données par deux méthodes : ''POST'' et ''GET''. 
  
-===== GET ===== 
-Les données envoyées en ''GET'' sont accessibles dans le tableau ''$_GET''. 
  
-===== POST ===== +====== Bases de données ======
-Les données envoyées en ''POST'' sont accessibles dans le tableau ''$_POST''.+
  
-Une méthode pour savoir si un formulaire de la même page a été soumis est d'utiliser  +  * [[web:php:oracle|Procédure pour utiliser PHP et Oracle]] 
-<code php+  * [[web:php:requetesmysql|Requêtes MySQL avec PHP]]
-if(array_key_exists('submit', $_POST)) +
-</code>+
  
-===== ISSET =====+====== Outils pour le développement PHP ======
  
-<code php> 
-if (isset($var)) { //code } 
-</code> 
  
 +  * Pour utiliser avec Visual Studio, [[http://www.devsense.com/products/php-tools|PHP Tools]] de Devsense.
  
  
-====== Programmation modulaire ====== 
-Des parties de pages, par exemple l'entête, le menu de navigation et le pied de page, peuvent être implémentés dans un fichier différent qui sera appelé dans chacune des pages qui l'utilise.  Lors d'une modification, on aura que le fichier inclu (''fichier.inc.php'') à modifier. 
  
  
-====== Interaction avec la base de données ====== +====== Divers ======
-La manipulation des bases de données se fait en plusieurs étapes : +
-  - Ouvrir une connexion +
-  - Sélectionner la base de donnée +
-  - Faire une ou plusieurs requêtes +
-  - Fermer la connexion+
  
-===== Ouvrir une connexion =====+  * [[web:php:filecopy|Copie de fichiers en PHP]] 
 +  * [[web:mamp:toc|MAMP]]
  
-<code php> 
-$connexion = mysql_connect("localhost","user","password") or die("Impossible de se connecter à la base de données."); 
-</code> 
  
 +====== Ressources ======
  
  
 +  * [[http://coding.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/|50 Extremely Useful PHP Tools]]
  
- 
- 
-====== Gestion de session ====== 
- 
- 
-===== COOKIES ===== 
- 
- 
-<code php> 
-<?php 
-$value = 'Valeur de test'; 
-setcookie("TestCookie", $value); 
-setcookie("TestCookie", $value, time()+3600);  /* expire dans une heure */ 
-setcookie("TestCookie", $value, time()+3600,"/~rasmus/",".utoronto.ca",1); 
-?> 
- 
-<?php 
-// Afficher un cookie 
-echo $_COOKIE["TestCookie"]; 
-echo $HTTP_COOKIE_VARS["TestCookie"]; 
-// Une autre mÈthode pour afficher tous les cookies 
-print_r($_COOKIE); 
-?> 
-</code> 
- 
- 
- 
-====== Gestion de session ====== 
-Le HTTP est un protocole sans état ou en mode non-connecté.  Tel quel, il n'est donc pas possible de garder de l'information sur le visiteur d'une requête à l'autre, d'un document à l'autre, etc. 
- 
-===== Créer une session ===== 
-La première page doit normalement créer une session et les autres y participeront.  Que la session doit être créée ou qu'une page doit participer à cette session, la commande est la même. 
-<code php> 
-session_start(); 
-</code> 
- 
-===== Fermer la session ===== 
-Pour fermer ou détruire une session, il faut que la page actuelle participe à la session.  Cela signifie qu'il doit y avoir la commande ''session_start()'' avant la destruction de la session. 
-<code php>  
-session_destroy(); 
-</code> 
- 
-===== Pour utiliser la session ===== 
-On utilise le tableau ''$_SESSION''. 
- 
-<code php> 
-$_SESSION['connecté'] = 1;  // la valeur du tableau sera créée autmatiquement 
-$_SESSION['username'] = "Paul"; 
-</code> 
- 
-On peut supprimer une entrée dans la session. 
-<code php> 
-unset($_SESSION['username']); 
-</code> 
- 
-===== session id ===== 
- 
- 
-===== session timeout ===== 
- 
- 
- 
- 
- 
-====== Fonctions utiles ====== 
- 
-===== header() ===== 
-<code php> 
-header("Location: http://". $_SERVER['HTTP_POST'] . dirname($_SERVER['HTTP_SELF']) ."/"); 
-</code> 
- 
- 
-====== Classes ====== 
- 
-===== Exemple de classe complète ===== 
-<code php> 
-/** 
- * Représente un employé. 
-  
- * <p>Employé.</p> 
-  
- * @name myUpload 
- * @author Nom Auteur <nomauteur@domaine.com>  
- * @link  
- * @copyright Nom Auteur 2009 
- * @version 1.0.0 
- * @package Employe.class 
- */  
- 
-class Employe { 
- 
- 
-    public function __construct($firstName, $lastName, $email) { 
-        $this->firstName = $firstName; 
-        $this->lastName = $lastName; 
-        $this->email = $email; 
-    } 
- 
-    public function __toString() { 
-        return "Employé : Prénom = " . $this->firstName . ", Nom = " . $this->lastName . ", Courriel = " . $this->email; 
-    } 
-} 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-</code> 
- 
-===== Constructeur et Destructeur ===== 
- 
-Le constructeur est une méthode réservée qui est exécutée automatiquement, et avant tout autre chose, lors de l'instanciation de la classe.  Le constructeur pourra alors servir pour l'initialisation des variables. 
- 
-La méthode constructeur n'appelle pas implicitement le constructeur du parent.  Pour se faire, il faut utiliser ''%%parent::__construct()%%''. 
- 
-<code php> 
-    /** 
-    * Constructeur 
-    *  
-    * <p>Création de l'instance de la classe.</p> 
-    * @name Employe::__construct() 
-    * @return void  
-    */  
-    public function __construct() { 
-    }  
- 
-    /** 
-    * Destructeur 
-    *  
-    * <p>Destruction de l'instance de classe.</p> 
-    *  
-    * @name Employe::__destruct() 
-    * @return void 
-    */  
-    public function __destruct() { 
-    }  
-</code> 
- 
-Lorsqu'il y a héritage, on peut appeler ''%%parent::__construct();%%'' pour appeler le constructeur du parent. 
- 
-===== Propriétés ===== 
- 
-<code php> 
-    /** 
-    * @var (String) 
-    * @desc Nom de l'employé. 
-    */ 
-    private $nom;  
-</code> 
- 
-===== Méthodes ===== 
- 
-<code php> 
-    /** 
-    * Crée le code de l'employé. 
-    *  
-    * <p>Crée le code de l'employé</p> 
-    *  
-    * @name Employe::createCode() 
-    * @return String 
-    */ 
-    private function createCode() { 
-        return $this->nom; 
-    }  
- 
-    /** 
-    * Détermine le nom complet de l'employé 
-    *  
-    * <p>Détermine le nom complet de l'employé</p> 
-    *  
-    * @name Employe::setFullName() 
-    * @param $firstname 
-    * @param $lastname 
-    * @return string 
-    */ 
-    public function setFullName($firstname, $lastname) { 
-        $this->firstname=$firstname; 
-        $this->lastname=$lastname; 
-    } 
-</code> 
- 
-===== Utilisation de la classe ===== 
- 
-<code php> 
-<?php 
-    include("classes/Employe.class.php"); 
- 
-    $employe = new Employe(); 
-    $employe->setFirstName("Alex"); 
-    $employe->setLastName("Thérieur"); 
- 
-    $nom_complet = $employe->getFullName(); 
-?>  
-</code> 
- 
- 
-===== Méthodes magiques ===== 
- 
-  * ''%%__%%toString()'' 
-  * ''%%__%%get()'' et ''%%__%%set()'' 
-  * ''%%__%%isset()'' et  ''%%__%%unset()'' 
-  * ''%%__%%call()'' 
-  * ''%%__%%autoload()'' 
-  * ''%%__%%sleep()'' et ''%%__%%wakeup()'' 
-  * ''%%__%%clone()'' 
- 
-====== Chaines de caractères ====== 
- 
-===== Longueur d'une chaine ===== 
- 
- 
-<code php> 
-<?php 
-$titre = 'Le Wiki de Stéphane Gariépy'; 
-echo strlen($titre); // Affiche 27 
-?> 
-</code> 
- 
-<note>Comme les caractères accentués en Unicode sont représentés par deux octets en mémoire, il se peut qu'une longueur de chaine soit erronée.</note> 
- 
-===== Accéder à un caractère précis ===== 
- 
-L'index des chaines de caractères en PHP débutent par 0. 
- 
-<code php> 
-<?php 
-$texte = 'Bonjour' ; 
-echo $texte{1}; // Affiche o 
-?> 
-</code> 
- 
-===== Sous-chaine ===== 
- 
-''string substr  (  string $string  ,  int $start  [,  int $length  ] )'' 
- 
-===== ASCII ===== 
-Il est possible d'obtenir la valeur ASCII du caractère avec la fonction ''ord()'' La fonction ''chr()'' est l'inverse de ''ord()''. 
- 
-<code php> 
-<?php 
-echo ord('a'); // Donne 97 
-echo chr(97) ; // Donne a 
-?> 
-</code> 
- 
-====== Téléchargement de fichiers ====== 
- 
-Permettre le téléchargement de fichiers vers un serveur en utilisant PHP n'est pas très compliqué.  Grosso modo, on doit faire un formulaire HTML avec un ''input'' de type ''file'' ainsi qu'un bouton **Envoyer**.  On peut inclure aussi un ''input'' de type ''hidden'' pour la taille maximale du fichier.  Le formulaire est ensuite envoyé à un script PHP (dans notre cas ''upload.php'') qui va gérer le transfert de fichier.  La fonction importante est ''move_uploaded_file()'' qui retourne un booléen selon si le fichier a transféré avec succès ou non. 
- 
-Quand le code du téléchargement est intégré à un site, il faut aussi créer un sous-répertoire du même nom de la variable ''$dossier'' du fichier ''upload.php'' Il faut vérifier les droits d'écriture du répertoire pour fonctionner. 
- 
-<code html|index.html> 
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
-<html xmlns="http://www.w3.org/1999/xhtml"> 
-<head> 
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
-<title>Téléchargement</title> 
-</head> 
- 
-<body> 
- 
-<form method="POST" action="upload.php" enctype="multipart/form-data"> 
-     <input type="hidden" name="MAX_FILE_SIZE" value="100000"> 
-     Fichier : <input type="file" name="avatar"> 
-     <input type="submit" name="envoyer" value="Envoyer le fichier"> 
-</form> 
- 
-</body> 
-</html> 
-</code> 
- 
-<code php|upload.php> 
-<?php 
-$dossier = 'upload/'; 
-$fichier = basename($_FILES['avatar']['name']); 
-$taille_maxi = 10000000; 
-$taille = filesize($_FILES['avatar']['tmp_name']); 
-$extensions = array('.png', '.gif', '.jpg', '.jpeg','.pdf'); 
-$extension = strrchr($_FILES['avatar']['name'], '.');  
-//Début des vérifications de sécurité... 
-if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau 
-{ 
-     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; 
-} 
-if($taille>$taille_maxi) 
-{ 
-     $erreur = 'Le fichier est trop gros...'; 
-} 
-if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload 
-{ 
-     //On formate le nom du fichier ici... 
-     $fichier = strtr($fichier,  
-          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',  
-          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
-     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); 
-     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... 
-     { 
-          echo 'Upload effectué avec succès !'; 
-     } 
-     else //Sinon (la fonction renvoie FALSE). 
-     { 
-          echo 'Echec de l\'upload !'; 
-     } 
-} 
-else 
-{ 
-     echo $erreur; 
-} 
-?> 
-</code> 
- 
- 
-Source : [[http://antoine-herault.developpez.com/tutoriels/php/upload/|Upload de fichiers en PHP]] 
- 
- 
- 
-====== JSON ====== 
- 
-===== Obtenir les données ===== 
-<code php> 
-$jsonurl = "http://site.com/json";  // url du site qui offre du JSON 
-$contents=file_get_contents($jsonurl); 
-</code> 
- 
-===== Décode ===== 
-<code php> 
-$json = '{"foo-bar": 12345}'; 
- 
-$obj = json_decode($json); 
-print $obj->{'foo-bar'}; // 12345 
-</code> 
-Source : http://www.php.net/manual/fr/function.json-decode.php 
- 
-====== PDO ====== 
- 
-  * http://www.phpobjectgenerator.com/ 
web/php/toc.1438386138.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)