Pour développer des applications web avec PHP, nous avons besoin de trois éléments :
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.
L'interaction se fait principalement avec les formulaires et l'envoi de données par deux méthodes : POST
et GET
.
Les données envoyées en GET
sont accessibles dans le tableau $_GET
.
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
if(array_key_exists('submit', $_POST))
if (isset($var)) { //code }
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.
La manipulation des bases de données se fait en plusieurs étapes :
$connexion = mysql_connect("localhost","user","password") or die("Impossible de se connecter à la base de données.");
<?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); ?>
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.
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.
session_start();
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.
session_destroy();
On utilise le tableau $_SESSION
.
$_SESSION['connecté'] = 1; // la valeur du tableau sera créée autmatiquement $_SESSION['username'] = "Paul";
On peut supprimer une entrée dans la session.
unset($_SESSION['username']);
/** * 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; } }
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()
.
/** * 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() { }
Lorsqu'il y a héritage, on peut appeler parent::__construct();
pour appeler le constructeur du parent.
/** * @var (String) * @desc Nom de l'employé. */ private $nom;
/** * 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; }
<?php include("classes/Employe.class.php"); $employe = new Employe(); $employe->setFirstName("Alex"); $employe->setLastName("Thérieur"); $nom_complet = $employe->getFullName(); ?>
__toString()
__get()
et __set()
__isset()
et __unset()
__call()
__autoload()
__sleep()
et __wakeup()
__clone()
<?php $titre = 'Le Wiki de Stéphane Gariépy'; echo strlen($titre); // Affiche 27 ?>
L'index des chaines de caractères en PHP débutent par 0.
<?php $texte = 'Bonjour' ; echo $texte{1}; // Affiche o ?>
string substr ( string $string , int $start [, int $length ] )
Il est possible d'obtenir la valeur ASCII du caractère avec la fonction ord()
. La fonction chr()
est l'inverse de ord()
.
<?php echo ord('a'); // Donne 97 echo chr(97) ; // Donne a ?>
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.
<!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>
<?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; } ?>
Source : Upload de fichiers en PHP
$jsonurl = "http://site.com/json"; // url du site qui offre du JSON $contents=file_get_contents($jsonurl);
$json = '{"foo-bar": 12345}'; $obj = json_decode($json); print $obj->{'foo-bar'}; // 12345
Source : http://www.php.net/manual/fr/function.json-decode.php