[RESOLU] $_POST fonctionne à 75% ou ... :-(

Petit nouveau ! | 5 Messages

13 avr. 2014, 19:44

Bonjour à tous,

je suis débutant en PHP et lancé dans un projet de site web. Me refusant l'utilisation d'un CMS, j'ai décidé de construire par moi même.
Je bloque sur le formulaire d'inscription... eh oui, ça sent les débuts difficiles :-)

Le HTML de saisie et le php de traitement sont dans le même fichier : Enregistrement_Utilisateur.php

voici le form de saisie des coordonnées nécessaires à l'inscription :
				<form name="inscription" method="post" action="Enregistrement_Utilisateur.php">

					<br />
					<input type="text" name="prenom" id="prenom" placeholder="Prénom" size="45" maxlength="50" required autofocus/>
					<br />
					<br />		
					<input type="text" name="nom" id="nom" placeholder="Nom" size="45" maxlength="50" required autofocus/>
					<br />
					<br />	
					<input type="email" name="adresse_courriel" id="Adresse_courriel" placeholder="Adresse courriel" size="45" maxlength="50" required autofocus/>
					<br />
					<br />		
					<input type="password" name="mot_de_passe" id="mot_de_passe" placeholder="Mot de Passe" size="45" maxlength="50" required autofocus/>
					<br />
					<br />					
				
					<label for="conditions_generales">J'accepte les conditions générales</label>
					<input type="checkbox" name="conditions_generales" id="conditions_generales" required />
					<br />
					<br />			
					<input type="submit" name="valider" value="OK"/>
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					
				</form>


le code php suivant,

			if(isset($_POST['valider']))
			{
					print_r($_POST);
                        }


renvoie des zones prenom, nom, mot_de_passe renseignées et adresse_courriel vide...

Quelqu'un aurait il une idée ?

Après quelques heures de bidouillage et de lecture, je n'y vois plus rien... et à vrai dire ça sent l'erreur bête !

ViPHP
xTG
ViPHP | 7331 Messages

13 avr. 2014, 21:12

Aucune erreur dans ce que tu nous postes.
Places ton print_r en tout début de script pour l'afficher en permanence.
Cela te permettra de voir si réellement tu as un souci de transmission des données.
Si après avoir posté le formulaire tu ne vois rien c'est que tu as une redirection entre le post et l'affichage.

Petit nouveau ! | 5 Messages

13 avr. 2014, 21:46

J'ai déplacé le

print_r($_POST);

en début de script.

Le résultat est le même

Image

je m'arrache les cheveux...

Petit nouveau ! | 5 Messages

13 avr. 2014, 22:09

Pour plus de clarté, je mets l'ensemble code

<!doctype html>  
<head>
	<meta charset="UTF-8">
	<title>S'Enregistrer</title>

	<link rel="icon" href="images/favicon.gif" type="image/x-icon"/>

 <!--[if lt IE 9]>
 <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->

	<link rel="shortcut icon" href="images/favicon.gif" type="image/x-icon"/> 
	<link rel="stylesheet" type="text/css" href="css/styles.css"/>
	<link type="text/css" href="css/css3.css" rel="stylesheet" />

	<script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>
	<script type="text/javascript" src="js/jquery.pikachoose.js"></script>

	<script language="javascript">
			$(document).ready(
				function (){
					$("#pikame").PikaChoose();
				});
	</script>
	
</head>
	
<body>
	
<!--start container-->
<div id="container">

		<!--start header-->
		<header>
 
			<!--start logo-->
				<a href="#" id="logo"><img src="images/logo.png" width="221" height="100" alt="logo"/></a>    

			<!--end logo-->
	
			<!--start menu-->
				<nav>
					<ul>
						<li><a href="index.html" >Accueil</a></li>
						<li><a href="Promesse.html">Promesse</a></li>
						<li><a href="#">Le Blog</a></li>
						<li><a href="Enregistrement_utilisateur.php" class="current">Créer Compte</a></li>
						<li><a href="Contactez_Nous.php">Contact</a></li>
					</ul>
				</nav>
	
			<!--end menu-->
	

		<!--end header-->
		</header>

		<!--start intro-->
		<div id="intro">
			<div class="group_bannner_right">
				<img src="images/picture_rev01.png" width="360" height="207"  alt="baner">
			</div>
   
			<header class="group_bannner_left">
			
				<hgroup>
					<h1>l'Efficacité énergétique en action</h1>
					<h2>“Partager et Progresser“</h2>
				</hgroup>
				
			</header>
			
		</div>
   
		<!--end intro-->
   
		<!--start holder-->
		<div class="holder_content">
   
			<section class="group1">
				<p>
				<h3>Rejoindre les Utilisateurs </h3>				
				</p>

			</section>

			<section class="group2">
	
				<span style="font-family: Arial, 'Arial Unicode MS', Helvetica, sans-serif; font-size: 14px;">

				<form name="inscription" method="post" action="Enregistrement_Utilisateur.php">

					<br />
					<input type="text" name="prenom" id="prenom" placeholder="Prénom" size="45" maxlength="50" required autofocus/>
					<br />
					<br />		
					<input type="text" name="nom" id="nom" placeholder="Nom" size="45" maxlength="50" required autofocus/>
					<br />
					<br />	
					<input type="text" name="adresse_courriel" id="Adresse_courriel" placeholder="Adresse courriel" size="45" maxlength="50" required autofocus/>
					<br />
					<br />		
					<input type="password" name="mot_de_passe" id="mot_de_passe" placeholder="Mot de Passe" size="45" maxlength="50" required autofocus/>
					<br />
					<br />					
				
					<label for="conditions_generales">J'accepte les conditions générales</label>
					<input type="checkbox" name="conditions_generales" id="conditions_generales" required />
					<br />
					<br />			
					<input type="submit" name="valider" value="OK"/>
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					<br />
					
				</form>

    <!--DEBUT TRAITEMENT DES DONNEES SAISIES PHP-->
	
<?php
			print_r($_POST);
					// *****************************************************************
					// 														FONCTIONS 
					// *****************************************************************

					
					/*
					** 		Function : securite_input(,)
					** 		Entree : ($a,&$b) ou $a représente la typologie de la variable à questionner et &$b un pointeur sur la variable à questionner
					** 		Sortie : paramètre(s) en sortie 1 si le contrôle est OK, 0 sinon
					** 		Description : fonction de contrôle, sécurisation spécifique par type d'input (cf document stratégie de sécurité)
					** 		Createur : PMr
					** 		Date : 12/04/2014
					*/
					
					function securite_input($a,&$b)
					{	
		
						if ($a == 1) 
						// Saisie d’un nombre entier.
							{
								echo "nombre entier";
							} 

						// Saisie de caractères nombres décimaux
						elseif ($a == 2) 

							{
								echo "nombre décimal";
							} 

						// Saisie de caractères prédéfinis dans les prénoms, noms...
						elseif ($a == 3) 

							{
								if (preg_match("/^[a-zA-Z àâéèêôùûçÀÂÉÈÔÙÛÇäöïëüÄÖËÜÏ]*$/",$b))
									{
										// La chaine saisie est acceptable, on la sécurise
										$b = addcslashes($b, '%_<>');
										$b = mysql_real_escape_string($b);
										$b=trim($b);
										return (1);
										//
									}
								else
									{
										// La chaine n'est pas acceptable
										return (0);
										// 
									}
							}						

						// Saisie de mots de passe
						elseif ($a == 4) 

							{
									//
									// Contraintes de sécurité contre les injections SQL…
									//
								
											$b = addcslashes($b, '%_<>');
											$b = mysql_real_escape_string($b);
											$b=trim($b);
									
									//
									// Contraintes de sécurité relative à l'historique mot de passe : 3 occurences
									//									
					                        // Reste à faire
					                        // si OK, $historique=1 – sinon $historique=0
					                        $historique=1;
									
									//
									// Contraintes de sécurité relative à l'historique mot de passe : 3 occurences
									//									
					                        // Reste à faire
					                        // si OK, $vie_mini_mot_de_passe=1 – sinon $vie_mini_mot_de_passe=0 - 30 jours
					                        $vie_mini_mot_de_passe=1 ;
									
				
									// Contraintes de complexité N°1 : Ne pas contenir tout ou partie du nom ou du prénom du user ou du nom du site
										
					                        // Reste à faire
					                        // si OK, $banal=1 – sinon $banal=0
					                        $banal=1 ;
										
									// Contraintes de complexité  
									
									$Password = $b;

									// Si la longueur de la chaîne $Password est inférieure à 8 ou supérieure à 25 on retourne FALSE
										if ((strlen($Password) < 7) OR (strlen($Password)>25)) 
										{
											return(0);
										}
									
									// On supprime les accents de la chaîne $Password
											$Password = strtr($Password, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ', 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn');
         
									// On initialise le compteur catégorie de caractères
											$iReturn = 0;
									
									// Détection minuscules
											if (preg_match('`[a-z]`', $Password) === 1) $iReturn++;
									
									// Détection majuscules
											if (preg_match('`[A-Z]`', $Password) === 1) $iReturn++;
									
									// Détection chiffres
											if (preg_match('`[0-9]`', $Password) === 1) $iReturn++;
									
									// Détection caractères spéciaux
											if (preg_match('`[^a-zA-Z0-9]`', $Password) === 1) $iReturn++;

											if ($iReturn < 3) 
												{
													return(0);
												}
											else
												{
													return(1);
												}
							}

						// Contrôle de l'adresse email
						
						elseif ($a == 10) 
							{

									// On rend inoffensives les balises HTML que le visiteur a pu rentrer

										$b = htmlspecialchars($b);		

									// controle de la syntaxe de l'adresse mail
								
										if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $b))
											{
												return(1);
											}
										else
											{
												return(0);
											}
							}
							
					}						

					// *****************************************************************
					// 							FIN DU CHAPITRE FONCTIONS 
					// *****************************************************************
					
					

					
			if(isset($_POST['valider']))
			{
					// print_r($_POST);

					// *****************************************************************
					// VALIDATION DES DONNEES SAISIES
					// *****************************************************************

					// Validation du prenom saisi
			
						$prenom=$_POST['prenom'];
						$b=$prenom;
						$result=securite_input(3,$b);
						$prenom=$b;
						
						$result = intval($result);
						if ($result==1)
							{
								// echo ' ** prenom : fonction securite_input  sortie OK  tu as saisi :'.$prenom.'<br />';
							}
						else
							{
								// echo ' !! prenom : fonction securite_input  sortie NOK  tu as saisi :'.$prenom.'<br />';
								// Retour au formulaire de saisie - zone à vide
							}
					
					// Validation du nom saisi
						
						$nom=$_POST['nom'];
						$b=$nom;
						$result=securite_input(3,$b);
						$nom=$b;
						
						$result = intval($result);
						if ($result==1)
							{
								// echo ' ** nom : fonction securite_input  sortie OK  tu as saisi :'.$nom.'<br />';
							}
						else
							{
								// echo ' !! nom : fonction securite_input  sortie NOK  tu as saisi :'.$nom.'<br />';
								// Retour au formulaire de saisie - zone à vide
							}
			
			
					// Validation adresse email saisie
			
						$adresse_mail=$_POST['adresse_courriel'];
						$b=$adresse_mail;
						$result=securite_input(10,$b);
						$adresse_mail=$b;
							
						$result = intval($result);							
						if ($result==1)
							{
								// echo ' ** '.$adresse_mail.'<br />';
							}
						else
							{
								// echo ' !! adresse mail incorrecte'.$adresse_mail.'<br />';
									// Retour au formulaire de saisie - zone à vide
									
							}
							
					// Validation du mot de passe saisi 
			
						$mot_passe=$_POST['mot_de_passe'];
						$b=$mot_passe;
						$result=securite_input(4,$b);
						$mot_passe=$b;
						
						$result = intval($result);
						
						if ($result==1)
							{
								// echo ' ** mot de passe : fonction securite_input  sortie OK  tu as saisi :'.$mot_passe.'<br />';
								
								// Hashage et Salage Mot de Passe
			
										$hash_mot_passe = hash('sha256', $mot_passe);
			
								// ATTENTION : Salage créé homemade en attente upgrade PHP 5.5 //
								// pas de salage auto avec php 5.4.12  technique perso      //
								// concatenation de nom + prenom + premier mot de passe        //
			
										$salage_utilisateur=$nom.$prenom.$mot_passe;
										$hash_mot_passe_salé = hash('sha256', $mot_passe.$salage_utilisateur);
								// echo ' ** mdp h&s :'.$hash_mot_passe_salé.'<br />';
										
							}
						else
							{
								// echo ' !! mot de passe : fonction securite_input  sortie NOK  tu as saisi :'.$mot_passe.'<br />';
								// Retour au formulaire de saisie - zone à vide
							}
			}
			else
			{
					// echo 'LE FORMULAIRE NE FONCTIONNE PAS';
			}
			
			
			
					// ========================================================================
					// FIN DE VALIDATION DES DONNEES SAISIES
					// ========================================================================
					
					
					// *****************************************************************
					// PREPARATION DES DONNEES AVANT INSERTION DANS LA BASE DE DONNEES
					// *****************************************************************
					
			
					// ========================================================================
					// FIN DE PREPARATION DES DONNEES AVANT INSERTION DANS LA BASE DE DONNEES
					// ========================================================================
					
					
					// ************************************************************************
					// INSERTION DES DONNEES DANS LA BASE DE DONNEES
					// ************************************************************************
	
					// reste à faire
	
					// ========================================================================
					// FIN INSERTION DES DONNEES DANS LA BASE DE DONNEES
					// ========================================================================
					
 ?>
				</span>

			</section>
   
		</div>
	   <!--end holder-->
    
</div>
<!--end container-->


   <!--start footer-->
   
   <footer>
			<div class="container">  
			<div id="FooterTwo"> Valid html5, design and code by <a href="http://freehtml5templates.com">Free HTML5 Templates</a> </div>
			</div>
   </footer>
   <!--end footer-->
   </body></html>
je ne comprends pas comment il fonctionne pour les variables prenom, nom et mot_de_passe et pas pour adresse_courriel....

tout me semble pourtant OK....

Petit nouveau ! | 5 Messages

14 avr. 2014, 07:23

Apres une soirée de prise de tête, j'ai finalement redirigé mes outputs $_Post dans un fichier texte...
					$contenu = '';
					$contenu .= $_POST['nom']."\r\n";
					$contenu .= $_POST['prenom']."\r\n";
					$contenu .= $_POST['adresse_courriel']."\r\n";
					$contenu .= $_POST['mot_de_passe'];
					
					$h = fopen("fichier.txt", "a");
					fwrite($h, $contenu);
					fclose($h);
et mes données sont présentes et OK dans le fichier texte...

Surement un problème d'affichage... (CSS ?). En tout cas mes champs sont OK :)

ViPHP
xTG
ViPHP | 7331 Messages

14 avr. 2014, 13:22

Le résultat est le même
Euh... As-tu seulement regardé ton image ?
Pour moi le résultat n'est pas le même, on voit l'email. ;)
Tu as je dirais une règle qui transforme l'affichage des urls et des emails (javascript ?) et qui fait que le CSS appliqué n'est pas adapté à ta couleur de fond (blanc sur gris clair).

Petit nouveau ! | 5 Messages

14 avr. 2014, 15:28

@xTG :

Chapeau Bas Monsieur !
GIMP confirme !

Je vais changer mes lunettes :)

Je vais me promener dans le CSS maintenant...