[php] traitement du formulaire

Résolu/Fermé
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 - Modifié par ced3E le 3/01/2011 à 07:12
 Utilisateur anonyme - 3 janv. 2011 à 07:55
Bonjour,


Alors voila pour commencer je n' arrive pas a mettre en place mysql_real_escape_string dans mon formulaire j' ai tester comme ça :

$Prenom = isset($_POST['Prenom']) ? trim(mysql_real_escape_string($_POST['Prenom'])) : '';

Avant l' insertion j' aimerai mettre en place une façon de dire que si il n y a pas d' erreur on peu insérer dans la table sql, j' ai penser a le faire avec If mais je cherche toujours comment faire.

Merci d' avance a vous et si vous noter des bugs dans le programme ou autre n hésitez pas a le souligner la critique est constructive.

Voila mon code php :

<?php  
$Prenom = isset($_POST['Prenom']) ? trim(mysql_real_escape_string($_POST['Prenom'])) : '';  
$Nomdefamille = isset($_POST['Nomdefamille']) ? trim($_POST['Nomdefamille']) : '';  
$Votremotdepasse = isset($_POST['Votremotdepasse']) ? trim($_POST['Votremotdepasse']) : '';  
$email1 = isset($_POST['email1']) ? ($_POST['email1']) : '';  
$email2 = isset($_POST['email2']) ? ($_POST['email2']) : '';  
$sexe = isset($_POST['sexe']) ? ($_POST['sexe']) : '';  
$Datedenaissance = isset($_POST['Datedenaissance']) ? ($_POST['Datedenaissance']) : '';  
$ip = isset($_POST['ip']) ? ($_POST['ip']) : '';  
$errors = array();  

if (isset($_POST["checkbox"]) == "" ) {  
$errors[] = 'La casse des Conditions d\'utilisation non cochée';  
}  
if (strlen($Prenom) < 3) {  
$errors[] = 'Le prénom doit contenir au moins 3 caractères';  
}  
if (strlen($Prenom) > 15) {  
$errors[] = 'Le prénom ne doit pas contenir plus de 15 caractères';  
}  
if (!preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+$#', $Prenom)) {  
$errors[] = 'Le Prénom ne doit contenir que des caractères de type lettre';  
}  
if (strlen($Nomdefamille) < 3) {  
$errors[] = 'Le nom de famille doit contenir au moins 3 caractères';  
}  
if (strlen($Nomdefamille) > 15) {  
$errors[] = 'Le nom de famille doit ne doit pas contenir plus de 15 caractères';  
}  
if (!preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+$#', $Nomdefamille)) {  
$errors[] = 'Le Nom de famille ne doit contenir que des caractères de type lettre';  
}  
if (strlen($Votremotdepasse) < 3) {  
$errors[] = 'Votre mot de passe doit contenir au moins 3 caractères';  
}  
if (strlen($Votremotdepasse) > 15) {  
$errors[] = 'Votre mot de passe ne doit pas contenir plus de 15 caractères';  
}  
if(!filter_var($email1, FILTER_VALIDATE_EMAIL)) {  
$errors[] = 'L\'adresse email est non invalide';  
}  
if($email1 !== $email2) {  
$errors[] = 'Les adresses emails entrées ne correspondent pas';  
}  
function getIP()  
{  
if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )  
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];  
}  
if(count($errors) > 0) {  
echo '<div class="errors">';  
echo 'Il y a '.count($errors).' erreur(s) :<br/>';  
foreach($errors as $error) {  
echo '- '.$error.'<br/>';  
}  
echo '</div>';  
} else  


mysql_connect("localhost","root", "")  OR die('Erreur de connexion à la base');  

mysql_select_db("inscription");  


$sql=" insert into inscription  (Prenom, Nomdefamille,email1,Votremotdepasse,sexe,Datedenaissance,ip ) values  ('','"$Prenom','$Nomdefamille','$Votremotdepasse','$sexe$Datedenaissance','$ip"')";   


if(mysql_query($sql)) echo"<br/><br/>Vos données ont bien été envoyées.";  
else echo "Problème avec la base de données";  
    
?>
A voir également:

2 réponses

Utilisateur anonyme
3 janv. 2011 à 04:18
Salut,

Petit erreur ligne 65 :
$sql="INSERT INTO inscription(Prenom, Nomdefamille,email1,Votremotdepasse,sexe,Datedenaissance,ip ) VALUES('','$Prenom','$Nomdefamille','$Votremotdepasse','$sexe$Datedenaissance','$ip')";

Ensuite pour utiliser mysql_real_escape_string() il faut qu'une connexion soit ouverte, donc ne marche pas si tu n'ouvre une connexion juste avant ta requête d'insertion.

Ensuite pour ta vérification tu vérifies que ton tableau est vide. Et j'ai dégagé ta fonction Getip qui était pas utile.

Voilà ce que ça donne :

<?php 
mysql_connect("localhost","root", "")  OR die('Erreur de connexion à la base'); 
mysql_select_db("inscription"); 

$Prenom = isset($_POST['Prenom']) ? trim(mysql_real_escape_string($_POST['Prenom'])) : ''; 
$Nomdefamille = isset($_POST['Nomdefamille']) ? trim($_POST['Nomdefamille']) : ''; 
$Votremotdepasse = isset($_POST['Votremotdepasse']) ? trim($_POST['Votremotdepasse']) : ''; 
$email1 = isset($_POST['email1']) ? ($_POST['email1']) : ''; 
$email2 = isset($_POST['email2']) ? ($_POST['email2']) : ''; 
$sexe = isset($_POST['sexe']) ? ($_POST['sexe']) : ''; 
$Datedenaissance = isset($_POST['Datedenaissance']) ? ($_POST['Datedenaissance']) : ''; 
$ip = isset($_POST['ip']) ? ($_POST['ip']) : ''; 
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];

$errors = array(); 

if(isset($_POST["checkbox"]) == "" ) $errors[] = 'La casse des Conditions d\'utilisation non cochée';  
if(strlen($Prenom) < 3) $errors[] = 'Le prénom doit contenir au moins 3 caractères'; 
if(strlen($Prenom) > 15) $errors[] = 'Le prénom ne doit pas contenir plus de 15 caractères'; 
if(!preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+$#', $Prenom)) $errors[] = 'Le Prénom ne doit contenir que des caractères de type lettre';  
if(strlen($Nomdefamille) < 3) $errors[] = 'Le nom de famille doit contenir au moins 3 caractères'; 
if(strlen($Nomdefamille) > 15) $errors[] = 'Le nom de famille doit ne doit pas contenir plus de 15 caractères'; 
if(!preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+$#', $Nomdefamille)) $errors[] = 'Le Nom de famille ne doit contenir que des caractères de type lettre'; 
if(strlen($Votremotdepasse) < 3) $errors[] = 'Votre mot de passe doit contenir au moins 3 caractères'; 
if(strlen($Votremotdepasse) > 15) $errors[] = 'Votre mot de passe ne doit pas contenir plus de 15 caractères'; 
if(!filter_var($email1, FILTER_VALIDATE_EMAIL)) $errors[] = 'L\'adresse email est non invalide'; 
if($email1 !== $email2) $errors[] = 'Les adresses emails entrées ne correspondent pas'; 


if(count($errors) > 0) {
	echo '<div class="errors">';
	echo 'Il y a '.count($errors).' erreur(s) :<br/>';
	foreach($errors as $error){
		echo '- '.$error.'<br/>';
	}
	echo '</div>'; 
} 
else{
$sql="INSERT INTO inscription(Prenom, Nomdefamille,email1,Votremotdepasse,sexe,Datedenaissance,ip ) VALUES('','$Prenom','$Nomdefamille','$Votremotdepasse','$sexe$Datedenaissance','$ip')";
if(mysql_query($sql)) echo"<br/><br/>Vos données ont bien été envoyées.";
}   
?>

Si tu souhaite que je mette des commentaires ou plus d'explication dis le moi.
Bonne Année ;)
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
3 janv. 2011 à 07:06
Merci :) ouiii bonne année a toi aussi.

Oui plus d' explication ne serai pas du lux car je comprend pas pour quoi tu a mis que sur " $Prenom = isset($_POST['Prenom']) ? trim(mysql_real_escape_string($_POST['Prenom'])) : ''; " la vérification, et tu a dégagé mon if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; je ne stoke plus l' ip du membre ?
j' aimerai tout de même l' avoir pour bannir si y a besoin.

En tout cas merci testé ça marche nikel me reste plus qu' a crée la base de donné et la table qui va bien :)
0
Utilisateur anonyme
3 janv. 2011 à 07:55
A j'avais pas vus : tu peux mettre mysql_real_escape_string() sur les autres variables ;)
Et pour l'ip je l'ai pas dégagé, je l'ai juste sortis de sa fonction. Si tu fais une fonction, il faut que tu l'appelles sinon elle sert à rien :)
0