PHP Flashcards
fonction rechercher et remplacer
$ma_variable = str_replace(‘b’, ‘p’, ‘bim bam boum’);
echo $ma_variable;
js: par quoi est encadrée une chaîne de caractères?
Par des apostrophes ou des guillemets, cela a peu d’importance.
js: récupérer la valeur d’un poste de tableau
il suffit de spécifier l’index voulu, entre crochets:
myArray[1] = ‘Clarisse’;
alert(myArray[1]); // Affiche : « Clarisse »
Tester si le fichier a bien été envoyé
if (isset($_FILES[‘monfichier’]) AND $_FILES[‘monfichier’][‘error’] == 0)
{
}
js: Que contiennent les objets?
un constructeur ; des propriétés ; des méthodes
var myString = ‘Ceci est une chaîne de caractères’; // On crée un objet String
alert(myString.length); // On affiche le nombre de caractères, au moyen de la propriété « length »
alert(myString.toUpperCase()); // On récupère la chaîne en majuscules, avec la méthode toUpperCase()
Les boutons d’options
Aimez-vous les frites ?
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
Comme vous pouvez le voir, les deux boutons d’option ont le même nom (« frites »). C’est très important, car ils fonctionnent par groupes : tous les boutons d’option d’un même groupe doivent avoir le même nom. Cela permet au navigateur de savoir lesquels désactiver quand on active un autre bouton du groupe. Il serait bête en effet de pouvoir sélectionner à la fois « Oui » et « Non ».
Pour pré-cocher l’un de ces boutons, faites comme pour les cases à cocher : rajoutez un attribut checked=”checked”. Ici, comme vous pouvez le voir, « Oui » est sélectionné par défaut.
Dans la page cible, une variable$_POST[‘frites’]sera créée. Elle aura la valeur du bouton d’option choisi par le visiteur, issue de l’attribut value. Si on aime les frites, alors on aura$_POST[‘frites’] = ‘oui’.
Il faut bien penser à renseigner l’attribut value du bouton d’option car c’est lui qui va déterminer la valeur de la variable.
règles de coding
PSR (PHP Standard Recommandations)
outil de contrôle: PHPCS-Fixer
parcourir un tableau
for, foreach, print_r
Valider l’upload du fichier
Si tout est bon, on accepte le fichier en appelant move_uploaded_file().
Cette fonction prend deux paramètres :
le nom temporaire du fichier (on l’a avec $_FILES[‘monfichier’][‘tmp_name’]) ;
le chemin qui est le nom sous lequel sera stocké le fichier de façon définitive. On peut utiliser le nom d’origine du fichier$_FILES[‘monfichier’][‘name’]ou générer un nom au hasard.
Je propose de placer le fichier dans un sous-dossier « uploads ».
On gardera le même nom de fichier que celui d’origine. Comme$_FILES[‘monfichier’][‘name’]contient le chemin entier vers le fichier d’origine (C:\dossier\fichier.pngpar exemple), il nous faudra extraire le nom du fichier. On peut utiliser pour cela la fonctionbasename qui renverra juste « fichier.png ».
// Testons si le fichier a bien été envoyé et s’il n’y a pas d’erreur
if (isset($_FILES[‘monfichier’]) AND $_FILES[‘monfichier’][‘error’] == 0)
{
// Testons si le fichier n’est pas trop gros
if ($_FILES[‘monfichier’][‘size’] <= 1000000)
{
// Testons si l’extension est autorisée
$infosfichier = pathinfo($_FILES[‘monfichier’][‘name’]);
$extension_upload = $infosfichier[‘extension’];
$extensions_autorisees = array(‘jpg’, ‘jpeg’, ‘gif’, ‘png’);
if (in_array($extension_upload, $extensions_autorisees))
{
// On peut valider le fichier et le stocker définitivement
move_uploaded_file($_FILES[‘monfichier’][‘tmp_name’], ‘uploads/’ . basename($_FILES[‘monfichier’][‘name’]));
echo “L’envoi a bien été effectué !”;
}
}
}
Le formulaire d’envoi de fichier
Dès l’instant où votre formulaire propose aux visiteurs d’envoyer un fichier, il faut ajouter l’attribut enctype=”multipart/form-data”à la balise form.
form action=”cible_envoi.php” method=”post” enctype=”multipart/form-data”
Grâce à enctype, le navigateur du visiteur sait qu’il s’apprête à envoyer des fichiers.
Maintenant que c’est fait, nous pouvons ajouter à l’intérieur du formulaire une balise permettant d’envoyer un fichier. C’est une balise très simple de type input type=”file” . Il faut penser comme toujours à donner un nom à ce champ de formulaire (grâce à l’attribut name) pour que PHP puisse reconnaître le champ par la suite.
form action=”cible_envoi.php” method=”post” enctype=”multipart/form-data”
Formulaire d’envoi de fichier :
input type=”file” name=”monfichier”
input type=”submit” value=”Envoyer le fichier”
js: création et affichage du tableau nicks
var nicks = [ ], // Création du tableau vide nick;
while (nick = prompt(‘Entrez un prénom :’)) { // Si la valeur assignée à la variable « nick » est valide (différente de « null ») alors la boucle s’exécute
nicks.push(nick); // Ajoute le nouveau prénom au tableau
}
if (nicks.length > 0) { // On regarde le nombre d’items
alert(nicks.join(‘ ‘)); // Affiche les prénoms à la suite
} else {
alert(‘Il n'y a aucun prénom en mémoire !’);
}
nous vérifions si le tableau contient des items, avec la condition nicks.length > 0. Le contenu du tableau est alors affiché avec la méthode join(), qui permet de spécifier le séparateur. Car en effet, si nous avions fait alert(nicks), les prénoms auraient été séparés par une virgule.
fonction écrire en minuscule
$chaine = ‘COMMENT CA JE CRIE TROP FORT ???’;
$chaine = strtolower($chaine);
echo $chaine;
(ou strtoupper pour l’inverse)
fonction mélanger les lettres
$chaine = ‘Cette chaîne va être mélangée !’;
$chaine = str_shuffle($chaine);
echo $chaine;
js: ajouter des items à un objet tableau
ici, pas de méthode push() car elle n’existe tout simplement pas dans un objet vide, il faudrait pour cela un tableau. En revanche, il est possible d’ajouter un item en spécifiant un identifiant qui n’est pas encore présent. Par exemple, si nous voulons ajouter un oncle dans le tableau :
family[‘uncle’] = ‘Didier’; // « Didier » est ajouté et est accessible via l’identifiant « uncle »
Ou bien sous cette forme :
family.uncle = ‘Didier’; // Même opération mais d’une autre manière
js: confirmer une action
Afin d’aller un petit peu plus loin dans le cours, nous allons apprendre l’utilisation d’une fonction bien pratique :confirm()! Son utilisation est simple : on lui passe en paramètre une chaîne de caractères qui sera affichée à l’écran et elle retourne un booléen en fonction de l’action de l’utilisateur ; vous allez comprendre en essayant :
if (confirm(‘Voulez-vous exécuter le code JavaScript de cette page ?’)) {
alert(‘Le code a bien été exécuté !’);
}
créer le bouton de validation du formulaire
input type=”text” name=”prenom”
input type=”submit” value=”Valider”
le champ input type=”submit” permet de créer le bouton de validation du formulaire qui commande l’envoi des données, et donc la redirection du visiteur vers la page cible
Vérifier l’extension du fichier
La fonction pathinfo renvoie un array contenant entre autres l’extension du fichier dans$infosfichier[‘extension’]. On stocke ça dans une variable$extension_upload.
Une fois l’extension récupérée, on peut la comparer à un tableau d’extensions autorisées (un array) et vérifier si l’extension récupérée fait bien partie des extensions autorisées à l’aide de la fonction in_array().
if (isset($_FILES[‘monfichier’]) AND $_FILES[‘monfichier’][‘error’] == 0)
{
// Testons si le fichier n’est pas trop gros
if ($_FILES[‘monfichier’][‘size’] <= 1000000)
{
// Testons si l’extension est autorisée
$infosfichier = pathinfo($_FILES[‘monfichier’][‘name’]);
$extension_upload = $infosfichier[‘extension’];
$extensions_autorisees = array(‘jpg’, ‘jpeg’, ‘gif’, ‘png’);
if (in_array($extension_upload, $extensions_autorisees))
{
} }
les opérations
+ - / * et %(donne le reste d’une division ex: 7 % 3 => 1) (modulo)
js: interaction avec l’utilisateur
var userName = prompt('Entrez votre prénom :'); alert(userName); // Affiche le prénom entré par l'utilisateur var start = 'Bonjour ', name, end = ' !', result;
name = prompt(‘Quel est votre prénom ?’);
result = start + name + end;
alert(result);
js: code conditionnel autre que if else
var drawer = parseInt(prompt('Choisissez le tiroir à ouvrir (1 à 4) :')); switch (drawer) { case 1: alert('Contient divers outils pour dessiner : du papier, des crayons, etc.'); break;
case 2: alert('Contient du matériel informatique : des câbles, des composants, etc.'); break; case 3: alert('Ah ? Ce tiroir est fermé à clé ! Dommage !'); break; case 4: alert('Contient des vêtements : des chemises, des pantalons, etc.'); break; default: alert("Info du jour : le meuble ne contient que 4 tiroirs et, jusqu'à preuve du contraire, les tiroirs négatifs n'existent pas."); }
Ls champs cachés
supposons que vous ayez besoin de « retenir » que le pseudo du visiteur est « Mateo21 ». Vous allez taper ce code :
input type=”hidden” name=”pseudo” value=”Mateo21”
À l’écran, sur la page web on ne verra rien. Mais dans la page cible, une variable$_POST[‘pseudo’] sera créée, et elle aura la valeur « Mateo21 » !
js: un tableau, codage:
Le contenu du tableau se définit entre crochets, et chaque valeur est séparée par une virgule. Les valeurs sont introduites comme pour des variables simples, c’est-à-dire qu’il faut des guillemets ou des apostrophes pour définir les chaînes de caractères :
var myArray_a = [42, 12, 6, 3]; var myArray_b = [42, 'Sébastien', 12, 'Laurence'];
Vérifier si une valeur existe dans l’array
$fruits = array (‘Banane’, ‘Pomme’, ‘Poire’, ‘Cerise’, ‘Fraise’, ‘Framboise’);
if (in_array(‘Myrtille’, $fruits))
{
echo ‘La valeur “Myrtille” se trouve dans les fruits !’;
}
définir un formulaire
balise
method=get pour récupérer les données de l’url
method=post pour récupérer es données dans le formulaire
action=définit le formulaire cible
Le traitement de l’envoi en PHP
le fichier a été envoyé sur le serveur mais il est stocké dans un dossier temporaire.
Il faut le contrôler avant de l’accepter avec move_uploaded_file
Les cases à cocher
input type=”checkbox” name=”case” id=”case”
label for=”case” Ma case à cocher /label
L’utilisation de la balise label n’est pas obligatoire mais je la recommande fortement. Elle permet d’associer le libellé à la case à cocher qui a le même id que son attribut for, ce qui permet de cliquer sur le libellé pour cocher la case. On y gagne donc en ergonomie.
Là encore, on donne un nom à la case à cocher via l’attribut name(ici : « case »). Ce nom va générer une variable dans la page cible, par exemple$_POST[‘case’].
Si la case a été cochée, alors$_POST[‘case’] aura pour valeur « on ».
Si elle n’a pas été cochée, alors$_POST[‘case’]n’existera pas. Vous pouvez faire un test avecisset($_POST[‘case’])pour vérifier si la case a été cochée ou non.
Si vous voulez que la case soit cochée par défaut, il faudra lui rajouter l’attribut checked=”checked”. Par exemple :
input type=”checkbox” name=”case” checked=”checked”
Vérifier la taille du fichier
if (isset($_FILES[‘monfichier’]) AND $_FILES[‘monfichier’][‘error’] == 0)
{
// Testons si le fichier n’est pas trop gros
if ($_FILES[‘monfichier’][‘size’] <= 1000000)
{
} }
js: utilisation des objets littéraux dans une variable
les fonctions, avec return, ne savent retourner qu’une seule variable. Si on veut retourner plusieurs variables, il faut les placer dans un tableau et retourner ce dernier. Mais il est plus commode d’utiliser un objet littéral.
L’exemple classique est la fonction qui calcule des coordonnées d’un élément HTML sur une page Web. Il faut ici retourner les coordonnées x et y.
function getCoords() { /* Script incomplet, juste pour l'exemple */
return { x: 12, y: 21 }; }
var coords = getCoords();
alert(coords.x); // 12
alert(coords.y); // 21
La valeur de retour de la fonction getCoords() est mise dans la variable coords, et l’accès à x et y en est simplifié.
fonction longueur d’une chaîne
$phrase = ‘Bonjour tout le monde ! Je suis une phrase !’;
$longueur = strlen($phrase);
echo ‘La phrase ci-dessous comporte ‘ . $longueur . ‘ caractères :<br></br>’ . $phrase;
la liste déroulante
select name=”choix”
option value=”choix1”>Choix 1Choix 2Choix 3Choix 4
js: une fonction
Le mot-clé function est présent à chaque déclaration de fonction. C’est lui qui permet de dire « Voilà, j’écris ici une fonction ! » ;
Vient ensuite le nom de votre fonction, ici myFunction;
S’ensuit un couple de parenthèses contenant ce que l’on appelle des arguments. Ces arguments servent à fournir des informations à la fonction lors de son exécution. Par exemple, avec la fonction alert() quand vous lui passez en paramètre ce que vous voulez afficher à l’écran ;
Et vient enfin un couple d’accolades contenant le code que votre fonction devra exécuter.
Js: où placer le code js, pourquoi?
Il vaut mieux privilégier un fichier externe plutôt que d’inclure le code JavaScript directement dans la page, car le fichier externe est mis en cache par le navigateur et n’est donc pas rechargé à chaque chargement de page, ce qui accélère l’affichage de la page.
js: tester l’existence de variables
Il se peut que vous ayez un jour ou l’autre besoin de tester l’existence d’une variable ou d’en vérifier son type. Dans ce genre de situations, l’instruction typeof est très utile, voici comment l’utiliser :
var number = 2; alert(typeof number); // Affiche : « number »
var text = 'Mon texte'; alert(typeof text); // Affiche : « string »
var aBoolean = false; alert(typeof aBoolean); // Affiche : « boolean » Simple non ? Et maintenant voici comment tester l'existence d'une variable :
alert(typeof nothing); // Affiche : « undefined »
Voilà un type de variable très important ! Si l’instruction typeof vous renvoie undefined, c’est soit que votre variable est inexistante, soit qu’elle est déclarée mais ne contient rien.
Comment vérifier un fichier reçu?
$_FILES[‘monfichier’][‘name’]
Contient le nom du fichier envoyé par le visiteur.
$_FILES[‘monfichier’][‘type’]
Indique le type du fichier envoyé. Si c’est une image gif par exemple, le type seraimage/gif.
$_FILES[‘monfichier’][‘size’]
Indique la taille du fichier envoyé. Attention : cette taille est en octets. Il faut environ 1 000 octets pour faire 1 Ko, et 1 000 000 d’octets pour faire 1 Mo.
Attention : la taille de l’envoi est limitée par PHP. Par défaut, impossible d’uploader des fichiers de plus de 8 Mo.
$_FILES['monfichier']['tmp_name'] Juste après l'envoi, le fichier est placé dans un répertoire temporaire sur le serveur en attendant que votre script PHP décide si oui ou non il accepte de le stocker pour de bon. Cette variable contient l'emplacement temporaire du fichier (c'est PHP qui gère ça).
$_FILES[‘monfichier’][‘error’]
Contient un code d’erreur permettant de savoir si l’envoi s’est bien effectué ou s’il
y a eu un problème et si oui, lequel. La
variable vaut 0 s’il n’y a pas eu d’erreur.
vérification php.ini
error_reporting et display_errors ont respectivement les valeurs E_ALL & on.
js: boucle choisie pour l’incrémentation
Dans les parenthèses de la boucle ne se trouve plus juste la condition, mais trois blocs : initialisation, condition, et incrémentation. Ces trois blocs sont séparés par un point-virgule ; c'est un peu comme si les parenthèses contenaient trois instructions distinctes. for (var iter = 0; iter < 5; iter++) { alert('Itération n°' + iter); } for (var nicks = '', nick; true;) { nick = prompt('Entrez un prénom :'); if (nick) { nicks += nick + ' '; } else { break; } } alert(nicks);
récupérer la date
$jour = date('d'); $mois = date('m'); $annee = date('Y'); $heure = date('H'); $minute = date('i'); // Maintenant on peut afficher ce qu'on a recueilli echo 'Bonjour ! Nous sommes le ' . $jour . '/' . $mois . '/' . $annee . 'et il est ' . $heure. ' h ' . $minute;
js: Pourquoi ne pas appliquer lefor insur les tableaux avec index ?
Parce que les tableaux se voient souvent attribuer des méthodes supplémentaires par certains navigateurs ou certains scripts tiers utilisés dans la page, ce qui fait que la boucle for in va vous les énumérer en même temps que les items du tableau.
Il y a aussi un autre facteur important à prendre en compte : la boucle for in est plus gourmande qu’une boucle for classique.
créer un tableau associatif
$coordonnees = array ( ‘prenom’ => ‘François’, ‘nom’ => ‘Dupont’, ‘adresse’ => ‘3 Rue Paradis’, ‘ville’ => ‘Marseille’);
les conditions
if else == > < >= <= != AND && OR !=
parcourir un tableau numéroté
for ($numero = 0; $numero < 5; $numero++)
{
echo $prenoms[$numero] . ‘ // affichera $prenoms[0], $prenoms[1] etc. ´;
}
js: où placer l’élément script
Une page Web est lue par le navigateur de façon linéaire, c’est-à-dire qu’il lit d’abord le “head”, puis les éléments de “body” les uns à la suite des autres. Si vous appelez un fichier JavaScript dès le début du chargement de la page, le navigateur va charger ce fichier, et si ce dernier est volumineux, le chargement de la page s’en trouvera ralenti.
Pour pallier ce problème, il est conseillé de placer les éléments “script” juste avant la fermeture de l’élément “body”
js: boucle d’entrée de prénoms
var nicks='',nick; while (true){ nick=prompt('prénom'); if (nick){ nicks+=nick; } else { break; } } alert(nicks);
les variables
commencent par $, peuvent être alpha, int(42) numérique (55,3) booléenne(true, false) ou nulle (null)
js: la conversion de type
tout ce qui est écrit dans le champ de texte de prompt() est récupéré sous forme d’une chaîne de caractères, que ce soit un chiffre ou non. Du coup, si vous utilisez l’opérateur +, vous ne ferez pas une addition mais une concaténation !
C’est là que la conversion des types intervient. Le concept est simple : il suffit de convertir la chaîne de caractères en nombre. Pour cela, vous allez avoir besoin de la fonction parseInt()
var first, second, result;
first = prompt(‘Entrez le premier chiffre :’);
second = prompt(‘Entrez le second chiffre :’);
result = parseInt(first) + parseInt(second);
alert(result);
Récupérer la clé d’une valeur dans l’array
$fruits = array (‘Banane’, ‘Pomme’, ‘Poire’, ‘Cerise’, ‘Fraise’, ‘Framboise’);
$position = array_search(‘Fraise’, $fruits);
echo ‘“Fraise” se trouve en position ‘ . $position . ‘<br></br>’;
Afficher un guillemet
'
parcourir un tableau associatif
$coordonnees = array ( 'prenom' => 'François', 'nom' => 'Dupont', 'adresse' => '3 Rue Paradis', 'ville' => 'Marseille'); foreach($coordonnees as $element) { echo $element . ''; }
passer de paramètres dans une url
Lorsqu’on fait un lien vers une page, il est possible d’ajouter des paramètres sous la forme bonjour.php?nom=Dupont&prenom=Jean qui seront transmis à la page.
La page bonjour.php recevra ces paramètres dans un array nommé$_GET:
$_GET[‘nom’]aura pour valeur «Dupont»;
$_GET[‘prenom’]aura pour valeur «Jean».
js: accès aux items d’un tableau
nous avons créé un objet, et les identifiants sont en réalité des propriétés, exactement comme la propriété length d’un tableau ou d’une chaîne de caractères. Donc, pour récupérer le nom de la sœur, il suffit de faire :
family.sister;
Il existe une autre manière, semblable à celle qui permet d’accéder aux items d’un tableau en connaissant l’indice, sauf qu’ici on va simplement spécifier le nom de la propriété :family[‘sister’];
Cela va nous être particulièrement utile si l’identifiant est contenu dans une variable, comme ce sera le cas avec la boucle que nous allons voir après. Exemple :
var id = ‘sister’;
alert(family[id]); // Affiche : « Laurence »
Cette façon de faire convient également aux propriétés de tout objet. Ainsi, si notre tableau se nomme myArray, nous pouvons faire myArray[‘length’]pour récupérer le nombre d’items.
Serveur PHP sous Windows
WAMP (Apache, php, mysql)
js: ajouter un poste à un tableau (3 méthodes)
push()permet d’ajouter un ou plusieurs items:
La méthode unshift() fonctionne comme push(), excepté que les items sont ajoutés au début du tableau. Cette méthode n’est pas très fréquente mais peut être utile.
Les méthodes shift() et pop() retirent respectivement le premier et le dernier élément du tableau.
var myArray = [‘Sébastien’, ‘Laurence’, ‘Ludovic’, ‘Pauline’, ‘Guillaume’];
myArray.shift(); // Retire « Sébastien »
myArray.pop(); // Retire « Guillaume »
alert(myArray); // Affiche « Laurence,Ludovic,Pauline »
js: noms des interpréteurs sous ie8 ie9 firefox chrome
Chakra JScript SpiderMonkey V8
js: accéder aux items d’un tableau par un identifiant
var family = { self: 'Sébastien', sister: 'Laurence', brother: 'Ludovic', cousin_1: 'Pauline', cousin_2: 'Guillaume' };
js: parcourir un objet littéral
var family = { self: 'Sébastien', sister: 'Laurence', brother: 'Ludovic', cousin_1: 'Pauline', cousin_2: 'Guillaume' }; for (var id in family) { // On stocke l'identifiant dans "id" pour parcourir l'objet "family". alert(family[id]); } La boucle for in est l'équivalent de la boucle foreach du PHP : elle est très simple et ne sert qu'à une seule chose : parcourir un objet. Le fonctionnement est quasiment le même que pour un tableau, excepté qu'ici il suffit de fournir une « variable clé » qui reçoit un identifiant (au lieu d'un index) et de spécifier l'objet à parcourir :
js: transformer une chaîne de caractères en tableau
et l’inverse
Les chaînes de caractères possèdent une méthode split() qui permet de les découper en un tableau, en fonction d’un séparateur
var cousinsString = ‘Pauline Guillaume Clarisse’,
cousinsArray = cousinsString.split(‘ ‘);
alert(cousinsString);
alert(cousinsArray);
L’inverse de split(), c’est-à-dire créer une chaîne de caractères depuis un tableau, se nomme join():
var cousinsString_2 = cousinsArray.join(‘-‘);
alert(cousinsString_2);
Comme vous pouvez le constater, une méthode peut très bien retourner une valeur, tout comme le ferait une fonction indépendante d’un objet. D’ailleurs, on constate que split() et join() retournent toutes les deux le résultat de leur exécution, elles ne l’appliquent pas directement à l’objet.
js:origine
créé en 1995 par Brendan Eich chez Netscape, envoyé à ECMA (European Computer Manufacturers Association)
version actuelle ECMAScript5 (2009)
une grande zone de texte
textarea name=”message” rows=”8” cols=”45”>
Votre message ici.
textarea
il n’y a pas d’attribut value. En fait, le texte par défaut est ici écrit entre les balises . Si vous ne voulez rien mettre par défaut, alors n’écrivez rien
Les attributs rows et cols permettent de définir la taille de la zone de texte en hauteur et en largeur respectivement
js: portée des variables
toute variable déclarée dans une fonction n’est utilisable que dans cette même fonction ! Ces variables spécifiques à une seule fonction ont un nom : les variables locales.
Lorsqu’une variable n’est accessible que dans une partie de votre code, on dit qu’elle se trouve au sein d’un « scope ». Retenez bien ce terme, il vous servira à l’avenir.
Résoudre le problème XXS
il faut protéger le code HTML en l’échappant, c’est-à-dire en affichant les balises (ou en les retirant) plutôt que de les faire exécuter par le navigateur
Pour échapper le code HTML, il suffit d’utiliser la fonction htmlspecialchars qui va transformer les chevrons des balises HTML<> en < et > ;respectivement. Cela provoquera l’affichage de la balise plutôt que son exécution.
Je sais comment tu t’appelles, hé hé. Tu t’appelles
echo htmlspecialchars($_POST[‘prenom’]);
Le code HTML qui en résultera sera propre et protégé car les balises HTML insérées par le visiteur auront été échappées :
<p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <strong>Badaboum</strong></p>
La faille XXS
cross-site scripting
technique qui consiste à injecter du code HTML contenant du JavaScript dans vos pages pour le faire exécuter à vos visiteurs.
Je sais comment tu t’appelles, hé hé. Tu t’appelles php echo $_POST[‘prenom’];
Je sais comment tu t’appelles, hé hé. Tu t’appelles
script type=”text/javascript” alert(‘Badaboum’) script
créer un tableau numéroté
// La fonction array permet de créer un tableau $prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
js: cas spécial de l’opérateur OU
Celui-ci, en plus de sa fonction principale, permet de renvoyer la première variable possédant une valeur évaluée à true! Exemple : var conditionTest1 = '', conditionTest2 = 'Une chaîne de caractères'; alert(conditionTest1 || conditionTest2)
ce code nous retourne la valeur « Une chaîne de caractères ». Pourquoi ? Eh bien parce que l’opérateur OU va se charger de retourner la valeur de la première variable dont le contenu est évalué à true!
erreur de début
Ici, j’ai eu le malheur de mettre un peu de code HTML avant le session_start(), et c’est ce qui a provoqué l’erreur. Mettez le session_start()en tout premier, et vous n’aurez plus de problème:
La syntaxe d’un objet
Précédemment vous avez vu que pour créer un array vide il suffisait d’écrire :
var myArray = [];
Pour les objets c’est à peu près similaire sauf que l’on met des accolades à la place des crochets :
var myObject = {};
Pour définir dès l’initialisation les items à ajouter à l’objet, il suffit d’écrire :
var myObject = {
item1: ‘Texte 1’,
item2: ‘Texte 2’
};
Comme l’indique ce code, il suffit de taper l’identifiant souhaité suivi de deux points et de la valeur à lui attribuer. La séparation des items se fait comme pour un tableau, avec une virgule.
parcourir un tableau associatif et sa clé
$coordonnees = array (
‘prenom’ => ‘François’,
‘nom’ => ‘Dupont’,
‘adresse’ => ‘3 Rue du Paradis’,
‘ville’ => ‘Marseille’);
foreach($coordonnees as $cle => $element)
{
echo ‘[’ . $cle . ‘] vaut ‘ . $element . ‘
‘;
}
js: parcourir un tableau avec for
var myArray = ['Sébastien', 'Laurence', 'Ludovic', 'Pauline', 'Guillaume']; Le principe pour parcourir un tableau est simple : il faut faire autant d'itérations qu'il y a d'items. Le nombre d'items d'un tableau se récupère avec la propriété length, exactement comme pour le nombre de caractères d'une chaîne de caractères. À chaque itération, on va avancer d'un item dans le tableau, en utilisant la variable de boucle i: à chaque itération, elle s'incrémente, ce qui permet d'avancer dans le tableau item par item. Voici un exemple :
for (var i = 0; i < myArray.length; i++) {
alert(myArray[i]);
}
mieux:
for (var i = 0, c = myArray.length; i < c; i++) {
alert(myArray[i]);
}
js: déclarer une variable
Pour déclarer une variable, il vous suffit d'écrire la ligne suivante : var myVariable; Le JavaScript étant un langage sensible à la casse, faites bien attention à ne pas vous tromper sur les majuscules et minuscules utilisées car, dans l'exemple suivant, nous avons bel et bien trois variables différentes déclarées : var myVariable; var myvariable; var MYVARIABLE; Le mot-clé var est présent pour indiquer que vous déclarez une variable. Une fois celle-ci déclarée, il ne vous est plus nécessaire d'utiliser ce mot-clé pour cette variable et vous pouvez y stocker ce que vous souhaitez var myVariable; myVariable = 2; Il est possible de simplifier ce code en une seule ligne : var myVariable = 5.5; // Comme vous pouvez le constater, les nombres à virgule s'écrivent avec un point. De même, vous pouvez déclarer et assigner des variables sur une seule et même ligne : var myVariable1, myVariable2 = 4, myVariable3; Ici, nous avons déclaré trois variables en une ligne mais seulement la deuxième s'est vu attribuer une valeur.
Une petite précision ici s’impose : quand vous utilisez une seule fois l’instruction var pour déclarer plusieurs variables, vous devez placer une virgule après chaque variable (et son éventuelle attribution de valeur) et vous ne devez utiliser le point-virgule (qui termine une instruction) qu’à la fin de la déclaration de toutes les variables.
les boucles
$nombre_de_lignes = 1; WHILE ($nombre_de_lignes <= 100) { echo ‘Je ne dois pas regarder les mouches voler quand j'apprends le PHP.
‘; $nombre_de_lignes++; // $nombre_de_lignes = $nombre_de_lignes +1
}
FOR ($nombre_de_lignes = 1; $nombre_de_lignes <= 100; $nombre_de_lignes++)
{
echo ‘Ceci est la ligne n°’ . $nombre_de_lignes . ‘’;
}
js: les ternaires
var startMessage = 'Votre catégorie : ', endMessage, adult = confirm('Êtes-vous majeur ?'); endMessage = adult ? '18+' : '-18'; alert(startMessage + endMessage);
La variable endMessage va accueillir le résultat de la ternaire ;
La variable adult va être analysée par la ternaire ;
Un point d’interrogation suivi d’une valeur (un nombre, du texte, etc.) ;
Deux points suivis d’une deuxième valeur et enfin le point-virgule marquant la fin de la ligne d’instructions.
Le fonctionnement est simple : si la variable adult vaut true alors la valeur retournée par la ternaire sera celle écrite juste après le point d’interrogation, si elle vaut false alors la valeur retournée sera celle après les deux points.
var result, number = 42;
result=(number>10) ? ‘Plus grand que 0’ : ‘Plus petit que 10’ ;
alert (result);