[RESOLU] Afficher le nom de l'utilisateur quand celui ci est connecté

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 : [RESOLU] Afficher le nom de l'utilisateur quand celui ci est connecté

par dolf » 23 mai 2006, 10:58

Merci pour votre aide. Je tiens a signaler que je debute en php et je ne suis pas certain d'avoir compris vos messages a propos de la redirection sur la page precedente.

Pour l'instant quand l'utilisateur veut se logger il peut soit:
- cliquer sur ouvrir une sessions ce qui le redirige vers login.html (qui est un form (<form action="login.php" method='post'>). La page login.php verifie le username et password.
- cliquer sur mon_compte.php ou la j'ai le code suivant
<?
session_start();
if(!isset($_SESSION['username'])) {
  echo '<h5>Vous devez vous identifier pour accéder à Mon Equirodi</h5>';
  include('login.html');
  exit;
}
?> 
Et voici le code de ma page login.php
<? include("_connexion.php"); 
if(isset($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
  extract($_POST);
  $sql = "select password from members where username='".$username."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);
  if($data['password'] != $password) {
    echo '<h5>Mauvais pseudo ou mot de passe. Merci de recommencer</h5>';
    include('login.html');
    exit;
  }
  else {
    session_start();
    $_SESSION['username'] = $username;  
    header("Location: mon_equirodi.php");
}   
}
else {
  echo '<h5>Vous avez oublié de remplir un champ.</h5>';
   include('login.html');
   exit;
}
mysql_close(); ?>


Vous me conseiller de n'utiliser qu'une seule page de login: login.php ou j'aurais le form et le code de verification c'est bien ca?

Ensuite dans les pages qui necessitent d'etre logge je les renvoie sur login.php et j'enregistre la page d'ou ils viennent pour les rediriger dessus une fois la verification du login effectuee. Si c bien ca la theorie je ne suis pas sur de savoir le realiser en pratique sans plus d'explication.

Encore mille fois merci

dolf

par dolf » 22 mai 2006, 18:33

et login.php
<form action="?precedente="<?= $_GET['precedente'] ?>">
...
</form>
<?php
  //... code de vérification

  if (estConnecté) {
    header('Location: '.$_GET['precedente'].'');
  }
?>[/quote]

Merci... est ce que la meme chose est possible avec la fonction POST car c ce que j'utilise dans le form. Merci pour votre patience

par zeus » 22 mai 2006, 15:34

non, non, c'est plutôt dolf qui a fait une erreur de méthodologie en faisant un include plutôt qu'un header ;)

par jojolapine » 22 mai 2006, 15:06

Cette solution ne va que te rediriger vers la page courante ...

$_SERVER['PHP_SELF'] indique l'url du script courant, pas du précédent.
je ne pense pas, puisqu'il fait un include....
si je vais sur page3.php, je ne suis pas identifié, à ce moment là, le fichier login.php est inclu... dans le champs cacher, il y aura donc page3.php, à l'envoi du formulaire, dans la page de vérification, la partie
header("Location: ".$_POST['page']."");
devrait bien te renvoyer sur page3.php mais cette fois, vu que tu es identifié...
hop ça marche :D
j'ai fait une erreur de raisonnement :?:

par zeus » 22 mai 2006, 14:05

tu peux faire qqch comme ça:
dans ton fichier login.html, que tu renommes en login.php) tu ajoute un champs caché dans ton formulaire...
<input type="hidden" name="page" value="<?php echo $_SERVER['PHP_SELF']; ?>" />
et dans ta page de vérification, tu renvoi l'utilisateur de cette manière:
header("Location: ".$_POST['page']."");
Cette solution ne va que te rediriger vers la page courante ...

$_SERVER['PHP_SELF'] indique l'url du script courant, pas du précédent.

Ce que tu peut faire, sur la page qui teste si le user est connecté, tu donnes un argument dans l'url et après la validation, tu rediriges vers cette adresse
<?
session_start();
if(!isset($_SESSION['login'])) {
  echo 'Vous devez vous identifier';
  header('Location: login.php&precedente=cettepage.php');
}
?>
et login.php
<form action="?precedente="<?= $_GET['precedente'] ?>">
...
</form>
<?php
  //... code de vérification

  if (estConnecté) {
    header('Location: '.$_GET['precedente'].'');
  }
?>

par béka » 22 mai 2006, 13:32

ok cool alors, je ne suis pas si mauvais que ca lol 8)

par jojolapine » 22 mai 2006, 13:31

oui oui elle fonctionne...
elle n'est pas du tout mise forme, et on sait pas où tu mets le echo $_SESSION['user'] dans le header.php mais ça marche

par béka » 22 mai 2006, 13:28

une question, la solution que j'ai proposée est-elle bonne? carje ne suis pas sur de moi et j'aimerais savoir.
Merci

par jojolapine » 22 mai 2006, 13:20

tu peux faire qqch comme ça:
dans ton fichier login.html, que tu renommes en login.php) tu ajoute un champs caché dans ton formulaire...
<input type="hidden" name="page" value="<?php echo $_SERVER['PHP_SELF']; ?>" />
et dans ta page de vérification, tu renvoi l'utilisateur de cette manière:
header("Location: ".$_POST['page']."");

par dolf » 22 mai 2006, 13:03

Merci beaucoup Zeus j'ai reussi. J'ai une autre question toujours en rapport avec les sessions.
Quand un utilisateur arrive sur une page protégée je lui demande d'ouvrir une session avec ce code:
<?
session_start();
if(!isset($_SESSION['login'])) {
  echo 'Vous devez vous identifier';
  include('login.html');
  exit;
}
?> 
Par contre je ne sais pas comment les rediriger vers la page d'ou ils viennent une fois la session ouverte. Par exemple quand l'utilisateur arrive sur la page pour poster une annonce je lui demande de s'identifier. Apres identification j'aimerais le rediriger directement sur la page poster une annonce. Pouvez vous m'aider pour ca aussi.
Merci d'avance

Si tu as réussi à comprendre les sessions, tu doit avoir enregistré en session le visiteur connecté ?

Si c'est le cas, dans ton fichier header, il te suffit de regarder si un membre est connecté (si sa variable de session existe) et si c'est le cas, d'afficher son nom
//Si le visiteur est connecté
if (isset($_SESSION['visiteur'])) {
  echo "Bonjour ".$_SESSION['visiteur']['nom']." (deconnexion)";
}

par béka » 22 mai 2006, 11:43

bonjour, alors lorsque ton utilisateur se connecte, tu dois récupérer son nom avec la méthode POST par exemple?

Si c'est le cas, alors tu peux écrire
$_SESSION['nom']=$_POST['nom']
et ensuite, ds ton fichier header tu peux mettre
echo $_SESSION['nom']
Je ne suis pas sur de moi à 100% mais je pense que cela peut marcher.

par zeus » 22 mai 2006, 11:42

Si tu as réussi à comprendre les sessions, tu doit avoir enregistré en session le visiteur connecté ?

Si c'est le cas, dans ton fichier header, il te suffit de regarder si un membre est connecté (si sa variable de session existe) et si c'est le cas, d'afficher son nom
//Si le visiteur est connecté
if (isset($_SESSION['visiteur'])) {
  echo "Bonjour ".$_SESSION['visiteur']['nom']." (deconnexion)";
}

Afficher le nom de l'utilisateur quand celui ci est connecté

par dolf » 22 mai 2006, 11:36

Bonjour,
J'ai reussi a gérer les sessions mais je bloque sur un truc.

J'aimerais une fois que l'utilisateur a ouvert une session afficher "Bonjour XXXXXX (Se déconnecter)" sur toutes les pages (dans le header) et rien si l'utilisateur n'est pas connecté. J'ai deja un fichier header que j'appelle pour toutes les pages. Pouvez vous m'aider?
Merci