enregistrement d'un topic dans la BDD- tuto création d'un forum video3
- Accueil
- Forum
- Programmation
- PHP
- enregistrement d'un topic dans la BDD- tuto création d'un forum video3
luffy78 Le 21 juin 2019 à 22:27 (Édité le 21 juin 2019 à 22:36)
J'ai parcouru toutes les discussions du forum pour résoudre mon problème mais sans succès. Si vous pouvez m'aider ça serait top.
Voici mon code :
<?php
/* Contient la connexion à la $bdd */
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=forum', 'root', '');
/* Traitement du formulaire de création de Topic */
if(isset($_SESSION['id'])) {
if(isset($_POST['tsubmit'])) {
if(isset($_POST['tsujet'],$_POST['tcontenu'])) {
$sujet = htmlspecialchars($_POST['tsujet']);
$contenu = htmlspecialchars($_POST['tcontenu']);
if(!empty($sujet) AND !empty($contenu)) {
if(strlen($sujet) <= 70) {
if(isset($_POST['tmail'])) {
$notif_mail = 1;
} else {
$notif_mail = 0;
}
$ins = $bdd->prepare('INSERT INTO f_topics (id_createur,sujet,contenu,notif_createur,date_heure_creation) VALUES(?,?,?,?,NOW())');
$ins->execute(array($_SESSION['id'],$sujet,$contenu,$notif_mail));
} else {
$terror = "Votre sujet ne peut pas dépasser 70 caractères";
}
} else {
$terror = "Veuillez compléter tous les champs";
}
}
}
} else {
$terror = "Veuillez vous connecter pour poster un nouveau topic";
}
require('views/new_topic.view.php'); /* Appel du fichier "vue" de notre page */
?>
Voici l'image de ma BDD :
Bon weekend
Merci
Balatharas Le 22 juin 2019 à 01:07 (Édité le 1 janvier 1970 à 01:00)
var_dump($_POST, $sujet, $ins);
Juste après la ligne $ins->execute (ligne 19 sur ton post).
Donne nous une capture d'écran de la structure de ta table f_topics aussi stp (ses colonnes)
De plus tu devrais penser à mieux sécuriser tes variables. Personnellement j'ajoute en chaque début de pages ceci:
foreach ($_POST as $key => $value) {
$post[$key] = trim(strip_tags($value));
}
foreach ($_GET as $key => $value) {
$get[$key] = trim(strip_tags($value));
}
Cela permet d'appliquer la sécurisation sur toutes les variables $_POST et $_GET
Ensuite au lieu d'utiliser $_POST['tsujet'] par exemple, tu utilises $post['tsujet'] en faisant gaffe à ne pas avoir de doublons de variable.
😁
luffy78 Le 26 juin 2019 à 22:29 (Édité le 1 janvier 1970 à 01:00)
Balatharas Le 26 juin 2019 à 22:41 (Édité le 1 janvier 1970 à 01:00)
luffy78 Le 27 juin 2019 à 02:24 (Édité le 27 juin 2019 à 02:25)
Mon code modifié :
<?php
/* Contient la connexion à la $bdd */
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=forum', 'root', '');
/* Traitement du formulaire de création de Topic */
if(isset($_SESSION['id'])) {
if(isset($_POST['tsubmit'])) {
if(isset($_POST['tsujet'],$_POST['tcontenu'])) {
$sujet = htmlspecialchars($_POST['tsujet']);
$contenu = htmlspecialchars($_POST['tcontenu']);
if(!empty($sujet) AND !empty($contenu)) {
if(strlen($sujet) <= 70) {
if(isset($_POST['tmail'])) {
$notif_mail = 1;
} else {
$notif_mail = 0;
}
$ins = $bdd->prepare('INSERT INTO f_topics (id_createur,sujet, contenu,date_heure_creation,notif_createur) VALUES(?,?,?,?,NOW())');
$ins->execute(array($_SESSION['id'],$sujet,$contenu,$notif_mail));
var_dump($_POST, $sujet, $ins);
} else {
$terror = "Votre sujet ne peut pas dépasser 70 caractères";
}
} else {
$terror = "Veuillez compléter tous les champs";
}
}
}
} else {
$terror = "Veuillez vous connecter pour poster un nouveau topic";
}
require('views/new_topic.view.php'); /* Appel du fichier "vue" de notre page */
?>
La capture d'écran avec var_dump:
Balatharas Le 27 juin 2019 à 02:52 (Édité le 1 janvier 1970 à 01:00)
$ins = $bdd->prepare('INSERT INTO f_topics (id_createur, sujet, contenu, notif_createur, resolu, date_heure_creation) VALUES(?, ?, ?, ?, 0, NOW())');
luffy78 Le 27 juin 2019 à 23:01 (Édité le 1 janvier 1970 à 01:00)
Balatharas Le 27 juin 2019 à 23:09 (Édité le 1 janvier 1970 à 01:00)
luffy78 Le 28 juin 2019 à 21:14 (Édité le 1 janvier 1970 à 01:00)