payetonju
Messages postés436Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention 2 juillet 2014
-
20 nov. 2008 à 14:29
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
morpheus22170
Messages postés99Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention 8 septembre 2009 20 nov. 2008 à 16:31
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
payetonju
Messages postés436Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention 2 juillet 20144 20 nov. 2008 à 17:18
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 ?
morpheus22170
Messages postés99Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention 8 septembre 2009 22 nov. 2008 à 16:05
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
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)
payetonju
Messages postés436Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention 2 juillet 20144 24 nov. 2008 à 09:30
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'