# AMC-TXT source PaperSize: A4 Lang: FR Title: Université Côte d’Azur - Institut Universitaire de Technologie Département Informatique IOTIA 051 - Programmation Web Côté Serveur - PHP Vendredi 21 février 2020 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: 0 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} *[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" *[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" *[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 *[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 **[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 *[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 *[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 *[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 *[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 *[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 *[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 **[columns=2]Dans le code HTML : [verbatim]
, [/verbatim] Comment récupère-t-on les variables v1 et v2 passées dans l'« action » du formulaire lors de sa soumission ? - $v1 et $v2 + $_REQUEST["v1"] et = $_REQUEST["v2"] + $_GET["v1"] et $_GET["v2"] - $_POST["v1"] et $_POST["v2"] *[columns=2]Soit le code HTML suivant : [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 *[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["f1[v]"] ? - "B" + array("b", "d") - "AD" - array("A", "D") *[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 « Submit2 » le fichier puisse être téléchargé sur le serveur ? - « drwxr-xr-x » - « drwxr—xr—- » + « trwxrwxrwx » - « drwxrwxr-x » *[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 *[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[["f2[p]"]["tmp_name"][0] et $_FILES[["f2[p]"]["tmp_name"][1] + $_FILES[["f2[p]"]["name"][0] et $_FILES[["f2[p]"]["name"][1] - $_GET[["f2[p]"]["tmp_name"][0] et $_GET[["f2[p]"]["tmp_name"][1] - $_REQUEST[["f2[p]"]["tmp_name"][0] et $_REQUEST[["f2[p]"]["tmp_name"][1] **[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 /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") *[columns=2]Soit le fichier exemple.txt possédant les droits « -rwxr-xr-x » et se trouvant sous /files/mytexts/. Nous voulons ouvrir le fichier en écriture avec l'instruction suivante : [verbatim] $fp = fopen("/…/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 *[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 = $result->fetch_assoc()) { echo ""; foreach($row as $val) echo ""; echo ""; } echo "
$val
"; [/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 *[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") prise au hasard - 8 lettres prises au hasard - 8 chiffres pris au hasard + 8 caractères du tableau pris au hasard *[columns=1]Soit le code PHP suivant : [verbatim] $user = "root"; $pass = "rt!123"; $host = "localhost"; $conn = new mysqli_connect( $host, $user, $pass, "staff"); $sql = 'SELECT * FROM employes;'; $result = $conn->query( $sql); if ( $result->num_rows > 0) { while( $row = $result->fetch_assoc()) { foreach( $row as $val) { echo " $val
"; } } $conn->close(); [/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 **[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ée 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ée par les mots de $texte *[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 *[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 *[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 **[columns=1]Soit le code PHP suivant : [verbatim] // Récupère le contenu du fichier "xyz.txt" $cpt = file_get_contents( "xyz.txt"); 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" *[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 *[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(), "/"); *[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 *[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') **[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 *[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 **[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) **[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 **[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"); **[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) **[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(); *[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 *[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 !