Exemple de formulaire utilisant "header"

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 : Exemple de formulaire utilisant "header"

Pour protégé une page!!!

par header » 29 juin 2006, 16:20

<?php
session_start();
if(!isset($_SESSION['login'])) {
  echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
  include('login.htm');
  exit;
}
?> 

Exemple de formulaire utilisant "header"

par header » 29 juin 2006, 16:09

Salut à tous voyant sans arrêt la même question malgré tous les exemples du forum, j'ai pris l'initiative de poster un de mes codes source largement commenté.

Je tiens aussi à preciser que ce n'est qu'à titre d'exemple et que certainement cela est améliorable (là je vous laisse la main)

D'ailleurs je n'ai pas mis la table sql et d'autre vérification peuvent-être ajoutées :P (j'allais quand même pas tout faire lol)

Je commence : Voici le formulaire enregistrement.php

<!-- 
	enregistrement.php
     Formulaire d'enregistrement d'utilisateur
     ( Vérification effectué par register.php )
     Par header ( pour PHPFrance )       
-->
     
     
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
       <title>Enregistrement d'un nouveau membre</title>
       
	   <!-- 
	   Inclusion de la feuille de style "style.css" 
	   -->
	   <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>

<!-- 
"div" décrite par la "class" : "formulaire_txt" dans "style.css" 
-->
<div class="formulaire_txt">
	Login :<br><br>
	Mot de passe :<br><br>
	Vérification du mot de passe :<br><br>
	Email :<br><br>
	Prénom, Nom :<br><br>
	Rue, N° :<br><br>
	Ville, Code postal :<br><br>
	Pays :
</div>

<!-- 
"div" décrite par la "class" : "formulaire_input" dans "style.css" 
-->
<div class="formulaire_input">

	<!-- On decrit l'action d'envoi des données du formulaire
    On les envoi à "register.php" par la methode "POST" 
	-->
	<form action="register.php" method='post'>
		
		<!-- Balises "input" (champs de textes où seront inscrites les données
		Les script php permettent de récupérer les données par "GET" en cas d'erreur,
		ces données sont envoyés par "register.php" apres traitement, On decode aussi
		les mots de passe avec "base64_decode()"
		-->
		<input type="text" value="<?php echo $_GET['login'];?>" size="15" name="login" maxlength="70"><br><br>
		<input type="password" value="<?php echo base64_decode($_GET['mdp']);?>" size="15" name="mdp" maxlength="70"><br><br>
		<input type="password" value="<?php echo base64_decode($_GET['verif_mdp']);?>" size="15" name="verif_mdp" maxlength="70"><br><br>
		<input type="text" value="<?php echo $_GET['email'];?>" size="26" name="mail" maxlength="70"><br><br>
		<input type="text" value="<?php echo $_GET['prenom'];?>" size="15" name="prenom" maxlength="70">,
		<input type="text" value="<?php echo $_GET['nom'];?>" size="15" name="nom" maxlength="70"><br><br>
		<input type="text" value="<?php echo $_GET['rue'];?>" size="40" name="rue" maxlength="70">,
		<input type="text" value="<?php echo $_GET['numero'];?>" size="2" name="numero" maxlength="70"><br><br>
		<input type="text" value="<?php echo $_GET['ville'];?>" size="15" name="ville" maxlength="70">,
		<input type="text" value="<?php echo $_GET['code_postal'];?>" size="5" name="code_postal" maxlength="70"><br><br>
		<input type="text" value="<?php echo $_GET['pays'];?>" size="15" name="pays" maxlength="70"><br><br>
		
		<!-- 
		Bouton d'envoi de la balise "FORM" 
		-->
		<input class="bouton" type="submit" value="Inscription">
	</form>
	<br>
	<!-- 
	Récupération des données envoyées en cas d'erreur par "register.php" avec la methode "GET" 
	-->
	<?php 
		// Si "$_GET['err']" est égal à vide 
		if ($_GET['err'] == vide)
		{
		// Lancement du message d'erreur par "echo()"	
			echo "<b> Attention: </b> Un ou plusieurs champs sont vides!";
		}
		// Sinon si "$_GET['err']" est égal à mail
		elseif ($_GET['err'] == mail)
		{
			// Lancement du message d'erreur par "echo()"
			echo "<b> Attention: </b> Votre adresse Mail est invalide!";
		}
		// Sinon si "$_GET['err']" est égal à pwd 		
		elseif ($_GET['err'] == pwd)
		{
			// Lancement du message d'erreur par "echo()"
			echo "<b> Attention: </b> Les mots de passe ne sont pas pareils!";
		}				
		?>
</div>
</body>
</html>
Ensuite le traitement des données par register.php
<?php


////////////////////////////////////////////////////////////////
///// register.php                                         ///// 
///// Traitement des données du fichier enregistrement.php /////
///// Par header ( Pour PHPFrance )                        /////
////////////////////////////////////////////////////////////////


// inclure les données de connection à mysql            
include ('config.inc.php');

// Declarations et transformations de variables "POST"
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$rue = $_POST['rue'];
$numero = $_POST['numero'];
$ville = $_POST['ville'];
$cp = $_POST['code_postal'];
$pays = $_POST['pays'];
$email = $_POST['mail'];
$login = $_POST['login'];
$mdp = $_POST['mdp'];
$verif = $_POST['verif_mdp'];
// Declaration des variables de vérification
$point = strpos($email,".");
$aroba = strpos($email,"@");

// Si un ou plusieurs champs sont vides
// Lancer la page "enregistrement.php" avec l'erreur et les valeurs des champs par "GET"
// On code le mot de passe en "base64"
// Sinon(Else) on execute le reste du code  
if(empty($prenom) or empty($nom) or empty($rue) 
	or empty($numero) or empty($ville) or empty($cp) or empty($pays) or empty($email) or empty($login) or empty($mdp))
{ 
	header('Location: enregistrement.php?err=vide&login='. $login .'&mdp='. base64_encode($mdp) .'&verif_mdp='. $verif .'&email='. $email .'&prenom='. $prenom .'&nom='. $nom .'&rue='. $rue .'&numero='. $numero .'&ville='. $ville .'&code_postal='. $cp .'&pays='. $pays .'');
}
else
{	// Si les mots de passe sont différents
	// Lancer la page "enregistrement.php" avec l'erreur et les valeurs des champs par la méthode "GET" sant les mots de passe"
	// On ne remet pas les mots de passe puisse qu'ils sont faux
	// Sinon(Else) on execute le reste du code 
	if($mdp != $verif) 
	{
		header('Location: enregistrement.php?err=pwd&login='. $login .'&email='. $email .'&prenom='. $prenom .'&nom='. $nom .'&rue='. $rue .'&numero='. $numero .'
		&ville='.$ville.'&code_postal='.$cp.'&pays='.$pays.'');
	}
	else
	{	
		// Si le mail ne contient pas de "." ou un "@"
		// Lancer la page "enregistrement.php" avec l'erreur et les valeurs des champs par "GET"
		// On code le mot de passe en "base64"
		// Sinon(Else) on execute le reste du code 
		if($point=='' or $aroba=='')
		{
			header('Location: enregistrement.php?err=mail&login='. $login .'&mdp='. base64_encode($mdp) .'&verif_mdp='. $verif .'&email='. $email .'&prenom='. $prenom .'&nom='. $nom .'&rue='. $rue .'&numero='. $numero .'&ville='. $ville .'&code_postal='. $cp .'&pays='. $pays .'');
		}
		else
		{
// Variable de requête sql pour insérer un nouveau membre
		$sql = "INSERT INTO `users` ( `id` , `prenom` , `nom` , `rue` , `numero` , `ville` , `cp` , `pays` , `email` , `login` , `mdp` , `vip` , `argent` , `points` )
		VALUES (
		NULL , '$prenom', '$nom', '$rue', '$numero', '$ville', '$cp', '$pays', '$email', '$login', '$mdp', '', '', ''
		)";

//Requête sql (insértion du membre) ou si problémes, affichage de l'erreur sql
		mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		}
	}
}
?>

Le config.inc.php pour la base de données
<?php
// on se connecte à MySQL
$db = mysql_connect('HOST', 'Login', 'Pass');
mysql_select_db('BaseDeDonnées',$db);
?>
Le style.css

Code : Tout sélectionner

body { margin: 0;/* sans marges, la page sera collée aux bords */ font-family: verdana, arial, sans-serif; /* on définit la police de base dans la page */ font-size: 14px; /* on définit la taille de police de base dans la page */ } input { background-color: #ff9966; font-weight: bold; color:white; } select { background-color: #ff9966; font-weight: bold; color:white; } .bouton { background-color: #ff9966; font-weight: bold; color:#3300FF; } .formulaire_txt { color:#ff9966; font-size: 15px; position: absolute; padding-top: 3px; font-weight: bold; width: 200px; height: 376px; background-color: #3300FF; } .formulaire_input { margin-left: 200px; padding-top: 7px; padding-left: 10px; width: 380px; height: 372px; background-color: #3300FF; }
le login.php !
<?php
include ('config.inc.php');


if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select mdp from users where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['mdp'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('login.htm'); // On inclut le formulaire d'identification
    exit;
  }
  else {
    session_start();
    $_SESSION['login'] = $login;
    
    echo 'Vous etes bien logué';
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres
  }   
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('login.htm'); // On inclut le formulaire d'identification
   exit;
}

?>
Et même un login.htm

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> <title>login!</title> </head> <body> <form action="login.php" method='post'> <table align="center" border="0"> <tr> <td>Login :</td> <td><input type="text" name="login" maxlength="250"></td> </tr> <tr> <td>Password</td> <td><input type="password"name="pass" maxlength="10"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="log in"></td> </tr> </table> </form> </body> </html>
Voila il existe aussi les variables de session pour récupérer les valeurs,
mais comme je l'ai dit c'est à titre d'exemple pour comprendre la méthodologie de travail


GOOD CODING ;)