Différences

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


Révision précédente
pratique:informatique:php [30/11/2020 10:36] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== PHP ======
 +Je me lance dans l'apprentissage de php, via [[https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql|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 :
 +<code php>
 +<?php 
 +?>
 +</code>
 +
 +  * Toujours mettre un '';'' à la fin d'une instruction.
 +  * Commentaires sur une ligne : ''<nowiki>//</nowiki>''
 +  * Commentaires sur plusieurs lignes, encadrés par ''<nowiki>/*</nowiki>'' et ''<nowiki>*/</nowiki>''.
 +
 +===== Fonctions =====
 +  * ''echo'' pour afficher du texte ou le résultat de [[#variables|variables]]. Ex : <code php><?php echo "bla"; ?></code>
 +  * ''include()'' pour inclure une autre page. Ex : <code php><?php include("bla.php"); ?></code>
 +
 +Pour récupérer une fonction dans une variable (pour un ''echo'' par exemple) :
 +  $var = fonction(paramètres);
 +
 +Pour créer une fonction
 +
 +<code php>
 +<?php
 +function NomDeLaFonction($parametre)
 +{
 +    code;
 +}
 +?></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 :
 +<code php><?php
 +$age_du_capitaine = 17;
 +?></code>
 +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
 +<code php>
 +<?php
 +$age = 8;
 +
 +if ($age <= 12)
 +{
 +    echo "Salut gamin !";
 +}
 +else
 +{
 +    echo "Salut vieux !";
 +}
 +?></code>
 +
 +===== Boucles =====
 +<code php><?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++; 
 +}
 +?>
 +</code>
 +
 +<code php><?php
 +for ($var = 1; $var <= 100; $var++)
 +{
 +    echo 'Ceci est la ligne n°' . $var . '<br />';
 +}
 +?></code>
 +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) : ''<nowiki><input type="text" name="valeur" /></nowiki>''
 +  * Entrer une zone de texte (définir le nombre de lignes, largeur, etc) : ''<nowiki><textarea name="message" rows="8" cols="45">Exemple pré-remplit</textarea></nowiki>''
 +  * Valider (bouton) : ''<nowiki> <input type="submit" value="Valider" /> </nowiki>''
 +  * Liste déroulante : <code>
 +    <select name="choix">
 +    <option value="choix1">Choix 1</option>
 +    <option value="choix2">Choix 2</option>
 +    </select></code>
 +  * 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 (asssocier ''id'' et ''for'').
 +  * Bouton radio, avec l'un présélectionné avec l'attribut ''checked="checked"''. Tous les boutons d'un même choix partagent le même ''name=''. ''<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='') :  
 +  * ''<nowiki><form action="cible.php" method="post"> ... </form> </nowiki>''(cible.php est le fichier où sera affiché le résultat après submit)
 +
 +<WRAP center round important 60%>
 +Sur les données récupérées par $_POST et $_GET, ajouter ''htmlspecialchars'' pour bloquer l'interprétation de balises html. Exemple :
 +<code php><?php echo htmlspecialchars($_POST['prenom']); ?> !</p></code>
 +
 +La fonction ''strip_tags'' enlèvera les balises html qui auraient pu être ajoutées.
 +</WRAP>
 +
 +Pour résumer : 
 +<code php><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></code>
 +
 +===== 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 [[wpfr>Horodatage#PHP|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']''
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki