session

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 : session

par zeus » 20 août 2008, 09:18

Modération :
PHPFrance n'est pas un site de distribution de scripts gratuits,
ni de débuggage de scripts téléchargés et utilisés sans compréhension.

AB a déjà fait un énorme effort en te fournissant un code assez complet, je pense que le moindre effort que tu pourrais faire serait de le lire, au moins les commentaires, pour tenter de le comprendre.

par AB » 19 août 2008, 23:36

    //connection au serveur; dans cet exemple en local sur le serveur d'évaluation
    $hostname = "localhost";
    $database = "nom_de_la_base";//A MODIFIER
    $username = "root";
    $password = ""; 
Comme mentionné ça fonctionne sur un serveur d'évaluation en local sur ton ordinateur avec easyphp ou wamp par exemple. Si tu veux que cela fonctionne sur un serveur distant, il faut indiquer les bonnes valeurs (celles que t'a fournies ton hébergeur) pour chacune des lignes ci-dessus.

par zoussene » 19 août 2008, 09:55

merci beaucoup, :wink: j'ai essaye et on peu cette foi si allé sur la page mais apprêt l'inscription sa m'envoie beaucoup de truc bizare :arrow:
  • Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'zoussene'@'localhost' (using password: NO) in /home/zoussene/www/france.php on line 32

    Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'zoussene'@'localhost' (using password: NO) in /home/zoussene/www/france.php on line 35
    ...
resultat sur france.php :
http://zoussene.freeheberg.com/

par AB » 19 août 2008, 06:18

J'ai pas trouvé de tuto pour les scripts d'inscriptions sur phpdebutant. C'est une variante du script de connexion mais bon, comme j'ai vu qu'il y avait de nombreuses demandes, j'en ai donc fait un :

Pour commencer dans une fenêtre sql de phpMyAdmin faire exécuter ce code pour créer la table "membres" qui servira dans le code php. C'est bien entendu un exemple de table minimaliste, mais indispensable à la bonne exécution du code PHP qui suivra :

Code : Tout sélectionner

CREATE TABLE `membres` ( `ID` int(11) NOT NULL auto_increment, `pseudo` varchar(100) character set latin1 collate latin1_general_ci NOT NULL, `pass` varchar(100) character set latin1 collate latin1_general_ci NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `pseudo` (`pseudo`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Ensuite voilà le code complet que j'ai regroupé dans une seule page avec le formulaire. J'espère que c'est assez documenté. Y'a plus qu'à tester et surtout à comprendre.
<?php
//Fonction pour préparer les requêtes quelque soit la config magic_quotes du serveur
function PrepareSql ($chaine) {

$chaine = (get_magic_quotes_gpc())? mysql_real_escape_string(stripslashes($chaine)) : mysql_real_escape_string($chaine);

return $chaine;
}

//Initialisation du message de confirmation
$message = null;

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

	/* Récupération des variables issues du formulaire
	Teste l'existence des données POST en vérifiant qu'elles existent, qu'elles sont non vides 
       et non composées d'un seul espace (ce dernier point est facultatif et l'on pourrait se 
        passer d'utiliser la fonction trim())*/
	$pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? $_POST['pseudo'] : null;
	$pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? $_POST['pass'] : null;
	
	if(isset($pseudo,$pass)) {//si $pseudo et $pass différents de null
	
	//connection au serveur; dans cet exemple en local sur le serveur d'évaluation
	$hostname = "localhost";
	$database = "nom_de_la_base";//A MODIFIER
	$username = "root";
	$password = "";
	
	$connection = mysql_connect($hostname, $username, $password);

	//connection à la base
	mysql_select_db($database, $connection);
	
	
	//Préparation des données pour la requête à l'aide de notre fonction PrepareSql()
	$nom = PrepareSql($pseudo);
	$password = PrepareSql($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 membres WHERE pseudo = '".$nom."'";
	
	//Exécution de la requête
	$req_exec = mysql_query($requete);
	
	//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; 
	if ($resultat['nb'] == 0) 
		//Résultat du comptage = 0 pour ce pseudo on peut donc l'enregistrer
		{
		$insertion = "INSERT INTO membres(pseudo,pass) VALUES('".$nom."', '".$password."')";
		
		//Si l'insertion se fait correctement
		if ($inser_exec = mysql_query($insertion)) $message = 'Votre inscription est OK.';		
		}
		else
		{//Si le pseudo est déjà utilisé
		$message = 'Ce pseudo est déjà utilisé, changez-le.';
		}
	
	}
	else $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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire d'inscription</title>
<style type="text/css">
body, p, h1,form, input {
margin:0;
padding:0;
}
#inscription {
width:380px;
height:165px;
margin:20px auto 20px auto;
font-family: Arial, Helvetica, sans-serif;
font-size:1em;
border:2px solid #999999;
}
#inscription h1 {
text-align:center;
font-size:1.2em;
background: #CCCCCC;
padding:0 0 5px 0;
margin-bottom:10px;
}
#inscription input {
float:right;
width:150px;
}
#inscription p {
padding:8px;
}
#inscription #valider {
width:155px;
font-size:0.8em;
}
#inscription div {
clear:both;
font-size:0.7em;
font-weight:bold;
text-align:center;
padding-top:3px;
}
</style>
</head>
<body>
<div id = "inscription">
	<form action = "<?php echo $_SERVER['PHP_SELF']?>" method="post">
	<h1>Inscription</h1>
	<p><input type="text" name="pseudo" id="pseudo" /><label for = "pseudo">Pseudo </label></p>
	<p><input type="password" name="pass" id="pass" /><label for = "pass">Mot de passe </label></p>
	<p><input type="submit" value="Valider" id = "valider" /></p>
	</form>
	<div><?php if(isset($message)) echo $message ?></div>
</div>
</body>
</html>
Pour tester ce code il suffit de faire un copié collé. Sauf erreur de ma part il n'y a que la ligne $database = "nom_de_la_base";//A MODIFIER
à adapter à votre configuration (sans oublier la création de la table).

par AB » 18 août 2008, 21:02

Il y a un bon tuto sur le lien suivant pour le module de connexion. Essaies de l'adapter à ton code et montres-nous
http://phpdebutant.org/article47.php

par zoussene. » 18 août 2008, 20:21

:oops: Vous pouvez écrit le code en entier sil vous plaît ?
J'ai tout essaye sa me renvoi un message d'erreur. :cry:

par guilt92 » 18 août 2008, 12:18

Je ne comprends pas pourquoi tu fais ces deux lignes la :
// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO connexion VALUES('', 'pseudo', 'pass')");
Tu insère un nouvel enregistrement vide, si par exemple la première colonne de ta table est une Id et qu'il est unique, tu obtiendras toujours un message d'erreur.
Petite précision :
Si le champ Id (par exemple) est en auto_increment alors cette syntaxe est tout à fait correcte ;)
Par contre comme tu ne prends pas en compte la variable postée, toutes tes entrées dans ta table seront "pseudo" et "pass", et non pas le pseudo et le mot de pass choisi par l'utilisateur (regarde les formulaires et l'utilisations de $_POST)...

Sinon pour le reste des remarques je suis d'accord

par agité » 18 août 2008, 11:56

Je ne comprends pas pourquoi tu fais ces deux lignes la :
// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO connexion VALUES('', 'pseudo', 'pass')");
Tu insère un nouvel enregistrement vide, si par exemple la première colonne de ta table est une Id et qu'il est unique, tu obtiendras toujours un message d'erreur.

De plus tu ferme la connexion juste après :
mysql_close(); 
Ensuite tu déclare des variables de session vide, donc aucun intérêt, à mon avis tu n'as pas utiliser le système des sessions a savoir, passer par le formulaire, tester les variables avec la base de donnée puis ensuite créer une session puis redirection.

Puis dans connexion2.php tu n'utilise pas très bien ta base de donnée puisque tu vas boucler sur un résultat de requête alors que tu pourrais simplement vérifier dans ta base avec les valeurs.

par zoussene » 18 août 2008, 11:10

J'ai essaye de le faire simplifié et je pense que l'erreur vient connexion2.php . :D

inscription.html
<html>
<body>
<h1>inscription</h1>
<form action="inscription2.php" method="post">
<p>
pseudo <input type="text" name="pseudo" /><br/> 
mot de passe <input type="password" name="pass" /><br/>
<input type="submit" value="Valider" />
</p>
</form>
</body>
</html>
inscription2.php
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("db");

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO connexion VALUES('', 'pseudo', 'pass')");

mysql_close();
?>
<html>
<body>
<h3><center>vous pouvez vous <a href="connexion.php">connecté</a></center></h3>
</body>
</html>
connexion.php
<?php
session_start(); // On démarre la session AVANT toute chose
 
// On s'amuse à créer quelques variables de session :
$_SESSION['pseudo_entrer'] = '';
$_SESSION['pass_entrer'] = '';
?>

<form action="connexion2.php" method="post">
<p>
login<input type="text" name="$_SESSION['pseudo_entrer']" /><br/> 
mot de passe<input type="password" name="$_SESSION['pass_entrer']" /><br/>
<input type="submit" value="Valider" />
</p>
</form>
connexion2.php :
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("db"); // Sélection de la base coursphp
 
$reponse = mysql_query("SELECT * FROM connexion"); // Requête SQL

// On fait une boucle pour lister tout ce que contient la table :
 
while ($donnees = mysql_fetch_array($reponse) )
{
?>
 
if $_SESSION['pseudo_entrer'] == $donnees['pseudo'];
AND
$_SESSION['pass_entrer'] == $donnees['pass'];
{
<html>
<body>
<h3><center>Bivenue dans votre compte <?php $_SESSION['pseudo_entrer'] ?></center></h3>
</body>
</html>
}
else
{
<center><h3>Erreur</h3></center>
}
mysql_close(); // Déconnexion de MySQL
?>

par AB » 17 août 2008, 18:18

Avant d'assembler tous tes processus (ou fonctionnalités, méthodes etc) ce serait bien que tu les teste séparément.
C'est de cette façon que tu pourras vérifier leur bon fonctionnement et isoler d'autant plus facilement les éventuels bug.

Donc dans l'ordre
- Faire un formulaire simple pour la partie html (on peut le compléter par la suite)
- Le code php minimum pour traiter ce formulaire, à savoir
1/ Récupérer et protéger les données provenant du formulaire pour la requête
2/ Se connecter à la bdd et faire la requête pour vérifier si le login est déjà enregistré

ça c'est le premier module à faire fonctionner correctement.

Ton pb c'est que tu as déjà mis quatre tonnes de code derrière, alors que cette première étape ne se fait déjà pas correctement (après test sur ton lien).

par zoussene » 17 août 2008, 16:56

je l'ai refait:

[register.php]:
<h1>Inscription 1/2</h1>

<form method="post" action="registerok.php" enctype="multipart/form-data">

<fieldset><legend>Identifiants</legend>
<label for="pseudo">* Pseudo :</label>  <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
<label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
<label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
</fieldset>
<fieldset><legend>Contacts</legend>
<label for="email">* Votre adresse Mail :</label><input type="text" name="email" id="email" /><br />
<label for="msn">Votre adresse MSN :</label><input type="text" name="msn" id="msn" /><br />
<label for="website">Votre site web :</label><input type="text" name="website" id="website" />
</fieldset>
<fieldset><legend>Informations supplémentaires</legend>
<label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
</fieldset>
<fieldset><legend>Profil sur le forum</legend>
<label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10 ko)<br />
<label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
</fieldset>
<p>Les champs précédés d un * sont obligatoires</p>
<p><input type="submit" value="S'inscrire" /></p></form>
</h2>
</div>
</body>
</html>
et [registerok.php]:
<?php
//Cette fonction doit être appelée avant tout code html
session_start();

//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre = "Index du forum";
include("includes/debut.php");
?>
<body>
<div id="banniere"></div>
<?php
//Maintenant, on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($localhost, $root, $);
mysql_select_db($zoussene?connexion);


$pseudo_erreur1 = "";
$pseudo_erreur2 = "";
$mdp_erreur = "";
$email_erreur1 = "";
$email_erreur2 = "";
$msn_erreur = "";
$signature_erreur = "";
$avatar_erreur = "";
$avatar_erreur1 = "";
$avatar_erreur2 = "";
$avatar_erreur3 = "";

// pseudo et mot de passe

<?php
$i = 0;

//Vérification du pseudo
$nombrepseudo = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_pseudo = "'.$_POST['pseudo'].'"'), 0);
if($nombrepseudo != 0)
{
        $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
        $i++;
}
if (strlen($_POST['pseudo']) < 3 || strlen($_POST['pseudo']) > 15)
{
        $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
        $i++;
}
//Vérification du mdp
if ($_POST['password'] != $_POST['confirm'] || empty($_POST['confirm']) || empty($_POST['password']))
{
        $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
        $i++;
}
?>

// e-mail, MSN et Signature

<?php
//Vérification de l'adresse email

//Il faut que l'adresse email n'ait jamais été utilisée

$nombremail = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_email = "'.$_POST['email'].'"'), 0);

if ($nombremail!= 0)
{
        $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
        $i++;
}
//On vérifie la forme maintenant
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']) || empty($_POST['email']))
{
        $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
        $i++;
}
//Vérification de l'adresse MSN
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['msn']) && !empty($_POST['msn']))
{
        $msn_erreur = "Votre adresse MSN n'a pas un format valide";
        $i++;
}
//Vérification de la signature
if (strlen($_POST['signature']) > 200)
{
        $signature_erreur = "Votre signature est trop longue";
        $i++;
}
?>

// l'avatar

<?php
//Vérification de l'avatar :
if (!empty($_FILES['avatar']['size']))
{
        //On définit les variables :
        $maxsize = 10024; //Poid de l'image
        $maxwidth = 100; //Largeur de l'image
        $maxheight = 100; //Longueur de l'image
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
        
        if ($_FILES['avatar']['error'] > 0)
        {
                $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
        }
        if ($_FILES['avatar']['size'] > $maxsize)
        {
                $i++;
                $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
        }

        $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
        {
                $i++;
                $avatar_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
        }
        
        $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
                $i++;
                $avatar_erreur3 = "Extension de l'avatar incorrecte";
        }
}
?>

//message

<div id="corps_forum">
<a href ="./index.php">Index du forum</a> / <a href="./register.php">Inscription</a>
<?php
if ($i == 0) // Si i est vide, il n'y a pas d'erreur
{

        echo'<h1>Inscription terminée</h1>';
        echo'<p>Bienvenue '.$_POST['pseudo'].' vous êtes maintenant inscrit sur le forum</p>';
        echo'<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';

        if (isset($_FILES['avatar']['size']))
        {
                //On déplace l'avatar
                $avatar = time();
                $nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
                $avatar = "./images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
                move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
        }
       
        //On vérifie que les champs ne continennent pas de html
        //Puis on crypte le mot de passe
        $temps = time(); 
        $signature = mysql_real_escape_string(htmlspecialchars($_POST['signature'], ENT_QUOTES));
        $signature = nl2br($signature);
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'], ENT_QUOTES));
        $email = mysql_real_escape_string(htmlspecialchars($_POST['email'], ENT_QUOTES));
        $msn = mysql_real_escape_string(htmlspecialchars($_POST['msn'], ENT_QUOTES));
        $website = mysql_real_escape_string(htmlspecialchars($_POST['website'], ENT_QUOTES));
        $localisation = mysql_real_escape_string(htmlspecialchars($_POST['localisation'], ENT_QUOTES));
        $pass = md5($_POST['password']);
       
        //On balance le tout dans notre table
        mysql_query('
        INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,             
        membre_msn, membre_siteweb, membre_avatar,
        membre_signature, membre_localisation, membre_inscrit,   
        membre_derniere_visite)
        VALUES ("'.$pseudo.'" , "'.$pass.'" , "'.$email.'" ,
        "'.$msn.'" , "'.$website.'" , "'.$nomavatar.'" ,
        "'.$signature.'" , "'.$localisation.'" ,  "'.$temps.'" ,
        "'.$temps.'" ) ') or die(mysql_error());
       
       
        //Et on définit les variables de sessions
        $_SESSION['pseudo'] = $pseudo;
        $_SESSION['id'] = mysql_insert_id();
        $_SESSION['level'] = 1;

}
else
{
        echo'<h1>Inscription interrompue</h1>';
        echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
        echo'<p>'.$i.' erreur(s)</p>';
        echo'<p>'.$pseudo_erreur1.'</p>';
        echo'<p>'.$pseudo_erreur2.'</p>';
        echo'<p>'.$mdp_erreur.'</p>';
        echo'<p>'.$email_erreur1.'</p>';
        echo'<p>'.$email_erreur2.'</p>';
        echo'<p>'.$msn_erreur.'</p>';
        echo'<p>'.$signature_erreur.'</p>';
        echo'<p>'.$avatar_erreur.'</p>';
        echo'<p>'.$avatar_erreur1.'</p>';
        echo'<p>'.$avatar_erreur2.'</p>';
        echo'<p>'.$avatar_erreur3.'</p>';
       
        echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
}
mysql_close();
?>
</div>
</body>
</html>
voici le resultat:http://zoussene.freeheberg.com/

par AB » 16 août 2008, 19:00

Toujours dans le module d'inscription tu hash le mot de passe en faisant
$passe = sha1($passe);

Mais tu n'utilises pas cette variable par la suite puisque tu rentre $pwd dans la base de données ...

Et
$pwd = mysql_real_escape_string(htmlspecialchars($_POST['pwd']));
n'existe pas puisque tu n'as pas de champ pwd dans ton formulaire.

Commence par faire fonctionner correctement le module d'inscription avant d'aller plus loin. D'ailleurs pour ne pas écraser un utilisateur déjà existant il est souvent utile de d'abord faire une requête pour voir si un autre utilisateur n'est pas déjà enregistré sous le même login.

Enfin le code PHP se met avant le code html, pas après.

par AB » 16 août 2008, 18:10

Ben doit y en avoir plusieurs.

Déjà pour préparer ses variables à l'insertion dans une base de donnée on ne fait pas
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
car le formatage de ces deux fonctions successives sera redondant pour certains caractères.

Une façon de préparer ses données pour l'insertion en bdd et qui passe quelque soit la configuration du serveur est par exemple
function PrepareSql ($chaine) {

$chaine = (get_magic_quotes_gpc())? mysql_real_escape_string(stripslashes($chaine)) : mysql_real_escape_string($chaine);

return $chaine;
} 

$pseudo = PrepareSql($_POST['pseudo']); 
$login = PrepareSql($_POST['login']);
A un moment tu utilises extract() , pourquoi faire ?

Commence par corriger le début et montre nous.
Heu, et puis quand tu testes dit nous ce qui ne marche pas et si php renvoi un message d'erreur, dis-nous lequel.

session

par zoussene » 16 août 2008, 17:23

Bonjour,

j'ai essaye de créer un système d'inscription et de connexion.

Pour l'inscription :
<html>
<body>
<form method="post">
<label>Pseudo: <input type="text" name="pseudo"/></label><br/>
<label>Mot de passe: <input type="password" name="passe"/></label><br/>
<label>Confirmation du mot de passe: <input type="password" name="passe2"/></label><br/>
<label>Adresse e-mail: <input type="text" name="email"/></label><br/>
<input type="submit" value="M'inscrire">
</form>
<?php
if(!empty($_POST['pseudo']))
{
//D'abord, je me connecte à la base de données
mysql_connect("localhost", "root", "");
mysql_select_db("zoussene_connexion");

//Je mets aussi certaines sécurités ici...
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
$passe2 = mysql_real_escape_string(htmlspecialchars($_POST['passe2']));
if($passe == $passe2)
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$pwd = mysql_real_escape_string(htmlspecialchars($_POST['pwd']));
//Je vais crypter le mot de passe
$passe = sha1($passe);

mysql_query("INSERT INTO validation VALUES('', '$id', '$pseudo', '$login', '$pwd')");
}
 
else
{
echo 'Les 2 mots de passe que vous avez rentrés ne correspondent pas...';
}
}
?>
</body>
</html>
et pour la connexion(login.php):
<html>
<body>
<?
mysql_connect("localhost", "root", "");
mysql_select_db("zoussene_connexion");
// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.

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 pwd from tbl_user where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['pwd'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('login.html'); // 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
<a href="page après connexion">page après connextion</a>
  }   
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('login.html'); // On inclut le formulaire d'identification
   exit;
}

?>
</body>
</html>
(login.html):
<html>
<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>
je ne trouve pas mes erreurs quelqu'un pourrai m'aide si vous plait. :oops:

merci[/code]