probleme de validation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de validation

par yaug » 08 janv. 2008, 13:21

Pense à signaler que ton problème a été résolu.

eureka

par senakht » 08 janv. 2008, 12:58

J'ai touvé j'avais un autre fichier appelé qui contenait les fonction de connection à la base.

J'y ai mis apres
function dbConnect()
	{
	global $dbHost, $dbutilisateur, $dbPasswd, $dbName;
	mysql_connect( $dbHost, $dbutilisateur, $dbPasswd ) or error( mysql_error() );
	mysql_select_db( $dbName );
	}
une fonction avec ton code
	function formulaire ($string){
	$name = mysql_escape_string($_POST['_name']); 
	$villes = mysql_escape_string($_POST['_villes']); 
	$mail = mysql_escape_string($_POST['_mail']); 
	$comm = mysql_escape_string($_POST['_comm']); 
	$cat = mysql_escape_string($_POST['_cat']); 
	$idart = mysql_escape_string($_POST['_idart']); 
	}
et ca marche
Merci

par Xenon_54 » 08 janv. 2008, 12:20

As-tu le message de @arthur? Les fonctions mysql_real_escape_string ou mysql_escape_string te seront utiles.

Passe ta variable dans la moulinette de mysql_(real_)escape_string() avant de l'utiliser dans ta requête:
$name = mysql_escape_string($_POST['_name']);
$villes = mysql_escape_string($_POST['_villes']);
$mail = mysql_escape_string($_POST['_mail']);
$comm = mysql_escape_string($_POST['_comm']);
$cat = mysql_escape_string($_POST['_cat']);
$idart = mysql_escape_string($_POST['_idart']);

mysql_query( "INSERT INTO asn_comment ( com_name, com_town, com_mail, com_comment, com_date, com_valid, com_cat, com_idart )
    VALUES ('$name','$villes','$mail','$comm','$time','0','$cat','$idart'
    )" );

ok mais comment

par senakht » 08 janv. 2008, 12:13

ça j'ai compris sauf que depuis hier soir j'essaye de coder ça mais je n'y arrive pas je ne trouve pas où et comment je doit rajouter addslashes().

Je sais je suis nul j'y suis depuis hier soir :oops:

par yaug » 08 janv. 2008, 12:00

comme l'a dit arthur, utilise les mysql_real_escape_string ou un addslashes() basique.

Ton problème est qu'il faut protéger les données que te renvoi post.

Je t'explique.
TU as :
 
 mysql_query( "INSERT INTO asn_comment ( com_name, com_town, com_mail, com_comment, com_date, com_valid, com_cat, com_idart )
    VALUES ('".$_POST['_name']."','".$_POST['_villes']."','".$_POST['_mail']."');
Imagine que l'on ait les valeurs suivantes :
Name => "Bob",
Ville => L'arcueil
Mail => [email protected]

Tu va donc te retrouver àvec ceci : VALUES ('Bob','L'arcueil','[email protected]')
Regarde pour la ville, tu te retrouve donc avec un ' au milieu ce qui te fait planter.
C'est la raison pour laquelle il faut protéger les donnée que tu stocks dans la base. Par exemple en mettant des antislashes ce qui du coup donnerai : VALUES ('Bob','L\'arcueil','[email protected]') et ne ferait plus planter ta requête.

Re: oui oui

par senakht » 08 janv. 2008, 11:49

comment tu vois le code alors
je suis novice en php

:oops:
au fait les magic_quotes sont à off dans mon php.ini

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

oui oui

par senakht » 08 janv. 2008, 11:34

comment tu vois le code alors
je suis novice en php

:oops:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

oui

par senakht » 08 janv. 2008, 11:32

oui :D

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par yaug » 08 janv. 2008, 11:31

Ton problème c'est ou?

C'est bien ici :
if(!isset($_GET['page'])){     
    $time = date('Y/m/d'); 
       mysql_query( "INSERT INTO asn_comment ( com_name, com_town, com_mail, com_comment, com_date, com_valid, com_cat, com_idart )
    VALUES ('".$_POST['_name']."','".$_POST['_villes']."','".$_POST['_mail']."','".$_POST['_comm']."','".$time."','0','".$_POST['_cat']."','".$_POST['_idart']."'
    )" ) or error( mysql_error() );
    $newid = mysql_insert_id(); 
déjà je ne peux que te conseiller de traiter tes variables du $_POST.
En général il vaut mieux éviter de manipuler directement du $_POST.

par @rthur » 08 janv. 2008, 11:29

Bonjour,

Regarde du côté de:
http://fr.php.net/mysql_real_escape_string

probleme de validation

par senakht » 08 janv. 2008, 11:17

Bonjour à tous,

J'ai un problème avec les car spe entre autre ' . Sans les ' tout vas bien. Je ne trouve pas la solution

voilà mon formulaire :

Code : Tout sélectionner

<form method="post" name="formulaire" action="../toto/" enctype="x-www-form-urlencoded" onSubmit="return validationformulairecomment();"> <input type="hidden" name="_cat" value="Copte" /> <input type="hidden" name="_idart" value="22" /> <h3>Poster un commentaire</h3> <strong>Votre nom : </strong><input type="text" name="_name" /><br /> <strong>Votre Email : </strong><input type="text" name="_mail" /><br /> <strong>Votre Pays : </strong><br /> <select name="_villes"> <option value="France" selected>France</option> <option value="autre">autre</option> </select> <strong>Votre commentaire : </strong> <textarea name="_comm" cols="40" rows="4"></textarea><br /> <input type="submit" name="Submit" value="Envoyer" /> </form>
voila mon code php
<?php
	if(!isset($_GET['page'])){ 	
	$time = date('Y/m/d'); 
   	mysql_query( "INSERT INTO asn_comment ( com_name, com_town, com_mail, com_comment, com_date, com_valid, com_cat, com_idart )
	VALUES ('".$_POST['_name']."','".$_POST['_villes']."','".$_POST['_mail']."','".$_POST['_comm']."','".$time."','0','".$_POST['_cat']."','".$_POST['_idart']."'
	)" ) or error( mysql_error() );
	$newid = mysql_insert_id();
/////////////////////////////
// A MODIFIER SUIVANT BESOINS
/////////////////////////////

	$to = 'toto; //Mail à moi
	$to2 = 'toto; //Mail à moi
	$from = 'From: toto;  // email de l'entete
	$titre = "Nouveau commentaire"; // titre du mail pour l'internaute
			
	// Mail pour l'internaute
	$message = "Un nouveau commentaire\n\n";
	$message .= "De ".$_POST['_name']."\n\n";
	$message .= "Ville : ".$_POST['_villes']."\n\n";
	$message .= "Mail : ".$_POST['_mail']."\n\n";
	$message .= "Commentaire\n\n";
	$message .= "".nl2br($_POST['_comm'])."\n\n";
	$message .= "Lien de validation :\n";
	$message .= "toto?page=valid_comment&id=".$newid."\n\n";
	$message .= "Lien de suppression :\n";
	$message .= "toto?page=supp_comment&id=".$newid."\n\n";
	$message .= "http://www.visite-egypte.com/";
	
/////////////////////////////
//      FIN DES MODIFICATIONS
/////////////////////////////
	mail($to,$titre,$message,$from); 
	mail($to2,$titre,$message,$from); 
		echo '<meta http-equiv="refresh" content="0;URL=?page=validation">'; // REDIRECTION VERS LA PAGE SECURISEE
	}
	if(isset($_GET['page'])){ 	
		if($_GET['page'] == 'validation'){ 
?>
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]