Validation de l'inscription.php

Fermé
texte1 Messages postés 3 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 22 mars 2013 - 20 mars 2013 à 23:46
texte1 Messages postés 3 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 22 mars 2013 - 22 mars 2013 à 20:34
Bonjour,



j'ai un script en php pour valider l'inscription, mais au moment de validation, il y a problème : le champs pseudo est obligatoire revient toujours alors que le formulaire est bien rempli. Voici ma page inscription.php :

Merci d'avance pour votre éclaircissement.
<php?

if($n=="") {print("<br><br><br> Le champ <b>pseudo</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
else{ print("<br><br><br>pseudo ok!<br>\n"); exit;}
if($sexei=="") {print(" Le champ <b>sexe</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($mailexp=="") {print(" Votre <b>email</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($pass=="") {print(" Le champ <b>password</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($c=="") {print(" Votre <b>présentation</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($NomFichier1=="") {print(" Votre <b>photo</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($choixpays=="") {print(" Votre <b>pays</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($age=="") {print(" Votre <b>age</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if($hobbi=="") {print(" Votre <b>hobbi</b> est obligatoire merci !<br><script>setTimeout(\"window.history.back()\",2000)</script> \n"); exit; }
if(!$n=="") { include("pseudo_control.php4"); }

$TabLivre=file("inscrits.txt");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;
$quantieme="$nCommentaires";
$quantieme=$quantieme+1;
// #########################################################################################################################
// DETERMINATION DE LA DATE ET HEURE D INSCRIPTION
// #########################################################################################################################


$tdate=getdate();
$jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
$heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
$d=$jour." à ".$heure;


// #########################################################################################################################
// VARIABLES POUR ENVOI EMAIL
// #########################################################################################################################

$subject=StripSlashes($subject);
$msg=StripSlashes($msg);
$msg="Voici les données nouvel inscrit :
PSEUDO : $n
GENRE : $sexei
DATE : $d
PASSWORD : $pass
AGE : $age
HOBBI : $hobbi
pays : $choixpays
PHOTO : photos/membre_$quantieme.jpg
COMMENTAIRE : $c
SON EMAIL : $mailexp
INSCRIPTION DU : $d";
// #########################################################################################################################
// CREATION DU EMAIL
// #########################################################################################################################

$m= new Mail;
$m->From( "$n" );
$m->To( "$dest");
$m->Subject( "$subject" );
$m->Body( $msg); // set the body
$m->Priority($priority) ;

// ------------------------------------- ENVOI DES FICHIERS --------------------------------

if ("$NomFichier1_name"!="") {
// on copie dans le bon rep. et on renomme le fichier photo au nom du pseudo...
copy("$NomFichier1","photos/membre_$quantieme.jpg");
$m->Attach( "photos/membre_$quantieme.jpg", "application/octet-stream" );
}

$m->Send(); // envoi du mail
// FERMETURE DE L ENVOI PHOTOS SUR REPERTOIRE DU SERVEUR

// ------------------------------------------------------------------------------------------
// NETTOYAGE DES ENREGISTREMENTS
// ------------------------------------------------------------------------------------------

// nettoyage du pseudo
$n=htmlentities($n);
$n=str_replace(chr(10)," <br> ",$n);
$n=str_replace(chr(13),"",$n);
$n=stripslashes($n);
$n=trim($n);

// nettoyage du sexe
$sexei=htmlentities($sexei);
$sexei=str_replace(chr(10)," <br> ",$sexei);
$sexei=str_replace(chr(13),"",$sexei);
$sexei=stripslashes($sexei);
$sexei=trim($sexei);

// nettoyage du commentaire
$c=htmlentities($c); //(supprimé pour pouvoir inserer des liens dans l'aticle....)
$c=str_replace(chr(10)," <br> ",$c);
$c=str_replace(chr(13),"",$c);
$c=stripslashes($c);
$c=trim($c);

// nettoyage du mail
$mailexp=htmlentities($mailexp);
$mailexp=str_replace(chr(10)," <br> ",$mailexp);
$mailexp=str_replace(chr(13),"",$mailexp);
$mailexp=stripslashes($mailexp);
$mailexp=trim($mailexp);

// nettoyage du pass
$pass=htmlentities($pass);
$pass=str_replace(chr(10)," <br> ",$pass);
$pass=str_replace(chr(13),"",$pass);
$pass=stripslashes($pass);
$pass=trim($pass);

// nettoyage de age
$age=htmlentities($age);
$age=str_replace(chr(10)," <br> ",$age);
$age=str_replace(chr(13),"",$age);
$age=stripslashes($age);
$age=trim($age);


// nettoyage de hobbi
$hobbi=htmlentities($hobbi);
$hobbi=str_replace(chr(10)," <br> ",$hobbi);
$hobbi=str_replace(chr(13),"",$hobbi);
$hobbi=stripslashes($hobbi);
$hobbi=trim($hobbi);


// #########################################################################################################################
// ECRITURE DU FICHIER de données du candidat SUR LE SERVEUR
// #########################################################################################################################


if(!file_exists("inscrits.txt")) {
$idFicLivre=fopen("inscrits.txt","w+");
fputs($idFicLivre,"Fichier des membres inscrits :\n");
fclose($idFicLivre);
}

$fichier = fopen("inscrits.txt", "a+");
fwrite($fichier, "$n"); //ecriture du login
fwrite($fichier, "|"); //ecriture du separateur
fwrite($fichier, "$sexei"); //ecriture du sexe
fwrite($fichier, "|");
fwrite($fichier, "$d"); //ecriture de la date
fwrite($fichier, "|");
fwrite($fichier, "$mailexp"); //ecriture du mail de l'inscrit
fwrite($fichier, "|");
fwrite($fichier, "$pass"); //ecriture du code d'accès
fwrite($fichier, "|");
fwrite($fichier, "$age"); //ecriture de l'age
fwrite($fichier, "|");
fwrite($fichier, "$hobbi"); //ecriture du hobbi
fwrite($fichier, "|");
fwrite($fichier, "photos/membre_$quantieme.jpg"); //ecriture de la photo
fwrite($fichier, "|");
fwrite($fichier, "$choixregion"); //ecriture de la region
fwrite($fichier, "|\n"); //ecriture du separateur + retour ligne dans fichier
fwrite($fichier, "$c"); //ecriture du commentaire PAS d'ecriture du separateur
fwrite($fichier, "\n"); // on revient à la ligne
fclose($fichier); // FERMETURE DE L ECRITURE SUR FICHIER TEXTE SUR LE SERVEUR (bdd txt)

// #########################################################################################################################
// RE-ECRITURE DU FICHIER pour le cas ou des visiteur testent fileboss?php4
// #########################################################################################################################


if(!file_exists("inscrits_copie.txt")) {
$idFicLivre=fopen("inscrits_copie.txt","w+");
fputs($idFicLivre,"Fichier des membres inscrits (copie) :\n");
fclose($idFicLivre);
}

$fichier = fopen("inscrits_copie.txt", "a+");
fwrite($fichier, "$n"); //ecriture du login
fwrite($fichier, "|"); //ecriture du separateur
fwrite($fichier, "$sexei"); //ecriture du sexe
fwrite($fichier, "|");
fwrite($fichier, "$d"); //ecriture de la date
fwrite($fichier, "|");
fwrite($fichier, "$mailexp"); //ecriture du mail de l'inscrit
fwrite($fichier, "|");
fwrite($fichier, "$pass"); //ecriture du code d'accès
fwrite($fichier, "|");
fwrite($fichier, "$age"); //ecriture de l'age
fwrite($fichier, "|");
fwrite($fichier, "$hobbi"); //ecriture du hobbi
fwrite($fichier, "|");
fwrite($fichier, "photos/membre_$quantieme.jpg"); //ecriture de la photo
fwrite($fichier, "|");
fwrite($fichier, "$choixregion"); //ecriture de la region
fwrite($fichier, "|\n"); //ecriture du separateur + retour ligne dans fichier
fwrite($fichier, "$c"); //ecriture du commentaire PAS d'ecriture du separateur
fwrite($fichier, "\n"); // on revient à la ligne
fclose($fichier); // FERMETURE DE L ECRITURE SUR FICHIER TEXTE SUR LE SERVEUR (bdd txt)

// #########################################################################################################################
// CONFIRMATION D INSCRIPTION
// #########################################################################################################################


print("<center><font size=\"4\" color=\"blue\"><br>Votre inscription a bien été enregistrée,<br>Vous faites maintenant partie de nos membres. Merci.<br><br></font></center>");
print("<script>setTimeout(\"location=\'..connection_session/index_connection.php\'? lecture=accueil&action=\'\",2500)</script>");


?>

3 réponses

ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
21 mars 2013 à 15:19
Bonjour,

Tu devrais remplacer et simplifier la 1ère partie de ton script de vérification des champs du formulaire par celui-ci :
<?php
$error = array();
if(empty($n)) {
	$error[] = "pseudo";
} elseif(empty($sexei)) {
	$error[] = "sexe";
} elseif(empty($mailexp)) {
	$error[] = "email";
} elseif(empty($pass)) {
	$error[] = "password";
} elseif(empty($c)) {
	$error[] = "présentation";
} elseif(empty($NomFichier1)) {
	$error[] = "photo";
} elseif(empty($choixpays)) {
	$error[] = "pays";
} elseif(empty($age)) {
	$error[] = "âge";
} elseif(empty($hobbi)) {
	$error[] = "hobby";
}

if(!empty($error)) {
	echo "<p>Les champs suivants sont obligatoires :<br />\n";
	foreach($error as $key => $val) {
		echo $val."<br />\n";
	}
	echo "</p>\n<script>setTimeout('window.history.back()',20000)</script>\n";
} else {
	include("pseudo_control.php4");
}

// Suite de ton code...


P.S. : Il faut laisser le temps à l'utilisateur de lire les messages d'erreur j'ai donc paramétré le setTimeout() javascript sur 20 secondes (20000) avant de rediriger. Si c'est encore trop court, il suffit d'augmenter la valeur en paramètre de la fonction.
Perso, je ne fais pas comme ceci pour rediriger en cas d'erreur(s) mais bon, chacun sa méthode...

Cdlt.
ReDLoG
0
texte1 Messages postés 3 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 22 mars 2013
21 mars 2013 à 23:39
Bonjour ReDloG,
merci pour ton concourt; cependant, mon problème n'est pas encore résolu en suivant votre suggestion. Voici les lignes de réponses que je reçois même sans remplir le formulaire:

Les champs suivants sont obligatoires :
pseudo

Votre inscription a bien été enregistrée,
Vous faites maintenant partie de nos membres. Merci.

Bien sûre que ce n'est pas logique , sans avoir rempli le formulaire, je reçois la confirmation d'avoir été inscrit. Il y a une louche dans ce code, la première partie manque quelque chose..... peut être que je dois chercher du côté de données d'accès au serveur ou la session...

Merci encore.
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
22 mars 2013 à 12:29
Si le script se trouve dans le même fichier que le formulaire HTML, c'est normal que le script se lance automatiquement. Si c'est le cas, il suffit de mettre une condition supplémentaire au script :

// On rajoute un attribut au bouton submit du formulaire
<input type="submit" name="SEND" value="Inscription" />

// Puis on rajoute une condition if au script PHP
if(isset($_POST['SEND']) && $_POST['SEND'] == 'Inscription') {
// Placer ici tout le script PHP existant
}
<!--reste du code HTML de la page web-->


Cdlt.
ReDLoG
0
texte1 Messages postés 3 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 22 mars 2013
22 mars 2013 à 20:34
Bonjour ReDloG,
merci encore pour ton concourt; mon fichier php n'est pas sur la même page que mon formulaire html; toute fois, j'ai posé quelques conditions sur le formulaire;


print("<form method=\"post\" action=\"envoi_formulaire.php? '.$inscription.'\" enctype=\"multipartform-data\">\n");


if ($inscription['SEND_form'])
{
erreur(ERR_SEND_form);
}

// ------------------------------- LOGIN / PSEUDO ------------------------


ainsi que sur la page inscription.php avant de confirmer la validation de l'inscription:


// CONFIRMATION D' INSCRIPTION
// #########################################################################################################################

if(error!=0){echo '<center><font size=\"4\" color=\"blue\"><br>Votre inscription a bien été enregistrée,<br>Vous faites maintenant partie de nos membres. Merci.<br><br></font></center>';}
else {echo '<p> votre inscription n\'a pu être validée, je suis désolé!</p>';
}

?>


Voici ce que j'ai comme suite de réponse en validant le formulaire vide, non rempli.


Les champs suivants sont obligatoires :
pseudo
votre inscription n'a pu être validée, je suis désolé!

Le problème persiste lorsque cette fois-ci le formulaire est bien rempli; il y a toujours la même réponse:


Les champs suivants sont obligatoires :
pseudo
votre inscription n'a pu être validée, je suis désolé!

Peut être que je devrai faire le boucle foreach ($inscription!=0)
en essayant de valoriser le variable de l'inscription avant de poser la condition.

Merci pour votre participation.
0