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é.