0% ont trouvé ce document utile (0 vote)
45 vues18 pages

Devoir

Le document contient une série de questions et d'exercices sur la programmation orientée objet en PHP, les bases de données SQL et la création de formulaires HTML. Il aborde des concepts tels que la définition de classes, la création d'objets, l'héritage, les méthodes, ainsi que des requêtes SQL pour manipuler des données. Les questions incluent également des aspects de sécurité et de bonnes pratiques en développement web.

Transféré par

nadasouiles1
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
45 vues18 pages

Devoir

Le document contient une série de questions et d'exercices sur la programmation orientée objet en PHP, les bases de données SQL et la création de formulaires HTML. Il aborde des concepts tels que la définition de classes, la création d'objets, l'héritage, les méthodes, ainsi que des requêtes SQL pour manipuler des données. Les questions incluent également des aspects de sécurité et de bonnes pratiques en développement web.

Transféré par

nadasouiles1
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

1. Que signifie "POO" en PHP ?

a) Programmation Orientale Ordonnée


b) Programmation Orientée Objet
c) Procédure Optimisée Objet
d) Programmation Ouverte Orientée

2. Comment définit-on une classe en PHP ?


a) define class Nom { ... }
b) function Nom { ... }
c) class Nom { ... }
d) new Nom { ... }

3. Comment crée-t-on un objet à partir d’une classe Voiture ?


a) obj = Voiture();
b) new Voiture();
c) $obj = new Voiture();
d) class Voiture();

4. Que signifie le mot-clé private dans une classe PHP ?


a) La méthode est visible par tous
b) La méthode ne peut être appelée que depuis l'extérieur
c) La méthode est inaccessible sauf dans la classe
d) La méthode est protégée par mot de passe

5. Que permet un constructeur (__construct) ?


a) Créer une base de données
b) Initialiser un objet automatiquement à sa création
c) Copier une classe
d) Détruire un objet
6. Le mot-clé extends permet en PHP :
a) De supprimer une classe
b) De créer une nouvelle classe
c) D’hériter d’une autre classe
d) De fermer une classe

7. Quelle est la bonne syntaxe pour définir une méthode publique ?


a) function public maMethode() {}
b) method public maMethode()
c) public function maMethode() {}
d) private method maMethode() {}

8. Qu’est-ce qu’un objet en PHP orienté objet ?


a) Un tableau de valeurs
b) Une instance d’une classe
c) Un fichier PHP
d) Une fonction réutilisable

9. Quel est le rôle d’un constructeur dans une classe ?

p. 1
a) Supprimer une instance automatiquement
b) Créer une nouvelle classe
c) Initialiser un objet lors de sa création
d) Déclarer des variables privées

10. Donnez la différence entre public, private et protected.


a) Ce sont des types de retour de fonction
b) Ils définissent les niveaux d’accès aux propriétés et méthodes
c) Ils servent à nommer des objets
d) Ce sont des types de classes

11. Comment appelle-t-on une méthode d’un objet $p de la classe Personne ?


a) Personne->$p()
b) $p.Personne()
c) $p->methode()
d) methode->$p()

12. Quelle est l’utilité de l’héritage dans la POO ?


a) Réduire la taille du code HTML
b) Partager des fichiers entre projets
c) Réutiliser des propriétés et méthodes d’une classe par une autre
d) Créer des bases de données

13. À quoi sert l’abstraction dans la programmation orientée objet en PHP ?


a) À créer des objets sans les instancier
b) À définir une interface graphique
c) À déclarer des classes avec des méthodes obligatoires pour les classes filles
d) À exécuter du code JavaScript dans une classe PHP

p. 2
8. Complétez la classe suivante pour qu’elle affiche "Bonjour, je suis un étudiant."
class Etudiant {
public function __construct() {

$e = new Etudiant();
………………………………………………………………………………………………………………………………
……………………………………………………
9. Créez une classe Animal avec une propriété $nom et une méthode parler() qui affiche "Je
suis un animal".
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………

10. Créez une classe Chien qui hérite de Animal et redéfinit la méthode parler() pour afficher
"Ouaf
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………

11. En PHP, quelle superglobale est utilisée pour récupérer les données envoyées par un
formulaire de type POST ?
a) $_GET
b) $_POST

p. 3
c) $_SESSION
d) $_SERVER

12. Quelle est la bonne commande SQL pour créer une clé primaire ?
a) ADD KEY PRIMARY
b) PRIMARY KEY (nom_colonne)
c) MAKE PRIMARY KEY
d) SET KEY PRIMARY

13. Pour sécuriser une session, on utilise :


a) $_COOKIES
b) session_start()
c) header_secure()
d) session_protect()

14. Quelle est la bonne syntaxe pour déclarer une variable en PHP ?
a) var nom = "Ali";
b) $nom = "Ali";
c) string nom = "Ali";
d) let nom = "Ali";

15. Quelle structure est utilisée pour parcourir un tableau ?


a) for
b) while
c) foreach
d) loop

16. Quelle fonction permet de compter le nombre d’éléments dans un tableau ?


a) count()
b) sizeof()
c) length()
d) nbr()

17. Que fait isset($var) ?


a) Vérifie si $var est définie et non nulle
b) Vide la variable
c) Affiche la variable
d) Compare deux variables

18. Quelle est la différence entre include et require ?


a) include arrête le script en cas d’erreur
b) require est optionnel
c) include continue le script
d) Aucune différence

19. Quelle est la bonne syntaxe d’une condition if ?


a) if { $a == $b }
b) if ($a == $b)
c) if $a == $b then
d) if $a = $b :

p. 4
20. Que va afficher ce code PHP :
$a = 5;
$b = "5";
if ($a === $b) {
echo "Identiques";
} else {
echo "Différents";
}

a) Identiques
b) Différents
c) Erreur
d) Aucun affichage

21. À quoi sert une clé primaire dans une table MySQL ?
a) À stocker des valeurs dupliquées dans une colonne
b) À identifier de manière unique chaque enregistrement dans la table
c) À définir une relation entre deux bases de données différentes
d) À augmenter la taille de la table automatiquement

22. Une relation entre deux tables dans une base de données est définie avec :
a) une clé primaire
b) un identifiant
c) une clé étrangère
d) un index

23. Quel est le rôle d’une table de liaison entre deux entités ?
a) Stocker les données principales de chaque entité
b) Assurer la relation many-to-many (plusieurs-à-plusieurs) entre deux tables
c) Sauvegarder les sauvegardes de la base de données
d) Optimiser les performances des requêtes SELECT

24. Quelle commande SQL permet d’ajouter une nouvelle ligne dans une table ?
a) ADD INTO
b) INSERT INTO
c) PUT INTO
d) APPEND TO

25. Quelle commande est utilisée pour modifier des données existantes dans une table ?
a) MODIFY
b) ALTER
c) UPDATE
d) CHANGE

26. Écrire une requête SQL pour créer une table Maladie avec deux champs :
num_maladie (clé primaire)
designation_maladie

a)
CREATE TABLE Maladie (
num_maladie INT PRIMARY KEY,

p. 5
designation_maladie VARCHAR(255)
);

b)
CREATE TABLE Maladie {
num_maladie INT,
designation_maladie VARCHAR(255),
PRIMARY KEY (num_maladie)
};

c)
CREATE TABLE Maladie (
designation_maladie VARCHAR(255),
num_maladie INT PRIMARY KEY
);

d)
CREATE Maladie TABLE (
num_maladie INT PRIMARY KEY,
designation_maladie VARCHAR(255)
);

27. Quelle clause permet de spécifier les conditions dans une requête UPDATE ?
a) SET
b) WHERE
c) HAVING
d) FROM

28. La commande CREATE TABLE est utilisée pour :


a) Modifier une table
b) Supprimer une table
c) Créer une table
d) Copier une table

p. 6
29. Soit le modèle relationnel :
client(id_client, cin, nom, prenom, email, password)
typeImmo(id_type, libelle)
immobilier(id_immobilier, titre, adresse, prixlocation, #id_type, disponible(oui-non))
location(id_location, #id_immobilier, #id_client, date_debut_location, date_fin_location)

Compléter la requête pour afficher la liste des locations effectuées entre deux dates

__________
i.titre,
c.nom,
c.prenom,
l.date_debut_location,
l.date_fin_location,
i.prixlocation
__________
location l
JOIN
immobilier i ON l.id_immobilier = i.id_immobilier
JOIN
________________________________________
WHERE
l.date_debut_location ____________ '2024-06-01' AND '2024-06-30';

p. 7
30. Que permet la commande SQL suivante ?

INSERT INTO clients (id, nom) VALUES (1, 'Ali');

a) Elle met à jour une ligne


b) Elle insère une ligne dans la table
c) Elle crée la table clients
d) Elle supprime une ligne

31. Pour modifier le nom d’un client dans la table clients, on utilise :
a) UPDATE clients SET nom = ...
b) SET clients.nom = ...
c) MODIFY clients
d) ALTER clients.nom

32. Complétez : la commande SQL CREATE TABLE est suivie de :


a) la liste des colonnes entre crochets [ ]
b) la liste des colonnes entre parenthèses ( )
c) la liste des colonnes entre accolades { }
d) aucune liste n’est nécessaire

33. Écrivez une requête SQL pour insérer un client avec id 5 et nom "Sara" dans la table
clients.
…………………………………………………………………………………………………………………………
…………………………………………………………

34. Donnez une requête SQL pour modifier le champ nom d’un client avec id = 2 dans la
table clients
.
………………………………………………………………………………………………………………………………
……………………………………………………

35. Donnez une requête SQL pour créer une table « produits » avec les champs id_produit
(clé primaire) et nom_produit.
…………………………………………………………………………………………………………………………
…………………………………………………………

36. Écrire le code HTML d’un formulaire simple de connexion avec deux champs :
matricule
mot de passe

………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………

p. 8
37. Pourquoi faut-il sécuriser l’accès à une page PHP avec session_start() et une vérification
de session
…………………………………………………………………………………………………………………………
…………………………………………………………
38. La structure if en PHP s’écrit :
a) if { $a == $b }
b) if ($a == $b) { ... }
c) if $a = $b :
d) if $a == $b then

39. Que fait la fonction isset($var) ?


a) Elle vérifie si une variable est vide
b) Elle vérifie si une variable est définie et non nulle
c) Elle supprime la variable
d) Elle affiche la valeur de la variable

40. La boucle foreach sert à :


a) Répéter une instruction un nombre fixe de fois
b) Parcourir un tableau élément par élément
c) Lire un fichier ligne par ligne
d) Créer un tableau

41. Quelle est la différence entre include et require ?


a) include génère un warning, require une erreur fatale
b) require fonctionne mieux en local
c) include est plus rapide
d) Il n’y a aucune différence

42. Complétez pour afficher "Bonjour Admin" uniquement si $role vaut "admin" :
$role = "admin";
if (___________) {
echo "Bonjour Admin";
}

43. Que va afficher ce code ?


$tab = array("A", "B", "C");
foreach ($tab as $lettre) {
echo $lettre . " / "; }
………………………………………………………………………………………………………………………………
……………………………………………………
44. Écrire une fonction saluer($nom) qui affiche "Bonjour $nom".
………………………………………………………………………………………………………………………………
……………………………………………………

45. Comment inclure un fichier header.php dans une page PHP principale ?
………………………………………………………………………………………………………………………………
……………………………………………………

p. 9
46. Le champ suivant est obligatoire en HTML :
<input type="text" name="email" _____ >

a) check="true"
b) required
c) mustfill
d) compulsory

47. Quelle fonction PHP permet d’éviter les failles XSS en échappant les caractères spéciaux
dans les données utilisateur ?
a) htmlspecialchars()
b) strip_tags()
c) addslashes()
d) htmlentities()

48. Quelle est la bonne syntaxe pour récupérer la valeur d’un champ nommé "email" envoyé
par un formulaire en POST ?
a) $_POST['email']
b) $_GET['email']
c) $email->post
d) $POST['email']

49. Pour insérer les données d’un formulaire dans une base MySQL en PHP, il est conseillé
d’utiliser :
a) Des requêtes SQL écrites directement avec concaténation
b) Des requêtes préparées (prepared statements)
c) mysql_query() sans protection
d) file_put_contents()

50. Quel attribut HTML rend un champ obligatoire à remplir dans un formulaire ?
a) required
b) mandatory
c) validate
d) needed

p. 10
51. Compléter ce code :

<?php
// Connexion à la base
$__________= 'localhost';
$__________= 'ta_base';
$__________= 'user';
$__________= 'mdp';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
$pdo->__________ (PDO:: __________PDO:: __________
// Récupérer tous les utilisateurs
$stmt = $pdo-> __________ ("SELECT id, username FROM users ORDER BY id ASC");
$users = $stmt-> __________ (PDO::FETCH_ASSOC);

} catch (PDOException $e) {


die("Erreur BDD : " . $e->getMessage());
}
?>

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Liste des utilisateurs</title>
</head>
<body>

<h2>Liste des utilisateurs</h2>

<ul>
<?php foreach ( __________as $user): ?>
<li>ID: <?= __________ ($user['id']) ?> - Nom: <?= __________ ($user['username']) ?
></li>
<?php __________; ?>
</ul>

</body>
</html>

p. 11
52. Compléter ce code : (nom de la base « testDB », nom utilisateur : « user » , mot de pass :
« pw123 »)

__________ __________couleurs (
id INT AUTO_INCREMENT PRIMARY KEY,
couleur VARCHAR(50) NOT NULL
);

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Exercice Select + BDD</title>
</head>
<body>

<form method="post" action="">


<label for="choix">Choisissez une couleur :</label>
<select name=" __________" id="choix" required>
<option value="">-- Choisir --</option>
<option value="rouge">Rouge</option>
<option value="bleu">Bleu</option>
<option value="vert">Vert</option>
</select>
<input type="submit" value="Valider">
</form>

<?php
// Paramètres de connexion (à adapter)
$host = "localhost";
$dbname = "__________";
$user = "__________";
$pass = "__________";

try {
______________________________________________________________________
______________________________________________________________________

if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST['__________'])) { //


<-- Compléter ici
// Nettoyer la donnée reçue
$couleur = __________ ($_POST['couleur']); // <-- Compléter ici (sécuriser la donnée)

// Insérer la couleur dans la base


$sql = "INSERT INTO __________ (__________) VALUES (:couleur)";
$stmt = $pdo->prepare($sql);
$stmt->execute([':couleur' => $couleur]);

echo "<p style='color:green;'>Couleur enregistrée : " . $couleur . "</p>";


}

// Afficher toutes les couleurs enregistrées


echo "<h3>Couleurs enregistrées :</h3>";
$result = $pdo->query("SELECT couleur FROM couleurs ORDER BY id DESC");

echo "<ul>";
while ($row = $result->fetch( __________)) {
echo "<li>" . __________ ($row['couleur']) . "</li>";

p. 12
}
echo "</ul>";

} catch (PDOException $e) {


echo "Erreur connexion BDD : " . $e->getMessage();
}
?>

</body>
</html>

53. Compléter ce code :

<?php
// Définir une interface
interface __________ {
public function __________();
}

// Classe de base
class __________ __________ Animal {
__________ $nom;

public function __construct($nom) {


$this->nom = $nom;

p. 13
}

public function getNom() {


return $this->nom;
}
}

// Classe fille
class __________ extends __________ {
public function crier() {
echo $this->nom . " aboie : Wouf !<br>";
}
}

// Tester
$rex = new Chien("Rex");
echo "Nom de l'animal : " . $rex->getNom() . "<br>";
$__________ ->crier();
?>

p. 14
54. Compléter ce code :

CREATE TABLE users (


id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL -- mot de passe en clair (non recommandé)
);

__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________

<h2>Connexion utilisateur</h2>

<form method="post" action="">


<label for="username">Nom d'utilisateur :</label>
____________________________________________________________<br><br>

<label for="password">Mot de passe :</label>


____________________________________________________________<br><br>

<input type=__________ value="Se connecter" />


</form>

<?php
if (__________ ['__________'] === 'POST') {
// Connexion BDD
$host = 'localhost';
$dbname = 'ta_base';
$user = 'user';
$pass = 'mdp';

try {
________________________________________________________________________________
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Récupérer et nettoyer les données


$username = __________ ($_POST[__________]);
$password = __________ ($_POST[__________]);

// Préparer et exécuter la requête (mot de passe en clair)


$stmt = $pdo->__________ ("SELECT * FROM users WHERE username = :username
AND password = :password");
$stmt->__________ ([':username' => $username, ':password' => $password]);
$user = $stmt->__________(PDO::FETCH_ASSOC);

if ($user) {

p. 15
echo "<p style='color:green;'>Connexion réussie ! Bienvenue, " . __________
($username) . ".</p>";
} else {
echo "<p style='color:red;'>Nom d'utilisateur ou mot de passe incorrect.</p>";
}

} catch (PDOException $e) {


echo "Erreur BDD : " . $e->getMessage();
}
}
?>

</body>
</html>

p. 16
55. Compléter ce code :

<?php
class UserAuth {
private __________;

public function __________ (__________, __________, __________) {


try {
$this->pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8",
$user, $pass);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Erreur BDD : " . $e->getMessage());
}
}

public function login($username, $password) {


$sql = "SELECT * FROM users WHERE username = ? AND password = ?";
$stmt = __________->pdo->__________ ($sql);
$stmt->execute([__________ , __________]);
return __________->__________ (PDO::FETCH_ASSOC);

}?>

Page PHP complète avec formulaire et connexion via la classe

<?php
require_once __________;

$auth = __________ UserAuth('localhost', 'ta_base', 'user', 'mdp');

$message = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {


$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);

$user = $auth-> __________ ($username, $password);

if (__________) {
$message = "<p style='color:green;'>Connexion réussie ! Bienvenue, " .
htmlspecialchars($username) . ".</p>";
} else {
$message = "<p style='color:red;'>Nom d'utilisateur ou mot de passe
incorrect.</p>";
}
}
?>

<!DOCTYPE html>
<html lang="fr">
<head>

p. 17
<meta charset="UTF-8" />
<title>Connexion simple POO</title>
</head>
<body>

<h2>Connexion utilisateur (POO)</h2>

<form method="post" action="">


<label for="username">Nom d'utilisateur :</label>
<input type="text" id="username" name="username" required /><br><br>

<label for="password">Mot de passe :</label>


<input type="password" id="password" name="password" required /><br><br>

<input type="submit" value="Se connecter" />


</form>

__________
echo $message;
__________
</body>
</html>

p. 18

Vous aimerez peut-être aussi