[RESOLU] Problème requètes PDO

ViPHP
xTG
ViPHP | 7331 Messages

24 août 2014, 20:30

Je suis d'accord mais mes deux requêtes sont déjà sous forme de PDO::prepare regarde
$sql2= "UPDATE news SET titre=?,contenu=?, timestamp=? WHERE id='" . $_POST['id_news'] . "' ";
$req2 = $cnx->prepare($sql2);
$req2->execute($q);
et
$req = $cnx->prepare('INSERT INTO news (titre, contenu, timestamp) VALUES (:titre, :contenu, :timestamp)');
$req->execute($q);
Oui mais le paramètre id n'est pas protégé.
N'importe qui en modifiant l'url peut faire ce qu'il veut avec ta base de données.
Notamment en faisant une chose du genre :

Code : Tout sélectionner

url.php?id=' OR 1=1
qui aura pour effet de mettre à jour tous les enregistrements de ta table à la fois.

Pour tes formulaires ils ne sont pas soumis à condition.
Ils devraient donc être visible.
Sauf si tu as une autre erreur PHP qui se cache dans le DOM HTML et n'est pas visible.
Tu peux faire un clic droit sur la page de ton navigateur et afficher le code source.
En navigant dedans tu pourras voir à la fin ce qu'il y a (le code du formulaire ? un message d'erreur ?).

Eléphant du PHP | 88 Messages

24 août 2014, 21:35

Merci pour le conseil mais je ne vois pas comment protéger l'id peut tu me montrer le code à ajouter s'il te plait ???
En ce qui conserne le code source comme tu m'a dit, ça m'affiche que ça sur la page
<!DOCTYPE html PUBLIC>
	<html>
		<head>
			<title>Rédiger une news</title>
			<meta charset="utf-8">
			<style type="text/css">
			h3, form
			{
			text-align:center;
			}
			a {
				text-decoration:underline;
				color:black;
			}
			a:hover{
				color:blue; 
			}
			</style>
		</head>
		<body>
			<h3><a href="liste_news.php">Retour à la liste des news</a></h3>
			
Je ne sais donc toujours pas comment résoudre mon problème de formulaire =( Cependant on peut voir sur le code source que la fin de mes codes n'est pas affiché (fermeture du body et du html avec les formulaire pour le coup qui ce trouve avec) A tu une autre idée ???
Le temps donne sa légitimité à l'existence...

Eléphant du PHP | 88 Messages

24 août 2014, 21:57

J'ai d'ailleur essayer en enlevant tout le php et là les formulaire s'affiche !!! :!: :?: :!:
Le temps donne sa légitimité à l'existence...

ViPHP
xTG
ViPHP | 7331 Messages

25 août 2014, 08:36

Tu as donc bien une erreur de syntaxe dans le PHP.
Vérifies le fichier de log d'Apache ou bien rajoutes error_reporting en haut de page pour trouver l'erreur. :)

Pour protéger les variables rien de mieux que la documentation de la fonction :
PDO::quote : http://fr2.php.net/manual/fr/pdo.quote.php
Son retour peut ensuite être concaténé dans une requête SQL.
Les requêtes préparées : http://fr2.php.net/manual/fr/pdo.prepare.php
(aucune variable injectée directement dans la requête, uniquement via execute)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 août 2014, 10:48

salut,

je pense que tu devrais utiliser un debugguer c'est vraiment plus qu'utile ;)
Lorsque l'on développe il faut parfois utiliser quelque outils plus complexe que notepad++ mais c'est bigrement efficace et utile ;)

Tuto pour Xdebug : http://blog.pascal-martin.fr/post/xdebu ... clipse-pdt

coté configuration de php il te faut :
- error_reporting == E_ALL
- display_error = on

- est ce que tu n'aurais pas un "die()" (ou exit()) qui traine dans ton code ?
- Est ce qu'il y a plus d'info dans le log du serveur web (httpd)
Questions récurrente mais obligatoire pour avancer.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 88 Messages

25 août 2014, 18:43

C'est bon j'ai trouver je mettrai la solution plus tard là je suis sur ma tablette mais merci a tous et je vais essayer Xdebug merci ;-)
Le temps donne sa légitimité à l'existence...