Signaler

$_SESSION[' '], $_POST[' '] [Résolu]

Posez votre question salut790 7Messages postés mardi 13 juin 2017Date d'inscription 20 septembre 2017 Dernière intervention - Dernière réponse le 13 juin 2017 à 23:01 par salut790
Salut à tous,
j'ai un problème avec ce code qui devrait créer un espace membre et permettre l'authentification, l'inscription fonctionne et on peut s'authentifier mais quand j'essaie de faire passer le nom, prénom, age ...etc ils ne s'affichent pas pourtant le login s'affiche lui.
Voici ma page d'authentification :
    <?php
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

		$base = mysql_connect("localhost", "root", "");
    	mysql_select_db ('bddimp', $base);

    	// on teste si une entrée de la base contient ce couple login / pass
    	$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'" AND pass_md5="'.mysql_real_escape_string(md5($_POST['pass'])).'"';
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    	$data = mysql_fetch_array($req);

    	//mysql_free_result($req);
    	//mysql_close();

    	// si on obtient une réponse, alors l'utilisateur est un membre
    	if ($data[0] == 1) {
    		session_start();
    		$_SESSION['login'] = $_POST['login'];
			$_SESSION['nom'] = $_POST['nom'];
			$_SESSION['prenom'] = $_POST['prenom'];
			$_SESSION['age'] = $_POST['age'];
			$_SESSION['bio'] = $_POST['bio'];
    		header('Location: membre.php');
    		exit();
    	}
    	// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    	elseif ($data[0] == 0) {
    		$erreur = 'Compte non reconnu.';
    	}
    	// sinon, alors la, il y a un gros problème :)
    	else {
    		$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
    	}
    	}
    	else {
    	$erreur = 'Au moins un des champs est vide.';
    	}
    }
    ?>
    <html>
    <head>
    <title>Accueil</title>
    </head>

    <body>
    Connexion à l'espace membre :<br />
    <form action="index.php" method="post">
    Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    <input type="submit" name="connexion" value="Connexion">
    </form>
    <a href="inscription.php" rel="nofollow noopener noreferrer" target="_blank">Vous inscrire</a>
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>
    </body>
    </html>

Et celle qui s'affiche après avoir cliqué sur "connexion" :
    <?php
    session_start();
    if (!isset($_SESSION['login'])) {
    	header ('Location: index.php');
    	exit();
    }
    ?>

    <html>
    <head>
    <title>Espace membre</title>
    </head>

    <body>
    Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br />
	Nom : <?php echo htmlentities(trim($_SESSION['nom'])); ?> <br />
    <a href="deconnexion.php" rel="nofollow noopener noreferrer" target="_blank">Déconnexion</a>
    </body>
    </html>

Je débute en php alors soyez indulgent :p
Utile
+0
plus moins
Bonjour

    		$_SESSION['login'] = $_POST['login'];
		$_SESSION['nom'] = $_POST['nom'];
		$_SESSION['prenom'] = $_POST['prenom'];
		$_SESSION['age'] = $_POST['age'];
		$_SESSION['bio'] = $_POST['bio'];

Le login vient du formulaire, normal que tu le récupères dans $_POST['login']. Mais les nom, prénom, etc... ne sont pas dans le formulaire de login. Il faut que tu les récupères dans ta base de données.
Au passage, si tu débutes, tu n'as aucune excuse d'utiliser l'interface mysql_ qui est dépréciée et même obsolète sur les versions récentes de PHP. Utilise mysqli_ ou PDO.
Il y aurait d'autre remarques, mais moins graves, on verra plus tard.
salut790 7Messages postés mardi 13 juin 2017Date d'inscription 20 septembre 2017 Dernière intervention - 13 juin 2017 à 23:01
J'y est pensé après avoir publié mon code.
<?php 
   $base = mysql_connect("localhost", "root", "");
   mysql_select_db ('bddimp', $base);
$sql = 'SELECT * FROM membre WHERE login="'.mysql_real_escape_string($_SESSION['login']).'"';
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $data = mysql_fetch_array($req);
   print_r($data);
   
 ?> 
  Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br />
  Bienvenue <?php echo htmlentities(trim($data['nom'])); ?> !<br />

J'ai récupéré l'info de la bdd et ça marche !
Merci de m'avoir répondu :)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !