session !

session ! - PHP - Programmation

Marsh Posté le 18-11-2004 à 21:38:00    

bonjours,  
 
voila j'utilise un script d'authentification qui marche sous windows ( easyphp ) mais il ne marche pas sous linux, ni sur lycos !!!  
je comprend pas d'ou vient l'erreur !!  
 

Code :
  1. Code
  2. <?php 
  3. require_once('connexion.php'); 
  4. session_start(); 
  5. if (session_is_registered("authentification" )){ // verification sur la session authentification (la session est elle enregistree ?)  
  6. // ici les eventuelles actions en cas de reussite de la connexion  
  7. $tps_restant=$_SESSION['tps']-time()+$tps_session;
  8. $id_m=$_SESSION['id_m'];
  9. mysql_select_db($bdd, $dbprotect);
  10. $sql="SELECT * FROM $table_membre WHERE id_m='$id_m' limit 1";
  11. $verif_query=sprintf($sql); 
  12. $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
  13. $row_verif = mysql_fetch_assoc($verif);
  14. $utilisateur = mysql_num_rows($verif);
  15.    
  16.     if ($utilisateur) {    // On test s'il y a un utilisateur correspondant  
  17.         session_register("authentification" ); // enregistrement de la session  
  18.         // declaration des variables de session  
  19.         $_SESSION['id_m'] = $row_verif['id_m'];
  20.         $_SESSION['nom'] = $row_verif['m_nom'];
  21.         $_SESSION['prenom'] = $row_verif['m_prenom']; 
  22.         $_SESSION['id_m'] = $row_verif['id_m']; 
  23.         $_SESSION['privilege'] = "user";
  24.         $_SESSION['tps'] = time();
  25.         $_SESSION['site'] = "HTML";
  26. }
  27. if($tps_restant<=0) {
  28. session_unset();
  29. session_destroy();
  30. header("Location:index-1.php?erreur=tps_out" );
  31. echo "erreur";exit;
  32. } }
  33. else {
  34. header("Location:index.php?erreur=intru" );
  35. echo "erreur ya pas de session";exit;
  36. // redirection en cas d'echec  
  37. }
  38. $_SESSION['tps'] = time();
  39. ?>
  40. :


 
 
a chaque fois que je le teste sous lycos ou linux il ne retrouve pas la session ( erreur ya pas de session !  
 
quelqu'un peu m'édé ?  
merci
ce que je ne comprend pas c'est que sous windows ( easyphp) il trouve toujours les sessions ----> redirection vers index-2.php !!!


Message édité par - janfy - le 18-11-2004 à 21:58:44
Reply

Marsh Posté le 18-11-2004 à 21:38:00   

Reply

Marsh Posté le 18-11-2004 à 22:32:31    

il t'envoie des messages d'erreur??

Reply

Marsh Posté le 18-11-2004 à 23:14:48    

nan aucun

Reply

Marsh Posté le 19-11-2004 à 08:59:21    

De ce que je vois là tu crées la session que si elle existe déjà (dans le if (session_is_registered(...)), donc il risque pas de la créer.
 
En passant, l'utilisation de session_register et session_is_registered est dépréciée depuis pas mal de temps.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 19-11-2004 à 13:59:37    

moi, j'ai pour habitude de faire
session_start();
if (!isSet($_SESSION["MaVariable"]))
{
    // je crée ici ma session
    $_SESSION["MaVariable"] = valeur;
}


Message édité par rufo le 19-11-2004 à 13:59:50
Reply

Marsh Posté le 19-11-2004 à 18:49:56    

Code :
  1. pass.php
  2. <?php 
  3. require_once('connexion.php'); 
  4. session_start(); 
  5. if (isset($_SESSION["id_m"]))
  6. $tps_restant=$_SESSION['tps']-time()+$tps_session; 
  7. $id_m=$_SESSION['id_m']; 
  8. mysql_select_db($bdd, $dbprotect); 
  9. $sql="SELECT * FROM $table_membre WHERE id_m='$id_m' limit 1"; 
  10. $verif_query=sprintf($sql); 
  11. $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error()); 
  12. $row_verif = mysql_fetch_assoc($verif); 
  13. $utilisateur = mysql_num_rows($verif); 
  14. if($utilisateur) {
  15.    $_SESSION['id_m'] = $row_verif['id_m']; 
  16.    $_SESSION['nom'] = $row_verif['m_nom']; 
  17.    $_SESSION['prenom'] = $row_verif['m_prenom']; 
  18.    $_SESSION['id_m'] = $row_verif['id_m']; 
  19.    $_SESSION['privilege'] = "user"; 
  20.    $_SESSION['tps'] = time(); 
  21.    $_SESSION['site'] = "HTML"; 
  22.  }
  23. if($tps_restant<=0) { 
  24. header("Location:index-1.php?erreur=tps_out" );   
  25. echo "temps fini";
  26.  }
  27. else
  28. header("Location:index.php?erreur=intru" ); 
  29. echo "erreur ya pas de session";
  30. // redirection en cas d'echec   
  31. $_SESSION['tps'] = time(); 
  32. ?>


 
ca ne marche toujours pas !!
lorsque que je lance login.php, la session semble marché, mais quand j'ouvre pass.php ca ne marche plus !
 
 

Code :
  1. login.php
  2. <?php
  3. include('connexion.php');
  4. session_start(); // debut de session  
  5. if (isset($_POST['login'])){ // execution apres envoi du formulaire
  6. $login = $_POST['login']; // mise en variable du nom d'utilisateur
  7. $pass = md5($_POST['pass']); // mise en variable du mot de passe crypte
  8. // requete sur la table administrateurs (on recupere les infos de la personne)
  9. mysql_select_db($bdd, $dbprotect);
  10. $sql="SELECT * FROM $table_membre WHERE m_mel='$login' AND m_mdp='$pass'";
  11. $verif_query=sprintf($sql);
  12. $verif = mysql_query($verif_query, $dbprotect);
  13. $row_verif = mysql_fetch_assoc($verif);
  14. $utilisateur = mysql_num_rows($verif);
  15. if ($utilisateur) { // On test s'il y a un utilisateur correspondant
  16.  session_start();
  17.  // declaration des variables de session
  18.  $_SESSION['id_m'] = $row_verif['id_m'];
  19.  $_SESSION['nom'] = $row_verif['m_nom'];
  20.  $_SESSION['prenom'] = $row_verif['m_prenom'];
  21.  $_SESSION['id_m'] = $row_verif['id_m'];
  22.  $_SESSION['privilege'] = "user";
  23.  $_SESSION['tps'] = time();
  24.  header("Location: affiche_var.php" );
  25. }
  26. else {
  27.  header("Location: index-1.php?erreur=login" ); // redirection si utilisateur non reconnu
  28. }
  29. }
  30. $_SESSION['tps'] = time();
  31. // GESTION DE LA Deconnexion
  32. if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les parametres d'URL qui permettront d'identifier un "contexte" de deconnexion
  33. $prenom = $_SESSION['prenom']; // On garde le prenom en variable pour dire au revoir (soyons polis :-)
  34. header("Location: index-1.php?erreur=delog" );
  35. }
  36. mysql_close();
  37. ?>

Reply

Marsh Posté le 19-11-2004 à 19:23:49    

100top a écrit :

Code :
  1. pass.php
  2. <?php 
  3. require_once('connexion.php'); 
  4. session_start(); 
  5. if (isset($_SESSION["id_m"]))
  6. $tps_restant=$_SESSION['tps']-time()+$tps_session; 
  7. $id_m=$_SESSION['id_m']; 
  8. mysql_select_db($bdd, $dbprotect); 
  9. $sql="SELECT * FROM $table_membre WHERE id_m='$id_m' limit 1"; 
  10. $verif_query=sprintf($sql); 
  11. $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error()); 
  12. $row_verif = mysql_fetch_assoc($verif); 
  13. $utilisateur = mysql_num_rows($verif); 
  14. if($utilisateur) {
  15.    $_SESSION['id_m'] = $row_verif['id_m']; 
  16.    $_SESSION['nom'] = $row_verif['m_nom']; 
  17.    $_SESSION['prenom'] = $row_verif['m_prenom']; 
  18.    $_SESSION['id_m'] = $row_verif['id_m']; 
  19.    $_SESSION['privilege'] = "user"; 
  20.    $_SESSION['tps'] = time(); 
  21.    $_SESSION['site'] = "HTML"; 
  22.  }
  23. if($tps_restant<=0) { 
  24. header("Location:index-1.php?erreur=tps_out" );   
  25. echo "temps fini";
  26.  }
  27. else
  28. header("Location:index.php?erreur=intru" ); 
  29. echo "erreur ya pas de session";
  30. // redirection en cas d'echec   
  31. $_SESSION['tps'] = time(); 
  32. ?>


 
ca ne marche toujours pas !!


 
Encore la même chose, tu définis la variable de session id_m que si elle est déjà définie : au final ça rentre toujours dans le else. :heink:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 19-11-2004 à 20:00:09    

oui mais dans pass.php la session doit etre déjà ouverte puisqu'"elle marche dans login.php donc je suis dans if() et du coup je remets mes variables de session !  
je comprends pas !
 
au fait merci pour ton aide! c'est sympa !


Message édité par - janfy - le 19-11-2004 à 20:00:37
Reply

Marsh Posté le 19-11-2004 à 20:27:57    

Tu as un lien ou une redirection entre login.php et pass.php ? Je veux dire, tu passes bien par login.php pour atteindre pass.php ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 20-11-2004 à 00:18:05    

oui par une redirection header(location....

Reply

Marsh Posté le 20-11-2004 à 00:18:05   

Reply

Marsh Posté le 20-11-2004 à 10:34:20    

faut pas mettre session_start() sur toutes les pages où on veut utiliser les variables de session noramlement?

Reply

Marsh Posté le 20-11-2004 à 12:33:52    

ben c'est ce que j'ai fait je crois !!!!

Reply

Marsh Posté le 07-12-2004 à 09:39:29    

Moi j ai le meme probleme, les varaibles de session ne semblent pas se propager d une page a une autre!! Si quelqu un a la mega solution il sauvera deux gars de la depression nerveuse!

Reply

Marsh Posté le 07-12-2004 à 09:44:10    

FTG a écrit :

Moi j ai le meme probleme, les varaibles de session ne semblent pas se propager d une page a une autre!! Si quelqu un a la mega solution il sauvera deux gars de la depression nerveuse!


Là je crois que c'est moi qui vais en faire une, de dépression, si tu continues à poser des questions à la con auxquelles on t'a déjà répondu dans d'autres topics.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-05-2010 à 11:23:14    

@100top
 
pour ton problème j'ai peut etre la solution
 
sous ton if($utilisateur)
rajoute la ligne la :  
 
$_SESSION['authentification']="authentification";  //ca permet d'enregistrer la session
 
ensuite un conseil apres  
$utilisateur=mysql_num_rows
rajoute :  
mysql_close($connexion);  vu que tu as recup t valeur dans $utilisateur ta plus besoin de ta base de donnée
 
de plus session_start();
met le juste au dessus de if($utilisateur) pas besoin de l'ouvrir avant
 
ca c pour ton login.php
 
ensuite pour ton pass.php au lieu de faire ton
if (isset($_SESSION["id_m"]))
 
remplace par :  
 
if(isset($_SESSION['authentification']
{
     //tu met le traitement lorsque la connexion est reussi
}
else
{
     //tu fais ta redirection en cas d'echec
}
essaye ca et dis moi si y a du mieu

Reply

Sujets relatifs:

Leave a Replay

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