Garder session apres header()

Bonjour,

En ce moment je développe un site internet pour mon projet de fin d'année pour le passage du bac stg. Il me faut un script de connexion, j'en suis à cette étape la ( après des recherches sur internet) :

<?php
include("include_co.php");

$login=$_POST['login'];
$mdp=$_POST['mdp'];

$sql="SELECT * FROM Professeurs WHERE username=$login AND password=$mdp";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
session_register("login");
session_register("mdp");
header("location:login_success.php");
}
else {
echo "Movais nom ou mot de passe";
}
?>

Je voudrais savoir comment on fait pour garder la session après ce login =)

Est ce que ce code la est la réponse à ma question ? :

<?
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>

Et si oui , j'aimerais quelques explications si possible pour que je puisse comprendre son fonctionnement pour moi et pour pouvoir l'expliquer pendant l'examen.

Merci d'avance

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    la fonction
    session_register
    est obselète, il faudrait plutôt utiliser
    $_SESSION["login"] = $login;


    Mais dans ce cas un appel à
    session_start()
    sera nécessaire avant l'enregistrement de la variable de session.

    La documentation officielle http://ch.php.net/manual/fr/function.session-register.php
    1. Et après sur tes pages php tu peux faire ce test:

      if(empty($_SESSION['login'])) {
      	header('location: main_login.php');
      	exit;
      }
  2. Ces fonctions sont obsolètes !

    Contente toi simplement de :
    $_SESSION["login"] = $login ;
    ...
    


    Et pour les récupérer dans une autre page :

    $login = $_SESSION["login"] ;
    ...
    


    Pense aux session_start(); au début de chaque script

    Pour des explications plus détaillées, google donne ça : http://www.phpsources.org/tutoriel-SESSIONS.htm

    PS : attention aux fautes d'orthographes, je ne suis pas sûr que tes profs apprécient :-)

    "Mauvais mot de passe"'
    1. Copieur :)
    2. Ca m'apprendra à répondre à plusieurs messages en même temps ^^
  3. Merci à vous deux.

    Donc si j'ai bien compris, à la place de :

    if($count==1){
    session_register("login");
    session_register("mdp");
    header("location:login_success.php");
    }
    else {
    echo "Movais nom ou mot de passe";
    }

    c'est plutôt :

    if($count==1){
    $_SESSION["login"] = $login;
    header("location:login_success.php");
    }
    else {
    echo "Movais nom ou mot de passe";
    }

    et au début de chaque page à la quelle l'utilisateur accède grâce à l'identification je doit mettre :

    <?php session_start(); ?>

    et le bouton de déconnexion va vers une page avec seulement le code suivant :

    <?
    session_start();
    session_destroy();
    ?>

    c'est ca ou j'ai rien compris ? ^^

    Puis comment faire la redirection sur la page d'accueil apres la déconnexion? Enfin la page qui est avant l'identification.

    Et la même chose pour la redirection vers la première page après l'identification ( la page .html )
    1. Contributeur
      bonjour,

      et voici un exemple :

      http://www.jjsteing.com/Webmastering.html

      session.php
  4. le session_start(); tu le met une seule fois au tout début de chaque page PHP ou tu vas utiliser les variables de session.

    Et pour détruire les sessions tu fais juste session_destroy();
    1. Merci , ca marche niquel.

      Et donc le session_destroy(); se trouve dans une page .php à la quelle j'associe le bouton de déconnexion ?
      1. oui tu peux rediriger sur une page php qui contient le session_destroy(); lors du clique sur le bouton