PHP Test Flashcards
Que contiennent (principalement) les outils XAMP, WAMP ou MAMP ?
PHP
Serveur Web
SGBD (Système de Gestion de Base de Données)
Veuillez indiquer la balise ouvrante permettant d’ajouter du code PHP
Veuillez indiquer la balise fermante d’une partie de code PHP
?>
code PHP permettant d’initialiser une constante avec la valeur de Pi (3.1415)
const PI = 3.1415;
variable
commence toujours par le caractère $
// ceci est une variable contenant une valeur entière $var1 = 14; // ceci est une variable contenant une valeur réelle $var2 = 45.67;
variable dynamique
variable dont on peut construire dynamiquement le nom.
// exemple $i = 1; ${"varDynamique".$i} = 5; // correspond à $varDynamique1 = 5;
Le nom d’une variable dynamique peut provenir d’une autre variable.
La variable dynamique se reconnaît au $$
$variable1 = 1; $variable2 = 2; $nom = "variable1"; echo \$\$nom; // affichera 1 $nom = "variable2"; echo \$\$nom; // affichera 2
Qu’affichera le code suivant ?
$unBoolean = true;
echo $unBoolean;
1
Qu’affichera le code suivant ?
$unBoolean = false;
echo $unBoolean;
rien
Doit-on typer les variables en PHP ?
Non, les variables en PHP ne doivent pas être typées.
Comment détruit-on une variable en PHP ?
A l’aide de la fonction unset(nomVariable);
$tab = [1,2,3,4,5,7]; // Création d'un tableau //... unset($tab); // Destruction du tableau
Quelles sont les deux manières de créer des chaînes de caractères ?
- Avec des doubles guillemets
$chaine1 = “Ceci est une chaîne de caractères”; - Avec des simples guillemets
$chaine1 = ‘Ceci est aussi une chaîne de caractères’;
Qu’affichera le code suivant :
$variable1 = “En voilà une surprise”;
echo “$variable1 : interessante”;
En voilà une surprise interessante
Remarque : $variable1 a été remplacé par le contenu de la variable
Qu’affichera le code suivant :
$variable1 = “En voilà une surprise”;
echo ‘$variable1 : interessante’;
$variable1 : interessante
Comment savoir si une variable est d’un certain type ?
A l'aide des fonctions suivantes : is_bool(uneVariable); is_int(uneVariable); is_integer(uneVariable); is_float(uneVariable); is_double(uneVariable); is_array(uneVariable); is_string(uneVariable); is_object(uneVariable); is_null(uneVariable); is_resource(uneVariable); is_callable(uneVariable); is_iterable(uneVariable);
Qu’affichera le code suivant ?
$chaine = ‘test’;
if ($chaine) {
echo ‘$chaine a été traité comme true’, ‘<br></br>’;
} else {
echo ‘$chaine a été traité comme false’, ‘<br></br>’;
}
$chaine a été traité comme true
Remarque : Toutes les variables quelque soit leurs types peuvent être utilisées comme si elles étaient de type booléen dans une condition ! Les valeurs : - false; - 0 - 0.0 - " ou "" (chaînes vides) - '0' ou "0" (chaînes contenant zéro) - Un tableau vide - null sont considérées comme étant false Toutes les autres valeurs sont considérées comme étant true
Peut-on convertir le contenu d’une chaîne en un entier ?
- Oui à l’aide du transtypage.
$chaine = ‘12’;
$entier = (int) $chaine; // $entier vaudra 12 - ou à l’aide de la fonction settype(uneVariable);
$variable = ‘12’;
settype($variable, “int”);
var_dump($variable); // affichera int(12)
Quelle est la différence entre :
l’opérateur d’affectation =
et
l’opérateur d’affectation par référence = & … ? (Veuillez donner un exemple)
- L'opérateur d'affectation = "copie" le contenu de la variable. Exemple : $var1 = 5; $var2 = $var1; // $var2 vaut 5 $var2++; // $var2 vaut 6 echo $var1, '<br>'; // Affiche 5 echo $var2; // Affiche 6
- L’opérateur d’affectation par référence = & … “met” une référence sur la variable
Exemple :
$var1 = 5;
$var2 = &$var1; // $var2 contient une référence à $var1 => 5
$var2++; // $var2 vaut 6 (mais $var1 aussi !)
echo $var1, ‘<br></br>’; // Affiche 6
echo $var2; // Affiche 6
Qu’affichera l’exécution du code suivant :
$texte = “Des petits trous, “ . “des petits trous, “ . “toujours des petits
trous”;
echo $texte;
Des petits trous, des petits trous, toujours des petits trous
Qu'affichera l'exécution du code suivant : $var1 = 5; $var2 = 6; $var3 = '6'; $var4 = $var1 + 1; echo "1 ", $var1 <=> $var2; echo '<br>'; echo "2 ", $var2 == $var3; echo '<br>'; echo "3 ", $var3 === $var4;
1 -1
2 1
3
1 -1 l’opérateur <=> retourne -1 car 5 est plus petit que 6
2 1 l’opérateur == retourne true (affiche 1) car les valeurs 6 et ‘6’ sont équivalentes
3 l’opérateur === retourne false (affiche rien !) car les valeurs ‘6’ et 6 sont
équivalentes MAIS PAS DU MEME TYPE.
Que fait l’opérateur XOR ? (Veuillez donner un exemple)
Le XOR correspond à un ou exclusif . Il faut qu’un seul des deux opérandes soit vrai ( true )
$joueur1aGagne = true; $joueur2aGagne = false; if ($joueur1aGagne XOR $joueur2aGagne) { echo "Il y a un gagnant"; } else { echo "Il n'y a pas un seul gagnant (peut-être ex ex aequo)"; }
Qu’affichera l’exécution du code suivant :
echo 4 * 3 ** 2;
L’exécution du code affichera : 36
(4 fois (3 puissance 2))
Remarque : L’opérateur ** (puissance) a la priorité par rapport à l’opérateur *
(multiplication) .
Soit l’instruction suivante :
echo $a < $b ? ‘A est inférieur à B’ : ‘A est supérieur ou égal à B’;
De quel opérateur s’agit-il ? Que va faire ce code ?
Il s’agit de l’opérateur ternaire.
Cette instruction permet d’afficher un résultat différentié suivant la condition.
Elle signifie :
Si le contenu de la variable $a est plus petit que celui de la variable $b affiche :
- A est inférieur à B
sinon affiche :
- A est supérieur ou égal à B
Qu’affichera l’exécution du code suivant :
$tab = [2,5,6,8];
$code = $tab ? 256 : 568;
echo $code;
Il s’agit toujours de l’opérateur ternaire. Une variable peut être utilisée comme un booléen.
Comme le tableau $tab n’est pas vide il sera interprété comme true . Donc $code vaudra
256
L’exécution du code affichera donc : 256
Qu'affichera l'exécution du code suivant : $baies = ['framboise', 'fraise', 'cassis', 'mûre']; foreach ($baies as $baie) { switch ($baie) { case "mûre": echo 'On passe par là'; echo 'br'; case 'fraise': echo 'On passe par ici'; echo 'br'; case "framboise": echo 'On passe'; echo 'br'; break; default : echo 'Non, rien de rien'; echo 'br'; } }
On passe On passe par ici On passe Non, rien de rien On passe par là On passe par ici On passe
Soit le tableau suivant : $tabPoints = [ "Julie" => 78, "Jean" => 12, "Simon" => 34, "Lise" => 36];
Veuillez écrire le code permettant d'obtenir le résultat suivant : Julie a obtenu 78 points Jean a obtenu 12 points Simon a obtenu 34 points Lise a obtenu 36 points
foreach ($tabPoints as $prenom => $nbPoints) {
echo $prenom, “ a obtenu “, $nbPoints, “ points”, “<br></br>”;
}
Soit les deux valeurs suivantes :
$max = 15;
$min = 7;
Veuillez écrire le code permettant d'obtenir le résultat suivant : 15 13 11 9 7
for ($i=$max; $i>=$min; $i-=2) {
echo $i,’br’;
};
Veuillez écrire le code permettant d’afficher le nombre 1234.56789 sous la forme d’un
montant 1’234.55 CHF
$nombre = 1234.56789; $precision = 0.05; // A 5 centimes près $arrondi = round($nombre/$precision)*$precision; $separateurEntierFractionnaire = '.'; $separateurMilliers = "'"; $montant = number_format($arrondi, 2, $separateurEntierFractionnaire, $separateurMilliers); echo $montant,"CHF","<br>";
A quoi reconnaît-on une fonction qui retourne quelque chose d’une fonction qui ne retourne
rien ?
- Une fonction qui retourne quelque chose contient au moins un return
- Une fonction qui ne retourne rien n’a pas de return
Qu'affichera l'exécution du code suivant : function additionne($val1, $val2) { return $val1 + $val2; } echo additionne("c'est une bonne ", "question");
Retourne une erreur fatale Fatal Error
Comme php n’est pas typé, on peut envoyer ce que l’on veut à une fonction…
Remarque : Attention de ne pas confondre l’opérateur de concaténation de java “+” avec
celui de php “.”
Qu'affichera l'exécution du code suivant : function elvis() { echo "Elvis","br"; } function chuck() { echo "Chuck","br"; } $elvis = false; $elvis ?: call_user_func("chuck");
Cela affichera : Chuck
Il s’agit de l’opérateur elvis (qui est l’opérateur ternaire sans deuxième opérande)
Comme le test est faux, cela effectuera ce qui est après les deux points; c’est à dire cela
exécutera la fonction chuck() qui affiche : Chuck
qu'affiche: $var1 = 5; function uneFonction(&$param) { $param++; echo '$param : ', $param, 'BR'; } uneFonction($var1); echo '$var1 : ', $var1;
$param : 6
$var1 : 6
La variable $var1 est liée au paramètre $param . Toute modification de $param se
répercute sur $var1
Veuillez écrire une fonction qui retourne la valeur minimale et la valeur maximale d'un tableau $tab = [4, 5, 7, 2, 8, 1, 6, 4, 3]; function rendMinMax($unTab) { // .. } $minMax = rendMinMax($tab);
$tab = [4, 5, 7, 2, 8, 1, 6, 4, 3]; function rendMinMax($unTab) { $min = $unTab[0]; $max = $unTab[0]; for ($i = 1; $i < count($unTab); $i++) { if ($unTab[$i] < $min) { $min = $unTab[$i]; } else { if ($unTab[$i] > $max) { $max = $unTab[$i]; } } } return ['min' => $min, 'max' => $max]; } $minMax = rendMinMax($tab); echo 'min : ', $minMax['min'], '<br>'; echo 'max : ', $minMax['max'], '<br>';
Qu’est-ce qu’une fonction récursive ? (Veuillez donner un exemple)
C'est une fonction qui s'appelle elle même $tab = [4, 5, 7, 2, 8, 1, 6, 4, 3]; function affiche($unTab) { if (count($unTab)>0) { echo $unTab[0],' '; array_shift($unTab); // enlève le premier élément du tableau affiche($unTab); } } affiche($tab);
Qu’est ce qu’une fonction typée ? (Veuillez donner un exemple)
C’est une fonction dont les paramètres sont typés et dont on sait si elle retourne une valeur
ou non
function rendSomme(float $a, float $b) : float {
return ($a + $b);
}
function afficheSomme(float $a, float $b) : void {
echo ($a + $b);
}
echo rendSomme(6.5, 3.4), ‘<br></br>’;
afficheSomme(10.4, 9.5);
Soit les deux montants suivant :
12.55.-
1250.-
Veuillez écrire le code permettant d’aligner ces nombres sur la virgule.
$montant1 = 12.55; $montant2 = 1250; echo '<pre>'; // pour que les espaces soient gérés correctement ;-) printf("% 10.2f",$montant1); echo '<br>'; printf("% 10.2f",$montant2); echo '</pre>';
$tab = ['a', 'b', 'c']; unset($tab[1]); foreach($tab as $element) { echo $element,'<br>'; } echo '<br>'; for($i=0; $i'; } // var_dump($tab);
affiche:
a
c
a
pourquoi?
L’élément central du tableau a bien été supprimé, MAIS les index (numéro de case) des
cases restantes n’ont pas été modifiés.
Il faut donc faire très attention !
Il existe une fonction prédéfinie ( array_values(…); ) qui permet de recalculer les index
d’un tableau.
$chaine = “Vous deveriez manger des croissants, des pizzas et des glaces tous les jours”;
Veuillez écrire le code nécessaire permettant d’obtenir:
Vous deveriez manger des fruits, des légumes et des fibres tous les jours
$chaine = “Vous deveriez manger des croissants, des pizzas et des glaces
tous les jours”;
$sains = [“fruits”, “légumes”, “fibres”];
$malsains = [“croissants”, “pizzas”, “glaces”];
$chaine = str_replace($malsains, $sains, $chaine);
echo $chaine;
méthode GET
Dans le cas d’une requête GET, seule une quantité limitée de données peut être envoyée car les données sont envoyées dans l’en-tête.
La requête GET n’est pas sécurisée car les données sont visibles dans la barre d’URL.
Les paramètres restent dans l’historique du navigateur car ils font partie de l’URL
Les requêtes GET sont ré-exécutées mais ne peuvent pas être soumises au serveur si le code HTML est stocké dans la mémoire cache du navigateur.
Seuls les caractères ASCII sont autorisés.
GET est moins sécurisé que POST car les données envoyées font partie de l’URL. Donc, il est enregistré dans l’historique du
navigateur et les journaux du serveur en texte brut.
La méthode GET ne doit pas être utilisée lors de l’envoi de mots de passe ou d’autres informations sensibles.
méthode POST
En cas de requête POST, une grande quantité de données peut être envoyée car les données sont envoyées dans le corps.
La requête POST est sécurisée car les données ne sont pas visibles dans la barre d’URL.
Les paramètres ne sont pas enregistrés dans l’historique du
navigateur.
Le navigateur prévient généralement l’utilisateur que les données devront être soumises à nouveau
Pas de restrictions. Les données binaires sont également autorisées.
POST est un peu plus sûr que GET car les paramètres ne sont pas stockés dans l’historique du navigateur ou dans les journaux du serveur Web.
Méthode POST doit être utilisée lors de l’envoi de mots de passe ou d’autres informations sensibles.
Dans un formulaire une case à cocher est souvent liée à un label.
Comment indique-t-on que le label “appartient” à la case à cocher ?
En mettant un attribut id=”un nom” dans le balise input
En mettant un attribut for=”un nom” dans le balise label
Souhaitez-vous vous abonner à la newsletter ?
ou en mettant le champ input dans la balise label
Voulez-vous vous
abonner
Comment coche-t-on par défaut une case à cocher dans un formulaire ?
En ajoutant l’attribut checked dans la balise input
Etes-vous majeur ?
A quoi doit-on faire attention lors de case à cocher multiples ayant le même attribut name ?
Il faut que l’attribut name soit un tableau !
<div>
Language(s) maîtrisé(s) :
</div>
<div>
Java
</div>
<div>
PHP
</div>
<div>
C#
</div>
<div>
</div>
Quelle différence y-a-t’il entre un groupe de cases à cocher et un groupe de boutons radios ?
On peut cocher plusieurs cases à cocher
On ne peut cocher qu’un seul bouton radio
A quelles conditions le clic sur ce lien ci-dessous fonctionnera correctement
<a>Envoi</a>
Il est absolument nécessaire que les variables $prenom et $nom ne contiennent pas de simple guillemet (‘).
Sinon le lien ne fonctionnera pas. (Le contenu de l’attribut href se terminerai avant la fin de la balise a )
Il est recommandé d’encoder les variables avant.
<a>Envoi</a>
Quelle(s) recommandation(s) feriez-vous pour faciliter la validation de donnée(s) provenant
d’un formulaire ?
Il est hautement recommandé d’utiliser des filtres pour permettre la validation facilitée des données.
Soit le code suivant permettant de cliquer sur une image.
Comment récupère-t-on les coordonnées du clic de la souris ?
<div>
Clique sur l'image :-)
</div>
<div>
</div>
En ajoutant un _x et un _y derrière le nom donné à l’image
$coordX = filter_input(INPUT_POST, 'monImage_x', FILTER_VALIDATE_INT); $coordY = filter_input(INPUT_POST, 'monImage_y', FILTER_VALIDATE_INT);
Comment encode-t-on un mot de passe pour ne pas pouvoir le lire ?
A l’aide de la fonction : password_hash(…)
echo password_hash(‘Vive le PHP’, PASSWORD_DEFAULT);
qui retourne une chaîne du genre :
‘$2y$10$4XXNzXWQkfKNOQ5T9XMC/ee1e4SelEG3ZZA4hoZpOyUhhLoyykwDy’
Comment vérifie-t-on un mot de passe envoyé par un utilisateur ?
A l’aide de la fonction : password_verify(…)
password_verify($password,
‘$2y$10$4XXNzXWQkfKNOQ5T9XMC/ee1e4SelEG3ZZA4hoZpOyUhhLoyykwDy’)