Formulaire d'identification membres

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 : Formulaire d'identification membres

par Jackisback » 02 oct. 2008, 08:44

Ok pas de problème ...

Si j'ai un soucis j'ouvrirai un nouveau post mais je pense que ça va roulé ....

merci encore

par djtec » 02 oct. 2008, 00:05

Si ton problème est réglé pense à ajouter le tag résolu en cliquant sur le bouton en haut à gauche...

++

par Jackisback » 01 oct. 2008, 23:51

Cool ...

Merci oui la base est bien remplie déjà ... je n'ai plus qu'a adapter tout les champs dans ton formulaire et en avant ....

Merci encore et bonne nuit.

@+

par AB » 01 oct. 2008, 23:49

c'est bien ça... évidemment pour l'enregistrement il faudra penser à insérer les valeurs correspondantes dans ta table.
En considérant que tu aies ajouté le champ email dans ta table cela donnerait :
$insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement,email) VALUES('".$nom."', '".$password."', NOW(), '".$email."')";
(à adapter avec le nom des champs de ta table)

par Jackisback » 01 oct. 2008, 23:31

Merci merci merci et encore merci pour votre rapidité et votre efficacité ...

J'ai modifié le script pour mes besoins et voilà ce que ça donne, connexion.php:
<?php
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine) 
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
} 

// Initialisation du message de réponse
$message = null;


// Si le formulaire est envoyé
if (isset($_POST['inscr_pseudo'])) 
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['inscr_pseudo']) && trim($_POST['inscr_pseudo']) != '')? Verif_magicquotes($_POST['inscr_pseudo']) : null;
    $pass = (isset($_POST['inscr_pass']) && trim($_POST['inscr_pass']) != '')? Verif_magicquotes($_POST['inscr_pass']) : null;
    

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass)) 
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "xxx";
         $username = "root";
         $password = "";
    
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         // Connexion à la base
         mysql_select_db($database, $connection);
    
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
    
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
        
		// Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire
        $requete = "SELECT count(*) as nb FROM membre WHERE inscr_pseudo = '".$nom."' AND inscr_pass = '".$password."'";  
	
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec); 

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat; 
         if ($resultat['nb'] == 1) 
         // Résultat du comptage = 1 , le pseudo et le mot de passe sont correct		 
         {
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
                 //redirection vers la page que tu veux en cas de succès
                 header("Location: bravo.php");
                 exit(); 
             }    
         }
         else
         {   // Le pseudo ou le mot de passe sont incorrect
             $message = 'Le pseudo ou le mot de passe sont incorrect';
         }
	}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Formulaire de connexion</title>

<style type="text/css">
<!--





body, p, h1,form, input {
margin:0;
padding:0;
}
body {
background-color:#FFFFFF
}
#inscription {
width:380px;
background:#FFFFFF;
margin:20px auto;
font-family: Arial, Helvetica, sans-serif;
font-size:1em;
border:2px solid #333333;
}
#inscription h1 {
text-align:center;
font-size:1.2em;
background:#333333;
padding-bottom:5px;
margin-bottom:15px;
color:#FFFFFF;
letter-spacing:0.05em;
}
#inscription p {
padding-top:15px;
padding-right:50px;
text-align:right;
}
#inscription input {
margin-left:30px;
width:150px;
}
#inscription #valider {
width:155px;
font-size:0.8em;
}
#inscription #message {
height:27px;
font-size:0.7em;
font-weight:bold;
text-align:center;
padding:10px 0 0 0;
}
-->
</style>
</head>
<body>
<div id = "inscription">
    <form action = "#" method = "post">
    <h1>Connexion</h1>
    <p><label for = "inscr_pseudo">Pseudo : </label><input type = "text" name = "inscr_pseudo" id = "inscr_pseudo" /></p>
    <p><label for = "inscr_pass">Mot de passe : </label><input type = "password" name = "inscr_pass" id = "inscr_pass" /></p>
    <p><input type = "submit" value = "Envoyer" id = "valider" /></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
</div>
</body>
</html>
Je me suis permis de rajouter $password ici:
$requete = "SELECT count(*) as nb FROM membre WHERE inscr_pseudo = '".$nom."' AND inscr_pass = '".$password."'";  
Car tu avais écris :
$requete = "SELECT count(*) as nb FROM membre WHERE inscr_pseudo = '".$nom."' AND inscr_pass = '".password."'";
Merci encore de votre aide ...

Maintenant que les scripts inscription et connexion fonctionne bien je n'ai plus qu'à les adapter pour ajouter d'autre champs pour l'inscription ...

Si je veux rajouter un champ site web, sexe, email, ville, pays, etc ...

est-ce que je dois ajouter ça aussi:
$email = (isset($_POST['inscr_email']) && trim($_POST['inscr_email']) != '')? Verif_magicquotes($_POST['inscr_email']) : null;
$sexe = (isset($_POST['inscr_sexe']) && trim($_POST['inscr_sexe']) != '')? Verif_magicquotes($_POST['inscr_sexe']) : null;
$pays= (isset($_POST['inscr_pays']) && trim($_POST['inscr_pays']) != '')? Verif_magicquotes($_POST['inscr_pays']) : null;
Mais pour l'email, une autre ligne pour le pays etc etc .... c'est bien ça ??? ou il y a d'autres astuces pour ce genre de champ ???

par AB » 01 oct. 2008, 23:09

Ok donc je peux déjà mettre ça en début de chaque page dont je veux protéger l'accès ?

<?php
session_start();
if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');}?>

J'ai vu qu'on pouvait écrire ça aussi:

<?
session_start();?>

Il ne manque pas le php après <? ?????

J'ai volontairement oublié les balises codes pour qu'on voit bien les <?php ?>

------------------------

EDIT:

C'est un script d'inscription que tu as fait et tu précises:

"Remarquez qu'il y a peu de choses à modifier pour transformer ce script d'inscription en script de connexion"

Parceque moi le script d'inscription fonctionnait, c'est plus celui de connexion qui déconne ....

Il vaut mieux mettre <?php que <? car la dernière syntaxe suppose que les short tags soient activés sur le serveur ce qui n'est maintenant plus le cas par défaut avec PHP5

Ben le script de connexion est juste un peu plus simple que le script d'inscription. On modifie un peu la requête pour tester le mot de passe et au lieu de faire l'enregistrement dans la base si on ne trouve aucune correspondance dans la bdd, on fait simplement la redirection si on trouve une correspondance.
        // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire

         $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."' AND pass = '".password."'";
    
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec);
    

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat; 
         if ($resultat['nb'] == 1) 
         // Résultat du comptage = 1 , le pseudo et le mot de passe sont correct
               {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
                 //redirection vers la page que tu veux en cas de succès
                 header("Location: nom_de_ton_fichier_de_destination.php");
                 exit(); 
             }    
         }
         else
         {   // Le pseudo ou le mot de passe sont incorrect
             $message = 'Le pseudo ou le mot de passe sont incorrect';
         }

par djtec » 01 oct. 2008, 22:52

ok ok

par Jackisback » 01 oct. 2008, 22:50

Bah en fait je m'adressais à AB

J'écrivais le message quand tu as posté le tien ... c'est pour ça que j'ai EDITE car je n 'avais pas encore vu le tien ...

----------------------

EDIT:

J'ai pris ce script que j'ai adapté (très peu mais j'ai changé une ou deux choses):
<?php
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine) 
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
} 

// Initialisation du message de réponse
$message = null;


// Si le formulaire est envoyé
if (isset($_POST['inscr_pseudo'])) 
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['inscr_pseudo']) && trim($_POST['inscr_pseudo']) != '')? Verif_magicquotes($_POST['inscr_pseudo']) : null;
    $pass = (isset($_POST['inscr_pass']) && trim($_POST['inscr_pass']) != '')? Verif_magicquotes($_POST['inscr_pass']) : null;
    

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass)) 
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "xxx";
         $username = "root";
         $password = "";
    
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         // Connexion à la base
         mysql_select_db($database, $connection);
    
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
    
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
    
    
         // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
         $requete = "SELECT count(*) as nb FROM membre WHERE inscr_pseudo = '".$nom."'";
    
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec);
    

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat; 
         if ($resultat['nb'] == 0) 
         // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer 
         {
             // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
             $insertion = "INSERT INTO membre(inscr_pseudo,inscr_pass,date_enregistrement) VALUES('".$nom."', '".$password."', NOW())";
         
             // Exécution de la requête d'insertion
             $inser_exec = mysql_query($insertion) or die(mysql_error());
        
             /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser 
             l'opérateur de comparaison strict '==='  c.f. http://fr.php.net/manual/fr/language.operators.comparison.php) */
             if ($inser_exec === true) 
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
            
                 // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.
                 $message = 'Votre inscription est enregistrée. <a href = "../index.php">Cliquez ici pour vous connecter</a>';
             }    
         }
         else
         {   // Le pseudo est déjà utilisé
             $message = 'Ce pseudo est déjà utilisé, changez-le.';
         }
    }
    else 
    {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
         $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Formulaire d'inscription - tutoriel PHP France</title>

<style type="text/css">
<!--
body, p, h1,form, input {
margin:0;
padding:0;
}
body {
background-color:#FFFFFF
}
#inscription {
width:380px;
background:#FFFFFF;
margin:20px auto;
font-family: Arial, Helvetica, sans-serif;
font-size:1em;
border:2px solid #333333;
}
#inscription h1 {
text-align:center;
font-size:1.2em;
background:#333333;
padding-bottom:5px;
margin-bottom:15px;
color:#FFFFFF;
letter-spacing:0.05em;
}
#inscription p {
padding-top:15px;
padding-right:50px;
text-align:right;
}
#inscription input {
margin-left:30px;
width:150px;
}
#inscription #valider {
width:155px;
font-size:0.8em;
}
#inscription #message {
height:27px;
font-size:0.7em;
font-weight:bold;
text-align:center;
padding:10px 0 0 0;
}
-->
</style>
</head>
<body>
<div id = "inscription">
    <form action = "#" method = "post">
    <h1>Inscription</h1>
    <p><label for = "inscr_pseudo">Pseudo : </label><input type = "text" name = "inscr_pseudo" id = "inscr_pseudo" /></p>
    <p><label for = "inscr_pass">Mot de passe : </label><input type = "password" name = "inscr_pass" id = "inscr_pass" /></p>
    <p><input type = "submit" value = "Envoyer" id = "valider" /></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
</div>
</body>
</html> 
Et dans son tuto, AB disait "Remarquez qu'il y a peu de choses à modifier pour transformer ce script d'inscription en script de connexion" et donc j'aurais voulu savoir ce qu'il y avait à changer pour que ça marche comme il le disait ...

Si tu as une idée ....

par djtec » 01 oct. 2008, 22:49

Quel script?

par Jackisback » 01 oct. 2008, 22:44

Par contre j'ai commencer à reprendre quelques fonctions et astuce de ton script pour les mettre dans le mien ... héhé :lol:

------------------

EDIT :

Pour les short tags ok j'en ai pris bonne note ....

Merci

par djtec » 01 oct. 2008, 22:42

Il ne faut pas utiliser les short tag en php car certain serveur les désactivent ce qui empêche au script d'être traité.

par Jackisback » 01 oct. 2008, 22:35

Ok donc je peux déjà mettre ça en début de chaque page dont je veux protéger l'accès ?

<?php
session_start();
if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');}?>

J'ai vu qu'on pouvait écrire ça aussi:

<?
session_start();?>

Il ne manque pas le php après <? ?????

J'ai volontairement oublié les balises codes pour qu'on voit bien les <?php ?>

------------------------

EDIT:

C'est un script d'inscription que tu as fait et tu précises:

"Remarquez qu'il y a peu de choses à modifier pour transformer ce script d'inscription en script de connexion"

Parceque moi le script d'inscription fonctionnait, c'est plus celui de connexion qui déconne ....

par AB » 01 oct. 2008, 20:38

Et si ça ne fonctionne pas montres nous le code que tu as fait :wink:

par Jackisback » 01 oct. 2008, 19:52

Super merci beaucoup ...

Je vais y jeter un oeil et je reviens vous dire si ça fonctionne ...

Merci

par AB » 01 oct. 2008, 17:45

Dans ton cas plus précisément tu fais un include de code php qui génère un header (ton fichier de connexion) à l'intérieur de ton code html.

Code : Tout sélectionner

<div id="texte"><br/><br/><br/><br/><center><?php include("../Formulaire/Connexion/test-Login.php");?></center><br/><br/><br/><br/><br
EDIT Et tu as un autre souci car tu déclares deux fois session_start();

PUB

Sinon j'ai fait un tuto d'inscription dans un espace membre ici http://www.phpfrance.com/forums/voir_sujet-242539.php . Tu pourrais l'adapter facilement pour en faire un script de connexion.

Je dis pas que ton code de connexion n'est pas fonctionnel mais le tuto est présenté de manière beaucoup plus simple, il est documenté et opérationnel. :wink: