# AMC-TXT source
# JM Bruneau
# 2024-01-12
# 30 questions
PaperSize: A4
Lang: FR
Title: Université Côte d’Azur - Institut Universitaire de Technologie
Département Informatique
R301 - Développement WEB - PHP
Lundi 6 janvier 2025
Presentation: Questionnaire à Choix Unique ou Multiple (♣) - Durée ~ 45mn
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]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
# Q2
**[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
# Q4
*[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")
# Q5
*[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 »
# Q6
*[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
# Q7
*[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]
# Q8
**[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")
# Q9
*[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
# Q10
*[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.
# Q11
*[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.
# Q12
*[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.
# Q13
**[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.
# Q14
*[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.
# Q15
*[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.
# Q16
*[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
# Q17
**[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"
# Q18
*[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
# Q19
*[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(), "/");
# Q20
*[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
# Q21
*[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')
# Q22
**[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
# Q23
*[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
# Q24
**[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)
# Q25
**[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 visible dans un autre fichier que index.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
# Q26
**[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");
# Q27
**[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)
# Q28
*[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();
# Q29
*[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
# Q30
*[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 !