Connexion/deconnexion site web - variable SESSION

payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 20 nov. 2008 à 14:29 - Dernière réponse :  Pseudo...
- 9 août 2018 à 19:16
Bonjour !

J'ai fait un site en PHP (je debute), base de données établie, et j'aimerais que l'utilisateur puisse se logguer quand il veut.

SI la session existe, alors il va sur la page d'accueil et un message en haut apparait du style "Merci Mr XXX de vous être enregistré" ou "bonjour Mr XXXX" (sur toutes les pages du site) avec à côté un onglet déconnexion pour se deconnecter (comme la plupart des sites où on peut se logguer)


SINON on affiche "connexion" qui pointe vers login_connexion.php, donc apers il se log, et une fois logué ça le renvoi sur la page d'accueil dans le cas du dessus où la session existe.


Je pensequ'il faut passer par un if(isset($_session)) mais je ne sais pas comment tourner le session, ça n'a pa l'air d'être simple à utiliser. Je n'ai jamais utilisé la variable session vraiment, et donc là je bloque.

Quelqu'un peut-il me donner un coup de main svp ?
Merci
Afficher la suite 

Votre réponse

8 réponses

morpheus22170 99 Messages postés vendredi 20 janvier 2006Date d'inscription 8 septembre 2009 Dernière intervention - 20 nov. 2008 à 16:31
0
Merci
oui tu as raison c'est ca -> il faut utiliser isset

voilà ton problème en version corriger

session_start();
// Connexion au serveur
    $conn= mysql_connect("LocalHost","root","");
    //Connexion à la base de données
    $db= mysql_select_db("tabasededonnées");
//Requête à exécuter
    if(isset($_SESSION['login']))
    {
       
        $req ="SELECT * FROM agent WHERE code= '" . $_SESSION['login'] . "'"; 
        //Exécution de la requête d'identifiaction
        $res= mysql_query($req,$conn);
        $lign= mysql_fetch_row($res);
        echo "Bonjour " . $lign[2] . " " . $lign[3] . " " . $lign[4] ;
        echo "
Afficher ses formations";
        echo "
Se déconnecter";

[ Tu mets la suite de ton code]

}
    else
        {
            echo "VOUS NE POUVEZ PAS ACCEDER A CETTE PAGE. VEUILLEZ VOUS CONNECTER.

";
        }

la table agent correspond a tes clients !!!!
$lign[2],3,4 correspond aux colonnes de la table agent sachant que 0 est la première colonne. Dans mon cas j'affichais son identifiant, nom et prénom
Commenter la réponse de morpheus22170
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 20 nov. 2008 à 17:18
0
Merci
Ok je vois merci pour ton post, je suis en cours de test, mais maintenant pour terminer mon test j'aurais besoin de savoir comment tu fais pour la deconnexion ?

J'ai fais ça
echo "déconnexion" ;

Mais comme je m'y attendais ça ne marche pas, et d'apères ce que j'ai compris il faut utiliser "session_destroy();" mais ça ne marche pas sur un lien, comment est-ce que je peux m'y prendre ?

Merci
Commenter la réponse de payetonju
morpheus22170 99 Messages postés vendredi 20 janvier 2006Date d'inscription 8 septembre 2009 Dernière intervention - 20 nov. 2008 à 17:22
0
Merci
pour la déconnexion, qui correspond à deconnecter.php, tu mets le code ci-dessous:

<?
session_start();
session_destroy(); //On détruit le cookie de l'identifiant.
include("Accueil.php"); //On revient au départ.
?>

Voilà, ça sera tout, tu peux clore le sujet si tu veux.
Commenter la réponse de morpheus22170
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 20 nov. 2008 à 17:47
0
Merci
bon, je ne sais pas ce qu'il se passe, ça ne marche pas, j'ai ceci :

session_start();

<?php
    if(isset($_SESSION['login']))
    {



$connect=ODBC_connect("TESTPHP5","sa","sasa");
$mysql = "SELECT TOP 1 LOGIN FROM utilisateur WHERE login LIKE '".$_POST['login']."'  ";
$res=odbc_exec($connect, $mysql) or die($sql."
".odbc_error());
$login= odbc_result($res,"LOGIN");
echo 'Bonjour M.'.$_SESSION['login'].' !';
echo "déconnexion" ;
}
    else
        {
            echo "connexion" ;
        }
?>

ça c'est dans ma page index3.php
Et dans deconnexion.php j'ai ceci :

<?
session_start();
session_destroy();
header("location: index3.php");
?>

Qu'est-ce qui ne va pas ?
Commenter la réponse de payetonju
morpheus22170 99 Messages postés vendredi 20 janvier 2006Date d'inscription 8 septembre 2009 Dernière intervention - 22 nov. 2008 à 16:05
0
Merci
Excuse moi pour le retard.




Chouette du ODBC, ca faisait longtemps...
...AIe aIE! (lol)


SELECT TOP 1 LOGIN FROM utilisateur WHERE login LIKE '".$_POST['login']."'


TOP 1 LOGIN-> pas d'entité (propriété) d'une table séparé car il en comprend plusieurs, préféré à TOP1LOG1 (meilleur exemple plus en bas)


-> tu recherches un utilisateur (TOP 1 LOGIN) dans la table utilisateur où le login ressemble au cookie enregistré lors de l'identification


ah donc il peut avoir plusieurs utilisateurs qui se ressemble et se connecte tous au même moment (y a de la confusion et risque de bagarre dans le site, désolé!!!)
exemple: LIKE A donc Aurélien Aurélie Adrien.... ou adrienne, adrienne1, adrienne2)


il faut que l'identifiant correspond à une personne précise et non une ressemblance, tu vois ce que je veux dire.


$_POST  contient des éléments pour tous les champs d'un formulaire si celui-ci utilise methode="POST" (page formulaire, puis une page avec insert ou update ou delete...)
Mais dans le cas là on se sert d'un cookie pour enregistré la variable, ce que tu fais en sort avant avec isset


proposition personnelle:


  $req ="SELECT * FROM utilisateur WHERE login= '" . $_SESSION['login'] . "'"; 
  //Exécution de la requête d'identifiaction
  $res= mysql_query($req,$conn); //$conn correspond pour toi à ODBC_connect
  $lign= mysql_fetch_row($res);
  echo "Bonjour " . $lign[3] . " " . $lign[4] ; //attention aux points et aux guillemets
  
si ta table utilisateur correspond a ceci


*************
utilisateur *
*************
Num   * ex:1
User(login) * ex:dupont
Password * ex:motdepasse
Nom   * ex:Dupont
Prenom  * ex:Henri
*************


Résultat: Bonjour Dupont Henri


sinon, les autres erreurs:


echo 'Bonjour M.'.$_SESSION['login'].' !';
->echo "Bonjour " . $_SESSION['login'] . "!"  ; //quand on fait echo dans une balise php il faut mettre des guillemets et non des quotes.


echo "connexion" ;
-> echo "connexion" // par contre, il faut mettre des quotes pour les précisions.
Notamment pour login.php et font color


echo "déconnexion" ;
-> echo "déconnexion" ; // erreur idem


header("location: index3.php");
-> header("Location: index3.php"); //L majuscule mais je pense pas que c'est le L qui pose problème


deconnecter.php
<?
session_start();
session_destroy();
header("Location: login.php"); //page avec formulaire de connexion
?>


Dans ton càs, la personne qui se déconnecte est obligé de passer par une feuille
(ici index3.php) pour se connecter à nouveau (login.php), il vaut mieux le rediriger vers la page
de connexion directement (login.php) où bien à l'accueil de ton site.


Résumons:


index3.php
<?php
include("menu.php"); //fichier avec un tableau et les choix possible du site
session_start();
$_SESSION['login'] = $_POST['login'];//tu dois mettre sur la page menu de l'utilisateur (exemple menu administrateur), ensuite sur les autres pages tu peux enlever cette ligne.
if(isset($_SESSION['login']))
 {
  
  $req ="SELECT * FROM admin WHERE code= '" . $_SESSION['login'] . "'"; 
  //Exécution de la requête d'identifiaction
  $res= mysql_query($req,$conn);
  $lign= mysql_fetch_row($res);
  echo "Bonjour " . $lign[2] . " " . $lign[3] ;
  echo "
Menu Administrateurs";
  echo "
Se déconnecter";
  echo "[Reste de ta page]";
 }
else
 {
  echo "Vous devez vous connecter pour pouvoir accéder à cette page.";
 }
?>


deconnecter.php
<?
session_start();
session_destroy();
header("Location: login.php"); //page avec formulaire de connexion
?>

Voilà et puis dernier truc que je viens de voir pour index3.php.
session_start(); doit etre dans une balise php
après <?php


Voilà, c'est tout. bon courage !
Commenter la réponse de morpheus22170
morpheus22170 99 Messages postés vendredi 20 janvier 2006Date d'inscription 8 septembre 2009 Dernière intervention - 22 nov. 2008 à 19:15
0
Merci
Je reviens pour une plus belle. plus de probleme avec l'identifiant. regarde ce que j'ai fait et fais tes propres modif après.

admin.php (page avec formulaire de connexion)
---------------------------------------------

<?php

?>
<html>
<head>
<title>accès administrateur</title>
</head>

<?php
include("menu.php");
?>
<form action= "login.php" method="post">
Nom du login,
,
----
Mot de passe,
,
----

</html>

---------------------------------------------
login.php (page avec l'identifiant et infos réservés)
---------------------------------------------
<?php
session_start();
?>
<html>
<head>
<title>Administration</title>
</head>

<?php
include("menu.php");
include("connexion.inc.php");
extract ($_POST);
session_register('nomUtilisateur');
$_SESSION['nomUtilisateur'] = $_POST['nomUtilisateur'];
session_register('motdepasse');
$_SESSION['motdepasse']= $_POST['motdepasse'];

// extract ($HTTP_SESSION_VARS);

if(isset($_SESSION['nomUtilisateur'])&&(!empty($_POST['nomUtilisateur'])))
    {
        include("connexion.inc.php");
        $req =("SELECT * FROM admin WHERE User='" . $_SESSION['nomUtilisateur'] . "'  and Password='" . $_SESSION['motdepasse'] . "'") or die ("Erreur d'identification"); 
        $res= mysql_query($req,$conn);
        $lign= mysql_fetch_row($res);
        echo "Bonjour " . $lign[2] . " " . $lign[3] ;
        echo "        ----
        <form name='Menu' method='POST' action='login.php'>
       
       
       
        </form>
       ,         <form name='Déconnecter' method='POST' action='deconnecter.php'>
       
       
        </form>
       
";

echo "[Reste de ta page]";
}
    else
        {
            echo "l'identifiant et le mot de passe sont peut-être incorrect";
            echo "
Veuillez saisir à nouveau correctement";
            echo "
En cas de problème, veuillez prévenir l'administrateur";
        }

?>

</html>

Et voilà, à chaque fois que tu cliqueras sur le bouton Menu, l'identifiant avec son nom et prénom sera affiché (environ 9h de galère pour mon projet mais j'ai réussi)
Commenter la réponse de morpheus22170
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 24 nov. 2008 à 09:30
0
Merci
Bonjour morpheus !

Tu n'as pas a t'excuser alros que tu m'aides lol...
Même avec ton code cela ne marchais pas, mais j'ai trouvé la solution, j'ai fait betement un copié/collé de ton code plus haut
<?
session_start();
session_destroy(); //On détruit le cookie de l'identifiant.
include("Accueil.php"); //On revient au départ.
?>

Je suis donc parti de là et l'erreur se situe au début, j'ai donc modifié ceci :
<?php
session_start();
session_destroy(); //On détruit le cookie de l'identifiant.
include("Accueil.php"); //On revient au départ.
?>

Voilà tout simplement, mais en tout cas merci pour le reste car ça me fait presque un cours :) lol
Bonne journée
Ju'
Commenter la réponse de payetonju

Vous n'êtes pas encore membre ?

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

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 et codes sources.

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