Alors voici mon bout de code pour ajouter des articles (je l'étoffe au fur et a mesure).
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
if(isset($_POST['article_titre'], $_POST['article_autheur'], $_POST['article_description'], $_POST['article_contenu'], $_POST['article_contenu2']))
{
if(!empty($_POST['article_titre']) AND !empty($_POST['article_autheur']) AND !empty($_POST['article_description']) AND !empty($_POST['article_contenu']) AND !empty($_POST['article_contenu2']))
{
$article_titre = htmlspecialchars($_POST['article_titre']);
$article_autheur = htmlspecialchars($_POST['article_autheur']);
$article_description = htmlspecialchars($_POST['article_description']);
$article_contenu = htmlspecialchars($_POST['article_contenu']);
$article_contenu2 = htmlspecialchars($_POST['article_contenu2']);
$ins = $bdd->prepare('INSERT INTO articles (titre, autheur, desciption, contenu, contenu2, date_time_publication)
VALUES (?, ?, ?, ?, ?, NOW())');
$ins->execute(array($article_titre, $article_autheur, $article_description, $article_contenu, $article_contenu2));
$message = 'Votre article a bien été posté !';
}
else
{
$message = 'Veuillez remplir tous les champs !';
}
}
?>
Malheureusement, mon code n'ajoute rien a ma bdd... Je veux formater mon code en InnoDB mais des queje le fais ma table est bien en InnoDB mais mySQL veut la formater a tout prix en MyISAM une solution ?
Vire les HTMSPECIALCHARS car on ne l'utilise QUE POUR L'AFFICHAGE, pas pour l'entrée en DB (voir la doc)
Utilise directement les données $_POST dans ton bind => vire moi ces vairables intermédiaires inutiles. Elles sont utiles QUE dans le cas où tu veux garder la donnée originelle inchangée pour un test plus loin dans le script.
Utilise bindValue => lisibilité flexibilité (voir la doc)
Tu ne testes pas le retour de execute() et tu n'utilises pas try/catch => tu ne sais pas ce que fais ton script
Bah en fait mon code fonctionnait parfaitement bien avec une table de 4 colonnes. Le htmlspecialchars() est pour empecher les injections SQL depuis le formulaire (qui sera accessible) donc on peut facilement faire joujou avec et detruire une BDD.
Mon htmlspecialchars() fonctionne très bien comme ça et mon code est également très bien conçu, car mon code peut très bien utiliser htmlspecialchars en entrée et de ce fait protège mon site de l'utilisateur (faille xss dans le formulaire), ensuite j'ai testé le code avec moins d'entrées et ça fonctionnait parfaitement, et enfin ma bdd interprètera le htmlspecialchars sans avoir a le déclarer dans l'affichage. J'ai tenté moins même de casser le code et il fonctionne parfaitement. ensuite pour le le _POST, c'est juste obligatoire avec mon formulaire utilisant la méthode _POST essaye de mettre un titre sans methode post dans un formulaire la BDD ne reconnaitra rien et ne voudra rien rajouter.
Ce que tu me réponds c'est juste des détails (qui n’empêche pas mon code de fonctionner en soit).
Alors outre les défaults de mon code que tu n'a spas l'air d'apprécie, tu n'as absolument pas repondu a ma question premiere qui était un problèmle de BDD mais merci pour ton intervention : SALUT !
Bah en fait mon code fonctionnait parfaitement bien avec une table de 4 colonnes. Le htmlspecialchars() est pour empecher les injections SQL depuis le formulaire (qui sera accessible) donc on peut facilement faire joujou avec et detruire une BDD.
Mon htmlspecialchars() fonctionne très bien comme ça et mon code est également très bien conçu, car mon code peut très bien utiliser htmlspecialchars en entrée et de ce fait protège mon site de l'utilisateur (faille xss dans le formulaire), ensuite j'ai testé le code avec moins d'entrées et ça fonctionnait parfaitement, et enfin ma bdd interprètera le htmlspecialchars sans avoir a le déclarer dans l'affichage. J'ai tenté moins même de casser le code et il fonctionne parfaitement. ensuite pour le le _POST, c'est juste obligatoire avec mon formulaire utilisant la méthode _POST essaye de mettre un titre sans methode post dans un formulaire la BDD ne reconnaitra rien et ne voudra rien rajouter.
Ce que tu me réponds c'est juste des détails (qui n’empêche pas mon code de fonctionner en soit).
Alors outre les défaults de mon code que tu n'a spas l'air d'apprécie, tu n'as absolument pas repondu a ma question premiere qui était un problèmle de BDD mais merci pour ton intervention : SALUT !
Champion du monde ! Pourquoi venir demander de l'aide alors
Bah en fait mon code fonctionnait parfaitement bien avec une table de 4 colonnes. Le htmlspecialchars() est pour empecher les injections SQL depuis le formulaire (qui sera accessible) donc on peut facilement faire joujou avec et detruire une BDD.
Mon htmlspecialchars() fonctionne très bien comme ça et mon code est également très bien conçu, car mon code peut très bien utiliser htmlspecialchars en entrée et de ce fait protège mon site de l'utilisateur (faille xss dans le formulaire), ensuite j'ai testé le code avec moins d'entrées et ça fonctionnait parfaitement, et enfin ma bdd interprètera le htmlspecialchars sans avoir a le déclarer dans l'affichage. J'ai tenté moins même de casser le code et il fonctionne parfaitement. ensuite pour le le _POST, c'est juste obligatoire avec mon formulaire utilisant la méthode _POST essaye de mettre un titre sans methode post dans un formulaire la BDD ne reconnaitra rien et ne voudra rien rajouter.
Ce que tu me réponds c'est juste des détails (qui n’empêche pas mon code de fonctionner en soit).
Alors outre les défaults de mon code que tu n'a spas l'air d'apprécie, tu n'as absolument pas repondu a ma question premiere qui était un problèmle de BDD mais merci pour ton intervention : SALUT !
Champion du monde ! Pourquoi venir demander de l'aide alors
Bah si tu sais lire, j'ai pas demandé de l'aide sur mon code (si tu savais lire) CQFD
- Edité par SébastienFAUCHER il y a moins de 5s
- Edité par SébastienFAUCHER 29 mars 2018 à 18:27:03
Désolé, mais les commentaires qui t'ont été fait seront partagés par quasiment tout ceux qui seront capables de t'aider. Ce n'est pas pour t'embêter, mais on a tendance à vouloir faire prendre de bonnes habitudes aux débutants pour qu'ils ne s'embarquent pas avec des codes pollués qu"ils n'arriveront pas à débugger eux-mêmes.
Au cas particulier, tu aurais pu résoudre ton problème simplement en activant les erreurs PDO.
bonsoir je viens vous de demander l'aide car je n'arrive pas a inserer dans ma bdd des elements je vous laisse la function panier qui me pose probleme et pourtant j'arrive bien jusqu'au header('location') sans problème je vous remercie.
{ if (isset($_GET['id'])) { $db = database(); $adresse_ip = get_ip(); $produit_panier = $_GET['id']; // ici on fait une requete qui verifie que l'adresse ip de l'ulisateur est le même $requete_ckeck = $db->prepare("SELECT * FROM panier WHERE ip_adresse='{$adresse_ip}' AND product_id='{$produit_panier}'"); $requete_ckeck->execute(array()); $count = $requete_ckeck->rowCount(); if ($count > 0) {
Le htmlspecialchars() est pour empecher les injections SQL depuis le formulaire (qui sera accessible) donc on peut facilement faire joujou avec et detruire une BDD.
Tiens, il faudra que quelqu'un m'explique pourquoi il y a html, special et chars dans le nom de la fonction. La documentation m'indique qu'elle agit sur des caractères spéciaux du HTML… Je ne vois vraiment pas où il est fait mention de SQL… Ils ont dû oublier depuis le temps. Ou c'est comme sur Wikipedia, n'importe-qui peut aller enlever. Mais alors, n'importe-qui peut aller remettre ?
Et suite à ce sujet, on aurait banni un membre pour avoir dit une vérité cachée trop dérangeante ?
SInon, c'est bien connu, on vient ici pour apprendre à faire comme on veut.
Euh, attends, si c'est pour faire comme on veut, pourquoi on apprend alors ?
A part ça, il y a ici des éléments qui devraient sinon faire, au moins aider à comprendre les injections SQL. Et un brin de réflexion supplémentaire, avec éventuellement quelques tests, devrait mettre en évidence que non, quoi qu'en pensent certains,
htmlspecialchars() n'est vraiment pas une protection contre les injections SQL
Bon 1 an je n'étais pas revenu le problème a été resolu, je comprenais pas ce exactement tout ce que je faisais a ce moment, qu'est-ce qu'on peut être bête quand on apprend merci a tous s pour vos retour
Problème ajout d'articles dans ma BDD
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
N'oubliez pas d'activer les erreurs PDO.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
N'oubliez pas d'activer les erreurs PDO.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales