-
Notifications
You must be signed in to change notification settings - Fork 2
/
usurpedpost.php
executable file
·118 lines (110 loc) · 5.07 KB
/
usurpedpost.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
session_start();
?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>ReSoC - Post d'usurpateur</title>
<meta name="author" content="Julien Falconnet">
<link rel="stylesheet" href="style.css"/>
</head>
<body>
<header>
<img src="logo.webp" alt="Logo de notre réseau social"/>
<nav id="menu">
<a href="news.php">Actualités</a>
<a href="wall.php?user_id=5">Mur</a>
<a href="feed.php?user_id=5">Flux</a>
<a href="tags.php?tag_id=1">Mots-clés</a>
</nav>
<nav id="user">
<a href="#">Profil</a>
<ul>
<li><a href="settings.php?user_id=5">Paramètres</a></li>
<li><a href="followers.php?user_id=5">Mes suiveurs</a></li>
<li><a href="subscriptions.php?user_id=5">Mes abonnements</a></li>
</ul>
</nav>
</header>
<div id="wrapper" >
<aside>
<h2>Présentation</h2>
<p>Sur cette page on peut poster un message en se faisant
passer pour quelqu'un d'autre</p>
</aside>
<main>
<article>
<h2>Poster un message</h2>
<?php
/**
* BD
*/
$mysqli = new mysqli("localhost", "root", "root", "socialnetwork");
/**
* Récupération de la liste des auteurs
*/
$listAuteurs = [];
$laQuestionEnSql = "SELECT * FROM users";
$lesInformations = $mysqli->query($laQuestionEnSql);
while ($user = $lesInformations->fetch_assoc())
{
$listAuteurs[$user['id']] = $user['alias'];
}
/**
* TRAITEMENT DU FORMULAIRE
*/
// Etape 1 : vérifier si on est en train d'afficher ou de traiter le formulaire
// si on recoit un champs email rempli il y a une chance que ce soit un traitement
$enCoursDeTraitement = isset($_POST['auteur']);
if ($enCoursDeTraitement)
{
// on ne fait ce qui suit que si un formulaire a été soumis.
// Etape 2: récupérer ce qu'il y a dans le formulaire @todo: c'est là que votre travaille se situe
// observez le résultat de cette ligne de débug (vous l'effacerez ensuite)
// et complétez le code ci dessous en remplaçant les ???
$authorId = $_POST['auteur'];
$postContent = $_POST['message'];
//Etape 3 : Petite sécurité
// pour éviter les injections sql : https://www.w3schools.com/sql/sql_injection.asp
$authorId = intval($mysqli->real_escape_string($authorId));
$postContent = $mysqli->real_escape_string($postContent);
//Etape 4 : construction de la requete
$lInstructionSql = "INSERT INTO posts "
. "(id, user_id, content, created) "
. "VALUES (NULL, "
. $authorId . ", "
. "'" . $postContent . "', "
. "NOW()". ")";
echo $lInstructionSql;
// Etape 5 : execution
$ok = $mysqli->query($lInstructionSql);
if ( ! $ok)
{
echo "Impossible d'ajouter le message: " . $mysqli->error;
} else
{
echo "Message posté en tant que :" . $listAuteurs[$authorId];
}
}
?>
<form action="usurpedpost.php" method="post">
<input type='hidden' name='???' value='achanger'>
<dl>
<dt><label for='auteur'>Auteur</label></dt>
<dd><select name='auteur'>
<?php
foreach ($listAuteurs as $id => $alias)
echo "<option value='$id'>$alias</option>";
?>
</select></dd>
<dt><label for='message'>Message</label></dt>
<dd><textarea name='message'></textarea></dd>
</dl>
<input type='submit'>
</form>
</article>
</main>
</div>
</body>
</html>