$_SESSION[' '], $_POST[' ']

Résolu/Fermé
salut790 Messages postés 7 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 20 septembre 2017 - 13 juin 2017 à 20:48
salut790 Messages postés 7 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 20 septembre 2017 - 13 juin 2017 à 23:01
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

1 réponse

Utilisateur anonyme
13 juin 2017 à 20:59
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.
0
salut790 Messages postés 7 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 20 septembre 2017
Modifié le 13 juin 2017 à 23:03
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 :)
0