[RESOLU]probleme avec ma session

probleme avec ma session [RESOLU] - PHP - Programmation

Marsh Posté le 30-09-2004 à 01:55:54    

C'est grave aujourd'hui les casses têtes s'enchainent !
Voila mon system de session marcherai très bien si et seulement si il n'affichait pas quand même la page après le session_start(); je m'explqie si il n'y a pas de session le formulaire d'identification s'affiche alors mais avec le reste de la page en + qui devrait être cachée...
exemple :

Code :
  1. <?php
  2. session_start ();
  3. require_once ("util.php" );
  4. $session = ControleAcces ("essai.php",$_POST, session_id());
  5. echo "il m'affiche le text";
  6. ?>


il affiche le text alors qu'il ne devrait pas !!!


Message édité par Scarf3ss3 le 30-09-2004 à 03:52:33
Reply

Marsh Posté le 30-09-2004 à 01:55:54   

Reply

Marsh Posté le 30-09-2004 à 02:48:13    

Il te manque une condition là. :heink:  
Comment veux-tu afficher, ou ne pas afficher, un texte, sans faire de test pour vérifier que l'utilisateur est bien connecté ?

Reply

Marsh Posté le 30-09-2004 à 03:10:16    

kalex a écrit :

Il te manque une condition là. :heink:  
Comment veux-tu afficher, ou ne pas afficher, un texte, sans faire de test pour vérifier que l'utilisateur est bien connecté ?


je sais tu peux pas savoir ce qu'il se cache derriere ma fonction ControleAccess alors tant pis pour toi je balance tout :)

Code :
  1. <?php
  2.   require_once ("util/classFormulaire.php" );
  3.   // Recherche d'une session
  4.   function ChercheSession ($idSession, $bd)
  5.   {
  6.     $requete =  "SELECT * FROM session WHERE idSession = '$idSession' " ;
  7.     $resultat = $bd->execRequete ($requete);
  8.     return $bd->objetSuivant ($resultat);
  9.   }
  10.   // Vérification qu'une session est valide
  11.   function SessionValide ($session, $bd)
  12.   {
  13.     // Vérifions que le temps limite n'est pas dépassé
  14.     $maintenant = date ("U" );
  15.     if ($session->tempsLimite < $maintenant)
  16.     {
  17.       // Destruction de la session
  18.       session_destroy();
  19.       $requete  = "DELETE FROM session "
  20.                 . "WHERE idSession='$session->idSession'";
  21.       $resultat = $bd->execRequete ($requete);
  22.       return FALSE;
  23.     }
  24.     else // C'est bon !
  25.        return TRUE;
  26.   }
  27.   // Tentative de création d'une session
  28.   function CreerSession ($bd, $email, $mdp, $idSession)
  29.   {
  30.     $contact = ChercheInternaute ($email, $bd);
  31.     // L'internaute existe-t-il ?
  32.     if (is_object($contact))
  33.     {
  34.       // Vérification du mot de passe
  35.        if ($contact->mdp == md5($mdp))
  36.       {
  37.         // On insère dans la table Session, pour 1 heure  
  38.         $maintenant = date ("U" );
  39.         $tempsLimite = $maintenant + 3600;
  40.         $insSession = "INSERT INTO session (idSession, email, pseudo, "
  41.                      . "tempsLimite) VALUES ('$idSession', "
  42.                      . "'$email','$contact->pseudo',"
  43.                      . "'$tempsLimite')";     
  44.         $resultat = $bd->execRequete ($insSession);
  45.         return TRUE;
  46.       }       
  47.       echo "<B>Mot de passe incorrect ! <P></B>\n";
  48.       return FALSE;
  49.     }     
  50.     else
  51.    {
  52.      echo "<B>L'utilisateur $email est inconnu !</B><P>\n";
  53.      return FALSE;
  54.    }
  55.   }
  56.   function FormIdentification($nomScript, $emailDefaut="" )
  57.   {
  58.     // Demande d'identification
  59.     $form = new Formulaire ("POST", "$nomScript" );
  60.     $form->debutTable();
  61.     $form->champTexte("Votre email", "email", "$emailDefaut", 30);
  62.     $form->champMotDePasse ("Mot de passe", "mdp", "", 30);
  63.     $form->champValider ("Identification", "ident" );
  64.     $form->fin(TRUE);
  65.   }
  66.   // Fonction de contrôle d'accès
  67. function ControleAcces ($nomScript, $infoLogin, $idSession)
  68. {
  69.     $bd = new BD  (NOM, PASSE, BASE, SERVEUR);
  70.     $sessionCourante = ChercheSession ($idSession, $bd);
  71.     // Cas 1: Vérification de la session courante
  72.     if (is_object($sessionCourante))
  73.     {
  74.       // La session existe. Est-elle valide ?
  75.       if (SessionValide ($sessionCourante, $bd))
  76.       {
  77.          // On renvoie l'objet session
  78.          return $sessionCourante;
  79.       }
  80.       else
  81.         echo "<B>Votre session n'est pas (ou plus) valide.<P></B>\n";
  82.     }
  83.     // Cas 2.a: pas de session mais email et mot de passe
  84.     if (isSet($infoLogin['email']))
  85.     {
  86.       // Une paire email/mot de passe existe. Est-elle correcte ?
  87.       if (CreerSession ($bd, $infoLogin['email'],
  88.                          $infoLogin['mdp'], $idSession))
  89.       {
  90.         echo "Identification correcte<p>\n";
  91.  
  92.         // On renvoie l'objet session  
  93.         return ChercheSession ($idSession, $bd);
  94.       }
  95.       else
  96.         echo "<CENTER><B>Votre identification a échoué.</B></CENTER>\n";
  97.     }
  98.     // Cas 2.b : il faut afficher le formulaire, en proposant
  99.     // l'email comme valeur par défaut.   
  100.     if (isSet($infoLogin['email']))
  101.       $email = $infoLogin['email'];
  102.     else
  103.       $email = "";
  104.     FormIdentification($nomScript, $email);
  105.   }
  106. ?>


 
edit: ne chercher pas à comprendre la fonction FormIdentification je fais appel à une class formulaire pour de la mise en forme html automatique.
Le premier qui trouve mon probleme je l'épouseeee.........
Sinon je pensais ça ne peut pas venir de mon php.ini ?


Message édité par Scarf3ss3 le 30-09-2004 à 03:13:13
Reply

Marsh Posté le 30-09-2004 à 03:26:50    

A la ligne 125 tu rajoutes :

Code :
  1. retrun FALSE;


 
Et tu inclus un test dans ton code de départ :

Code :
  1. <?php
  2. session_start ();
  3. require_once ("util.php" );
  4. if($session = ControleAcces ("essai.php",$_POST, session_id())){
  5. echo "il m'affiche *plus* le text";
  6. }
  7. ?>

Reply

Marsh Posté le 30-09-2004 à 03:41:42    

kalex a écrit :

A la ligne 125 tu rajoutes :

Code :
  1. retrun FALSE;


 
Et tu inclus un test dans ton code de départ :

Code :
  1. <?php
  2. session_start ();
  3. require_once ("util.php" );
  4. if($session = ControleAcces ("essai.php",$_POST, session_id())){
  5. echo "il m'affiche *plus* le text";
  6. }
  7. ?>




 :cry:  :cry:  :cry:  :cry:  :cry:  :cry:  :cry:  
 
en faite je pleure de joie là ça marche !! merci
dommage qu'il n'y a pas de pub sur ton site j'aurai fait 1 click par jour  pendant 1 an parole de scoot.
Non plus serieusement merci mais je comprends pas pourquoi ça clochait mais je vais regarder ça demain parce que là... depuis midi je suis sur dreamweaver et g pas décollé.

Reply

Marsh Posté le 30-09-2004 à 03:52:42    

héhé :D de rien
 
Demain, le problème te paraîtra plus clair. ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed