Page 1 sur 1

récupérer une variable apres le Login

Posté : 10 août 2011, 10:24
par Tegilock
Bonjours ! Comment allez vous ?

Donc voila j'ai un tout petit soucis qui me fait vraiment.... Bref, comme le sujet l'indique, je voudrais savoir comment récupérer la variable $username une fois la personne s'être connecté sur mon site.

Le code qui doit (normalement je pense) récupérer la variable :
if (check_login_status() == true) {
echo "Salut ".$username.", ça va?";
}
donc sa me dit : Notice: Undefined variable: username on line 85

Alors, je n'ai pas trop envis de surcharger mon message et comme j'ai de nombreux fichier, mais pour m'aider vous en aurez besoins donc je vais essayer de ranger sa clean au maximum.


Page : Index.php
<?php 
// Start session 
session_start(); 
  
// Include required functions file 
require_once('includes/functions.inc.php'); 

?>

<?php
if (check_login_status() == true) {
}
else{
echo '
<form method="post" action="includes/login.inc.php">
<div class="login">

<div class="textfield" style="position: relative; left: 10; top: 60;"><input name="username" type="text" maxlength="25"></div>
<div class="textfield" style="position: relative; left: 10; top: 79;"><input name="password" type="password" maxlength="25"></div>
<img src="images/space.png" border="0" style="position: relative; left: 10; top: 84;">
<input type="image" src="images/button_login.png" alt="Sign In" style="position: relative; left: 10; top: 84;">

</div>
</form>
';
}
?>


<?php
if (check_login_status() == true) {
echo "Salut ".$username.", ça va?";//LIGNE 85
}
?> 

Page: includes/functions.inc.php
<?php 
/** 
* 
* @file    /includes/functions.inc.php 
*/ 
  
/** 
* Redirects to specified page 
* 
* @param string $page Page to redirect user to 
* @return void 
*/ 
function redirect($page) { 
              header('Location: ' . $page); 
} 
  
/** 
* Check login status 
* 
* @return boolean Login status 
*/ 
function check_login_status() { 
              // If $_SESSION['logged_in'] is set, return the status 
              if (isset($_SESSION['logged_in'])) { 
                            return $_SESSION['logged_in']; 
              } 
              return false; 
}
?>

Page: includes/login.inc.php
<?php 
// Include required MySQL configuration file and functions 
require_once('config.inc.php'); 
require_once('functions.inc.php'); 
  
// Start session 
session_start(); 
  
// Check if user is already logged in 
if ($_SESSION['logged_in'] == true) { 
              // If user is already logged in, redirect to main page 
              redirect('../index.php'); 
} else { 
              // Make sure that user submitted a username/password and username only consists of alphanumeric chars 
              if ( (!isset($_POST['username'])) || (!isset($_POST['password'])) OR 
                   (!ctype_alnum($_POST['username'])) ) { 
                            redirect('../index.php'); 
              } 
  
              // Connect to database 
              $mysqli = @new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
  
              // Check connection 
              if (mysqli_connect_errno()) { 
                            printf("Unable to connect to database: %s", mysqli_connect_error()); 
                            exit(); 
              } 
  
              // Escape any unsafe characters before querying database 
              $username = $mysqli->real_escape_string($_POST['username']); 
              $password = $mysqli->real_escape_string($_POST['password']); 
  
              // Construct SQL statement for query & execute 
              $sql              = "SELECT * FROM users WHERE username = '" . $username . "' AND password = '" . md5($password) . "'"; 
              $result = $mysqli->query($sql); 
  
              // If one row is returned, username and password are valid 
              if (is_object($result) && $result->num_rows == 1) { 
                            // Set session variable for login status to true 
                            $_SESSION['logged_in'] = true; 
                            redirect('../index.php');
              } else { 
                            // If number of rows returned is not one, redirect back to login screen 
                            redirect('../index.php'); 
              } 
} 
?>
Voila les 3 scripts (je met pas le script qui permet la connection au SQL car pas besoin pour se post)
Et aussi, j'ai retiré les script HTML pour laisser plus visible pour vous.

Merci beaucoup d'avance pour votre aide !

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 11:12
par xTG
Pour avoir accès à l'username après la connexion il faudrait le stocker dans le tableau des variables de session.
Dans ton dernier fichier il stocke déjà une information : $_SESSION['logged_in'] = true;

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 17:05
par Blowingfish
Moi je fais comme ça :
if(!empty($_SESSION))

{

	echo '<p>Bienvenue, '.$_SESSION['login'].'</p>';

}

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 20:48
par Tegilock
Pour avoir accès à l'username après la connexion il faudrait le stocker dans le tableau des variables de session.
Dans ton dernier fichier il stocke déjà une information : $_SESSION['logged_in'] = true;

J'ai pas très bien compris comment stocker l'username. :cry:
Mais tu dis que les variables sont stocker dans mon fichier includes/login.inc.php ?

Je fais des tests en attendant vos réponses ! Merci !

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 20:55
par moogli
$_SESSION['logged_in'] = true;
ajoute $_SESSION['username'] = $username; dans le fichier de login ^^

dans l'autre echo $_SESSION['username'];

vu le code je suppose qu'il n'est pas de toi ? fait a l'aide d'un soft quelconque ? si oui je pense qu'il devrait pouvoir te le faire :)


@+

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 21:26
par tegilock
Merci beaucoup pour ta réponse rapide, mais j'ai toujours un problème.

mon code sur l'index:
if (check_login_status() == true) {
echo "Salut ". $_SESSION['username']; .", ça va?";
}
J'ai l'erreur : Parse error: syntax error, unexpected '.' in C:\wamp\www\index.php on line 85

J'ai essayé en retirant les '.' en mettant juste celui en avant. Je ne comprend pas.
donc j'ai pensé que c'était que c'est l'endroit où je met le code : $_SESSION['username'] = $username;

l'emplacement de en se moment :
Dans login.inc.php
// If one row is returned, username and password are valid 
              if (is_object($result) && $result->num_rows == 1) { 
                            // Set session variable for login status to true 
                            $_SESSION['logged_in'] = true;
							$_SESSION['username'] = $username;
                            redirect('../index.php');
              } else { 
                            // If number of rows returned is not one, redirect back to login screen 
                            redirect('../index.php'); 
              }

Je continu a faire des tests à plusieurs endroits

PS. J'ai pris ce script sure un tutoriel que j'ai modifier légèrement pour le faire fonctionner.

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 21:30
par Tegilock
Oh ! Je suis bête, j'ai pas retiré le ';'

dans :
IF (check_login_status() == true) {
echo "Salut ". $_SESSION['username']; .", ça va?";
}

Mais même en le retirant, j'ai toujours l'erreur de la variable non définie.

Re: récupérer une variable apres le Login

Posté : 10 août 2011, 22:51
par Tegilock
D'accords, mon problème s'est réglé !
J'ai juste eu a fermé la page et a la réouvrire pour que les modifications se sauvegarde je pense merci !