PHP
Je me lance dans l'apprentissage de php, via le cours d'Openclassrooms. Cette page sert d'aide-mémoire sur le langage.
Bases
Insérer un bout de code php dans du html :
<?php ?>
- Toujours mettre un
;
à la fin d'une instruction. - Commentaires sur une ligne :
//
- Commentaires sur plusieurs lignes, encadrés par
/*
et*/
.
Fonctions
include()
pour inclure une autre page. Ex :<?php include("bla.php"); ?>
Pour récupérer une fonction dans une variable (pour un echo
par exemple) :
$var = fonction(paramètres);
Pour créer une fonction
<?php function NomDeLaFonction($parametre) { code; } ?>
Définir NomDeLaFonction et les paramètres et décrire la fonction dans les accolades.
Variables
Type de données
Type de donnée | Exemple |
---|---|
string | “Du texte” |
int | 42 |
float | 14.7 |
bool | true/false |
NULL | (rien) |
Écrire une variable
Exemple :
<?php $age_du_capitaine = 17; ?>
Ne pas oublier : $
=
;
Conditions
Symbole | Signification |
---|---|
== | Est égal à |
> | Est supérieur à |
< | Est inférieur à |
>= | Est supérieur ou égal à |
⇐ | Est inférieur ou égal à |
!= | Est différent de |
if
(condition/variable)
{}
facultatif else
{}
Exemple
<?php $age = 8; if ($age <= 12) { echo "Salut gamin !"; } else { echo "Salut vieux !"; } ?>
Boucles
<?php while ($continuer_boucle == true) { // instructions à exécuter dans la boucle } ?> <?php $nombre_de_lignes = 1; while ($nombre_de_lignes <= 100) { echo 'bla<br />'; // Incrémenter le nombre de ligne : $nombre_de_lignes = $nombre_de_lignes + 1 $nombre_de_lignes++; } ?>
<?php for ($var = 1; $var <= 100; $var++) { echo 'Ceci est la ligne n°' . $var . '<br />'; } ?>
Pour for
:
- La première variable est la valeur de départ de la variable
- La seconde est la condition : tant que var est inférieure à 100, la boucle est exécutée.
- La troisième est ce qui est exécuté, ici l'incrémentation.
Formulaires
Code html pour la partie cadres :
- Entrer une chaine de caractère (un nom par exemple) :
<input type="text" name="valeur" />
- Entrer une zone de texte (définir le nombre de lignes, largeur, etc) :
<textarea name="message" rows="8" cols="45">Exemple pré-remplit</textarea>
- Valider (bouton) :
<input type="submit" value="Valider" />
- Liste déroulante :
<select name="choix"> <option value="choix1">Choix 1</option> <option value="choix2">Choix 2</option> </select>
- Case à cocher (résultat on/rien):
<input type=“checkbox” name=“case” id=“case” /> <label for=“case”>Ma case à cocher</label>
. “Label” permet de cliquer sur le texte plutôt que la case pour cocher (asssocierid
etfor
). - Bouton radio, avec l'un présélectionné avec l'attribut
checked=“checked”
. Tous les boutons d'un même choix partagent le mêmename=
.<input type=“radio” name=“question” value=“oui” id=“oui” checked=“checked” /> <label for=“oui”>Oui</label><input type=“radio” name=“question” value=“non” id=“non” /> <label for=“non”>Non</label>
- Champs cachés : l'information est transmise, mais non affichée au lecteur :
<input type=“hidden” name=“pseudo” value=“monpseudo” />
Pour récupérer les donnés (pour name=
) :
<form action="cible.php" method="post"> ... </form>
(cible.php est le fichier où sera affiché le résultat après submit)
Sur les données récupérées par $_POST et $_GET, ajouter htmlspecialchars
pour bloquer l'interprétation de balises html. Exemple :
<?php echo htmlspecialchars($_POST['prenom']); ?> !</p>
La fonction strip_tags
enlèvera les balises html qui auraient pu être ajoutées.
Pour résumer :
<form action="cible.php" method="post"> <p> <input type="text" name="prenom" /> <br /> <textarea name="message" rows="8" cols="45"> Votre message ici. </textarea> <br />Choississez : <select name="choix"> <option value="choix1">Choix 1</option> <option value="choix2">Choix 2</option> <option value="choix3">Choix 3</option> <option value="choix4">Choix 4</option> </select> <br /> <input type="checkbox" name="case1" id="case1" /> <label for="case1">Ma case à cocher</label> <br /><input type="checkbox" name="case2" id="case2" /><label for="case2">Ma case à cocher 2</label> <br /><input type="checkbox" name="case3" id="case3" /><label for="case3">Ma case à cocher 3</label> <br /> Êtes-vous d'accord ? <input type="radio" name="frites" value="oui" id="oui" checked="checked" /> <label for="oui">Oui</label> <input type="radio" name="frites" value="non" id="non" /> <label for="non">Non</label> <br /> <input type="submit" value="Valider" /> </p> </form>
Session et cookies
Le cookie ($_COOKIE
) est limité en taille, donc plus il y a d'infos à transiter, plus y'a de cookies.
La session ($_SESSION
) est gérée par php.
Si on utilise des informations de session, on doit ajouter le code php session_start()
au début de la page, avant les infos en html (y compris <!DOCTYPE>
).
Pour fermer la session d'un utilisateur avant la fin du délai : session_destroy()
On peut récupérer n'importe où les infos de session, ensuite.
$_SESSION['pseudo'] = 'Cémoi'; echo $_SESSION['pseudo']
Le cookie a un temps d'expiration défini par timestamp. Exemple pour un cookie d'un an : time() + 365*24*3600)
. Ajouter une sécurité “httponly” (le true à la fin) pour éviter des failles.
<?php setcookie('pseudo', 'Cémoi', time() + 365*24*3600, null, null, false, true); ?>
Comme pour la session, le cookie doit être défini avant tout et surtout avant le html. Un cookie par info, par exemple pour stocker le pseudo, un autre pour l'âge…
Pour l'afficher $_COOKIE['pseudo']