# AMC-TXT source
# JM Bruneau
# 2023-01-11
# xx questions
PaperSize: A4
Lang: FR
Title: Université Côte d’Azur - Institut Universitaire de Technologie
Département Informatique
R301 - Développement WEB - PHP
Vendredi 27 janvier 2023
Presentation: Questionnaire à Choix Unique ou Multiple (♣) - Durée ~ 1h15
Document autorisé : une feuille A4 recto-verso.
Calculatrice, Téléphone Portable et Ordinateur non-autorisés.
ShuffleQuestions: 1
Code: 8
NameFieldLines: 0
CodeDigitsDirection: horizontal
Columns: 1
CompleteMulti: 0
L-None: aucune des réponses ci-dessus n'est correcte.
Pages: 2
ManualDuplex: 1
LaTeX-Preambule: \geometry{hmargin=1.5cm}
# Q1
*[columns=2]Quelle est la valeur de la variable $txt1 correspondant au code PHP suivant :
[verbatim]
$ch1 = "ABC"; $ch2 = "123"; $ch3 = "DFE"; $ch4 = "456";
$txt1 = ""; $txt1 .= $ch1 . "-" . $ch4; $txt1 .= "#" . $ch2 . "-" . $ch3;
[/verbatim]
- "123-DFE#ABC-456"
- "456-ABC#123-DFE"
+ "ABC-456#123-DFE"
- “DFE-123#456-ABC"
# Q2
*[columns=2]Quelle est la valeur de $txt1[4] . $txt1[8] correspondant au code PHP suivant ?
[verbatim]
$ch1 = "ABC"; $ch2 = "123"; $ch3 = "DFE"; $ch4 = "456";
$txt1 = ""; $txt1 .= $ch1 . "-" . $ch4; $txt1 .= "#" . $ch2 . "-" . $ch3;
[/verbatim]
- "#6"
+ "41"
- "B3"
- "14"
# Q3
*[columns=1]Soit le code PHP suivant :
[verbatim]
Nous sommes le
";
if ( Date("H") < 12 )
echo "Bonjour…";
else
echo "Bon après-midi…";
?>
[/verbatim]
Nous supposons qu’il est 9h00 et que notre fichier PHP se trouve dans notre dossier /home/jb123456/bonjour.php.
Nous ouvrons ce fichier avec notre navigateur avec comme URL file:///home/jb123456/bonjour.php, qu'affichera-t-il ?
- Nous sommes le 07/01/2020 Bonjour…
- Nous sommes le 07/01/2020 Bon après-midi…
- Nous sommes le
+ Le code PHP tel quel sans les balises du langage HTML
# Q4
*[columns=1]Dans un fichier .html, peut-on manipuler une variable globale définie en langage PHP ?
- Oui
+ Non
- Il suffit d’utiliser la variable $GLOBALS de PHP
- Il suffit de la manipuler entre deux balises
# Q5
**[columns=1]
Peut-on intégrer du code HTML dans un fichier .php ?
+ Oui
- Non
+ Il faut utiliser les balises … …
- Il faut que le fichier ne contienne pas de balise
# Q6
*[columns=2]En langage PHP, on considère l'extrait de code suivant :
[verbatim]
$k = 0; $email = "luc.skywalker@jedi.com"; $nom = "Skywalker"; $prenom = "Luke";
$membres[$k]["email"] = $email;
$membres[$k]["nom"] = $nom;
$membres[$k]["prenom"] = $prenom;
foreach( $membres as $i => $val) {
$nom_prenom = ""; $email = "";
foreach( $val as $titre => $valeur) {
if ( strcmp( $titre, "email") == 0)
print( $valeur . "
");
else
print( $valeur . " ");
}
}
[/verbatim]
Que désigne la variable $titre dans la seconde boucle « foreach » ?
- Le titre du tableau
- Les clés d'un tableau associatif
+ Les indices d'un tableau associatif
- Les valeurs des éléments d'un tableau
# Q7
*[columns=2]En langage PHP, on considère l'extrait de code suivant :
[verbatim]
$k = 1; $email = "han.solo@contrabandist.com"; $nom = "Solo"; $prenom = "Han";
$membres[$k]["email"] = $email;
$membres[$k]["nom"] = $nom;
$membres[$k]["prenom"] = $prenom;
$membres[$k]["email"] = $email;
$membres[$k]["nom"] = $nom;
$membres[$k]["prenom"] = $prenom;
foreach( $membres as $i => $val) {
$nom_prenom = ""; $email = "";
foreach( $val as $titre => $valeur) {
if ( strcmp( $titre, "email") == 0)
print( $valeur . "
");
else
print( $valeur . " ");
}
}
[/verbatim]
Que désigne la variable $val dans la première boucle « foreach » ?
+ Un tableau associatif
- La clé "nom"
- Le clé "prenom"
- La variable $email
# Q8
*[columns=1]On considère l'extrait de code PHP suivant :
[verbatim]
$k = 2; $email = "dark.vador@darkside-force.com"; $nom = "Dark"; $prenom = "Vador";
$membres[$k]["email"] = $email;
$membres[$k]["nom"] = $nom;
$membres[$k]["prenom"] = $prenom;
foreach( $membres as $m => $val) {
$nom_prenom = ""; $email = "";
foreach ($val as $name => $valeur) {
if ( strcmp( $name, "email") != 0)
print( $valeur . "
");
else
print( $valeur . " ");
}
}
[/verbatim]
Que fait l'instruction if … else ?
- Trie les éléments du tableau par email, par nom et par prenom.
+ Affiche les valeurs du tableau par email suivi par le nom et le prenom.
- Affiche les indices des valeurs du tableau
- Affiche les indices des clés du tableau
# Q9
*[columns=2]Soit le code PHP suivant :
[verbatim]
$v = 3;
function xyz($a, $b, &$x) {
$x = $a * $a + $b * $b;
}
function kwz($a, $b, $z) {
print("1) La valeur de v est $v
") ; // premier print
$z = $a + $b - $z;
$v = 4 * $z;
print("2) La valeur de v est $v
") ; // deuxième print
}
xyz( 1, 2, $v);
kwz( 2, $v, 5);
print("3) La valeur de v est $v
") ; // troisième print
[/verbatim]
Quelle est la valeur de la variable $v au premier print ?
- 3
- 5
- 2
+ Non définie
# Q10
*[columns=2]Soit le code PHP suivant :
[verbatim]
$v = 3;
function xyz($a, $b, &$x) {
$x = $a * $a + $b * $b;
}
function kwz($a, $b, $z) {
print("1) La valeur de v est $v
") ; // premier print
$z = $a + $b - $z;
$v = 4 * $z;
print("2) La valeur de v est $v
") ; // deuxième print
}
xyz( 1, 2, $v);
kwz( 2, $v, 5);
print("3) La valeur de v est $v
") ; // troisième print
[/verbatim]
Quelle est la valeur de la variable $v au deuxième print ?
- 3
+ 8
- 2
- Non définie
# Q11
*[columns=2]Soit le code PHP suivant :
[verbatim]
$v = 3;
function xyz($a, $b, $x) {
$x = $a*$a + $b*$b ;
}
function kwz($a, $b, $z) {
print("1) La valeur de v est $v
") ; // premier print
$z = $a + $b - $z;
$v = 4*$z ;
print("2) La valeur de v est $v
") ; // deuxième print
}
xyz(1,2,&$v);
kwz(2,$v,5);
print("3) La valeur de v est $v
") ; // troisième print
[/verbatim]
Quelle est la valeur de la variable $v au troisième print ?
- 3
- 8
- 2
+ 5
# Q12
**[columns=2]Dans le code HTML :
[verbatim]
[/verbatim]
Quel est le nombre d’éléments maximal que l’on peut sélectionner simultanément dans le formulaire f1?
- 1
- 2
- 3
+ 4
# Q14
*[columns=2]Soit le code HTML suivant :
[verbatim]
[/verbatim]
En supposant que l’on a sélectionné 2 et 4 quel est la valeur de $_REQUEST["f2[v]"] ?
- "B"
+ array("b", "d")
- "AD"
- array("A", "D")
# Q15
*[columns=2]Soit le code HTML suivant :
[verbatim]
[/verbatim]
Considérons les droits du répertoire tmp/ se trouvant dans la racine du site, quel doivent être ses droits pour qu’en clickant sur « Submit » le fichier puisse être téléchargé sur le serveur ?
- « drwxr-xr-x »
- « drwxr—xr—- »
+ « trwxrwxrwx »
- « drwxrwxr-x »
# Q16
*[columns=2]Soit le code HTML suivant :
[verbatim]
[/verbatim]
Quelle est la variable globale de PHP qui permet de récupérer les fichiers téléchargés ?
- $_GET
- $_POST
- $_REQUEST
+ $_FILES
# Q17
*[columns=1]Soit le code HTML suivant :
[verbatim]
[/verbatim]
Supposons que nous avons sélectionné deux fichiers images img1.jpg et img2.jpg. Comment sont récupérés les noms des fichiers img1.jpg et img2.jpg ?
- $_FILES["f5[p]"]["tmp_name"][0] et $_FILES["f5[p]"]["tmp_name"][1]
+ $_FILES["f5[p]"]["name"][0] et $_FILES["f5[p]"]["name"][1]
- $_GET["f5[p]"]["tmp_name"][0] et $_GET["f5[p]"]["tmp_name"][1]
- $_REQUEST["f5[p]"]["tmp_name"][0] et $_REQUEST["f5[p]"]["tmp_name"][1]
# Q18
**[columns=2]Soit le fichier « exemple.txt » possédant les droits « -rwxr-x--x » et se trouvant sous le répertoire « /files/mytexts/ ».
Dans le fichier « open.php » se trouvant sous le dossier « /work/read/ » lesquelles de ces instructions retourne « TRUE » ?
+ is_file( "../../files/mytexts/exemple.txt")
- is_file( "exemple.txt")
+ is_file( "/files/mytexts/exemple.txt")
- is_file( "files/mytexts/exemple.txt")
# Q19
*[columns=2]Soit le fichier « exemple.txt » possédant les droits « -rwxr-xr-x », appartenant à un utilisateur quelconque et se trouvant sous « /files/mytexts/ ».
Nous voulons ouvrir le fichier en écriture avec l'instruction suivante :
[verbatim]
$fp = fopen("/files/mytexts/exemple.txt", "w+");
[/verbatim]
Quelle sera la valeur de la ressource $fp ?
- TRUE
+ FALSE
- un pointeur sur la première ligne du fichier
- un pointeur sur la dernière ligne du fichier
# Q20
*[columns=1]Soit le code PHP suivant :
[verbatim]
function xyz() {
static $col;
$c1 = "lightgray";
$c2 = "white";
if ($col == $c1) {
$col = $c2;
} else {
$col = $c1;
}
return $col;
}
echo "";
while( $row = $sth->fetch(PDO::FETCH_ASSOC) {
echo "";
foreach( $row as $val)
echo "$val | ";
echo "
";
}
echo "
";
[/verbatim]
Comment le tableau est il affiché ?
- Les cellules du tableau ont une couleur de fond en quinconce.
- Les colonnes du tableau ont une couleur de fond en alternance.
+ Les lignes du tableau ont une couleur de fond en alternance.
- L’entête du tableau est d’une couleur différente de celle des lignes.
# Q21
*[columns=1]Soit le code PHP suivant :
[verbatim]
$tableau = ["0","1","2","3","4","5","6","7","8","9",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n",
"o","p","q","r","s","t","u","v","w","x","y","z",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N",
"O","P","Q","R","S","T","U","V","W","X","Y","Z"];
$str = array_rand( $tableau, 8);
$new_str = "";
foreach( $str as $i) {
$new_str .= $tableau[$i];
}
echo "La chaine est : " . $new_str;
[/verbatim]
Que contient la chaine $new_str ?
- Une suite de 8 caractères du tableau (ex : "6","7","8","9", "a","b","c","d") pris au hasard.
- 8 lettres prises au hasard.
- 8 chiffres pris au hasard.
+ 8 caractères du tableau pris au hasard.
# Q22
*[columns=1]Soit le code PHP suivant :
[verbatim]
$user = "root"; $pass = "rt!123"; $host = "localhost";
$dbh = new PDO( "pgsql:host=$host;dbname=staff", $user, $pass);
$sql = 'SELECT * FROM employes;';
$sth = $dbh->query( $sql);
while( $row = $sth->fetch(PDO::FETCH_ASSOC) {
foreach( $row as $val) {
echo "$val
";
}
}
[/verbatim]
Que se passe t’il lors de l’exécution de ce code ?
- On a une erreur de connexion au SGBD.
- On a une erreur de connexion à la base de données « staff ».
- On a une erreur de requête SQL.
+ Tout se passe correctement.
# Q23
**[columns=1]On considère le code PHP suivant :
[verbatim]
function xxx( string $texte) : string {
$String = explode( " ", $texte);
$NewString = "";
for( $i = 0; $i < count( $String); $i++) {
$NewString .= $String[$i];
}
return $NewString;
}
[/verbatim]
Que fait l'instruction « explode() » ?
- Supprime les espaces dans $texte.
+ Crée un tableau formé par les mots de $texte séparés par des espaces.
- Crée une liste formée par les mots de $texte séparés par des espaces.
+ Crée un tableau formé par les mots de $texte.
# Q24
*[columns=1]On considère le code PHP suivant :
[verbatim]
function xxx( string $texte) : string {
$String = explode( " ", $texte);
$NewString="";
for( $i = 0; $i < count( $String); $i++) {
$NewString .= $String[$i];
}
return $NewString;
}
[/verbatim]
Que fait la fonction « xxx() » ?
- Renvoie une chaine de caractère extraite du texte sans le modifier.
+ Renvoie une chaîne de caractère constituée par les mots du texte sans les espaces.
- Renvoie une chaîne de caractère constituée par les mots du texte rangés en sens inverse.
- Renvoie une chaine vide.
# Q25
*[columns=1]Soit le code PHP suivant :
[verbatim]
$date = time();
function yyy( $date){
// l’appel de la fonction date avec "z" calcule le nombre de jour depuis le début de l’année
$jour = date( "z", $date);
$num = ( $jour / 7) + 1;
$num_res = intval( $num);
return $num_res;
}
[/verbatim]
Que fait la fonction « yyy() » ?
- Renvoie le nombre de mois depuis le début de l’année.
- Renvoie le nombre de dimanche depuis le début de l’année.
+ Renvoie le nombre de semaine depuis le début de l’année.
- Renvoie le nombre de jours depuis le début de l’année.
# Q26
*[columns=1]Soit le code suivant :
[verbatim]
[/verbatim]
Que fait le code précédent si on suppose que la connection $conn à la base de donnée est établie
et que la table « mytable » contient plusieurs colonnes dont « myfield » ?
- Affiche le contenu de la table "mytable"
- Affiche un sélecteur constituée par les valeurs du champ "myfield"
- Affiche un sélecteur constituée par les champs de "mytable"
+ Génère une erreur d’exécution
# Q27
**[columns=1]Soit le code PHP suivant :
[verbatim]
// Récupère le contenu d'un fichier
$fichier = "xyz.txt";
$cpt = file_get_contents( $fichier);
if( ! isset( $_COOKIE["xyz"])) {
setcookie( "xyz", "ok", time() + (86400 * 30),"/");
$cpt++;
$inf = fopen( $fichier,"w");
if ( $inf) {
fputs( $inf, $cpt);
fclose( $inf);
}
}
[/verbatim]
Que fait le code précédent ?
+ Compte le nombre de visite à une page et l’enregistre dans le fichier "xyz.txt" pour le cookie "xyz"
- Affiche le contenu du fichier xyz.txt
+ Génère un cookie "xyz" et lui affecte "ok"
- Enregistre le cookie "xyz" dans le fichier "xyz.txt"
# Q28
*[columns=2]Soit le cookie suivant :
[verbatim]
$cookie_name = "user";
$cookie_value = "Alphonse Karr";
setcookie( $cookie_name, $cookie_value, time() + (86400 * 30), "/");
[/verbatim]
Quelle est la durée de ce cookie ?
- Un jour
+ Un mois
- 30 heures
- 30 jours
# Q29
*[columns=1]Soit le cookie suivant :
[verbatim]
$cookie_name = "user";
$cookie_value = "Alphonse Karr";
setcookie( $cookie_name, $cookie_value, time() + (86400 * 30), "/");
[/verbatim]
Comment peut on détruire le cookie précédent ?
- unset( $cookie_name);
- unset( $_COOKIE["user"]);
- $cookie_name = FALSE;
+ setcookie( $cookie_name, $cookie_value, time(), "/");
# Q30
*[columns=1]Soit le code suivant :
[verbatim]
$filters = array (
"name" => array( "filter" => FILTER_CALLBACK,
"flags" => FILTER_FORCE_ARRAY, "options" => "ucwords"),
"age" => array ( "filter" => FILTER_VALIDATE_INT,
"options" => array( "min_range" => 18, "max_range" => 120)),
"email" => FILTER_VALIDATE_EMAIL
);
print_r( filter_input_array( INPUT_POST, $filters));
[/verbatim]
Sur quoi s'applique ce filtre ?
- Les variables $name, $age, $email
+ Les champs d’un formulaire soumis avec la méthode « post »
- Les propriétés « name », « age » et « email » d’un objet
- Les champs « name », « age » et « email » d’une table associative
# Q31
*[columns=1]Soit le code suivant :
[verbatim]
$filters = array (
"name" => array( "filter" => FILTER_CALLBACK,
"flags" => FILTER_FORCE_ARRAY, "options" => "ucwords"),
"age" => array ( "filter" => FILTER_VALIDATE_INT,
"options" => array( "min_range" => 18, "max_range" => 120)),
"email" => FILTER_VALIDATE_EMAIL
);
print_r( filter_input_array( INPUT_POST, $filters));
[/verbatim]
Sachant que la constante « FILTER_FORCE_ARRAY » force à retourner un tableau et « ucwords » exige une majuscule sur le premier mot d’une chaine.
Sélectionnez le cas où la réponse sera vraie :
+ array( "name" => "Peter", "age" => 41, "email" => 'peter@exemple.com')
- array( "name" => "John", "age" => 15, "email" => 'john@exemple.com')
- array( "name" => "sabine", "age" => 30, "email" => 'sabine@exemple.com')
- array( "name" => "Daniel", "age" => 66, "email" => 'daniel@xz*y.com')
# Q32
**[columns=1]Pour déclarer une session dans le fichier session.php, on écrit le code :
[verbatim]
[/verbatim]
Sélectionnez les réponses exactes :
- L’instruction echo affiche : « Variables session : green cat »
+ La session ne démarre pas
- Les variables $_SESSION["favcolor"] et $_SESSION["favanimal"] sont vides
+ La session doit être lancée avant les balises
# Q33
*[columns=1]On suppose qu’une session a été lancée et que les variables de session « favcolor » et « favanimal » ont été affectées respectivement à « green » et « cat ».
Soit le code suivant :
[verbatim]
[/verbatim]
Que fait le code ci-dessus ?
+ L’instruction echo affiche : « Variables session : green cat »
- Les variables $_SESSION["favcolor"] et $_SESSION["favanimal"] sont vides
- La session session étant relancée les variables $_SESSION["favcolor"] et $_SESSION["favanimal"] n’existent plus
- La réutilisation de l’instruction « session_start(); » déclenche une erreur
# Q34
**[columns=2]Soit $v = "1"; $t = 1. Sélectionnez les cas où les opérateurs logiques suivants renvoient TRUE :
+ ($v == $t)
- ($t === $v)
+ ($v.$t === "11")
+ ($v !== $t)
# Q35
**[columns=1]Soit la variable globale « y » déclarée entre les balises dans index.php dont un extrait est :
[verbatim]
[/verbatim]
Sélectionnez la/les réponse(s) exacte(s) ?
- La valeur de « y » dans le fichier est conservée dans une autre fichier que test.php
+ La valeur « y » utilisée dans la fonction xyz déclarée dans index.php (cf 1) est conservée
+ La valeur « y » utilisée dans entre les balises de index.php (cf 2) est conservée
- La valeur de « y » a une durée de vie limitée
# Q36
**[columns=2]Soit la définition de classe :
[verbatim]
class Fruit {
// Properties
public $name;
public $color;
private $region;
// Methods
function set_name( $name) {
$this->name = $name;
}
function set_region( $name) {
$this->region = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
[/verbatim]
Sélectionnez la/les syntaxe(s) exacte(s) ?
+ $apple->name = "Pomme";
- $apple->region = "Normandie";
+ $apple->set_name("Normandie");
- $apple->get_name("Apple");
# Q37
**[columns=2]Soit un objet défini à partir de la classe myObject :
[verbatim]
class myObject {
function __destruct() {
echo "My Object is destroyed :(";
}
}
$a = new myObject();
$b = $a;
$c = $b;
$d = clone $a;
unset($a); // (1)
unset($b); // (2)
unset($c); // (3)
unset($d); // (4)
[/verbatim]
Quand s'affiche la phrase "My Object is destroyed :(" ?
- après (1)
- après (2)
+ après (3)
+ après (4)
# Q38
*[columns=1]Soit un objet défini par :
[verbatim]
class Fruit {
private $name;
private $color;
public function __construct( $name, $color) {
$this->name = $name;
$this->color = $color;
}
protected function intro() {
echo "Ce fruit est un(e) {$this->name} et sa couleur est {$this->color}.";
}
}
class Pomme Extends Fruit {
private $region;
public function message() {
echo "Je suis un fruit ou une pomme?";
}
public function __construct( $name, $color, $region) {
$this->region = $region;
parent::__construct($name, $color);
}
}
$F = new Fruit( "pomme", "rouge");
$P = new Pomme( "pomme", "rouge", "var");
$P->message();
$P->intro();
[/verbatim]
Indiquez l'instruction qui génère une erreur :
- $F = new Fruit( "pomme", "rouge");
- $P = new Pomme( "pomme", "rouge", "var");
- $P->message();
+ $P->intro();
# Q39
*[columns=1]Que fait la constante __CLASS__ ?
- Donne le chemin d'accès à la classe en cours
- Donne le nom de l'objet utilisé
+ Donne le nom de la classe en cours
- Donne le nom du fichier utilisé par la classe en cours
# Q40
*[columns=1]Soit la fonction add() déclarée dans les fichiers model.php, view.php et controller.php.
On inclut les 3 fichiers par des "require_once" dans un fichier main.php.
[verbatim]
=> model.php :
namespace MVC\Model;
function add(int $a, int $b) { // (1)
}
=> view.php :
namespace MVC\View;
function add(int $a, int $b) { // (2)
}
=> controller.php :
function add(int $a, int $b) { // (3)
}
=> main.php :
require_once './model.php';
require_once './view.php';
require_once './controller.php';
function add(int $a, int $b) { // (4)
}
echo "Happy New Year !";
[/verbatim]
Que se passe-t-il lors de l'exécution de main.php ?
- on a une erreur en (1) : Erreur MVC est inconnu
- on a une erreur en (2) : Redeclaration de la fonction add()
- on a une erreur en (3) : Redeclaration de la fonction add()
+ on a une erreur en (4) : Redeclaration de la fonction add()
- on affiche : Happy New year !