8791 sujets

Développement web côté serveur, CMS

Salut a tous, j'ai un vrai dilemne la...
Je suis en train de faire un zoli site php pour administrer mon serveur ftp (via proftpd et MySQL), et aussi pour que mes utilisateurs puissent faire des recherches de fichiers sur celui ci ...
Le probleme.................c'est que je galere avec les $_SESSION qui ..... ne se mettent pas a jour....
Voici les fichiers de code :
index.php :

<?php
session_start(); // On démarre la session AVANT toute chose
function connexion(){
    mb_http_output('UTF-8');
    $con = mysql_connect("localhost","prout","reprout");
    mysql_select_db("proftpd",$con);
    if (!$con){
        $_SESSION['ERREUR'] = "Connexion au serveur localhost impossible\n";
        exit;
    }
    return $con;
}
function deconnexion($conn){
    mysql_close($conn);
}
 
// On s'amuse à créer quelques variables de session :
$_SESSION['login'] = '';
$_SESSION['mdp'] = '';
$_SESSION['logged'] = "index";
 
// Maintenant que le session_start est fait, on peut taper du code HTML
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Gestion de votre accès ftp</title>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       <link href="CSS/format.css" rel="stylesheet" type="text/css" />
       <script type="text/javascript">
    //blalblalalqd....
</script>
   </head>
   <body>
        <div id="en_tete">
            <?php include('php_files/en_tete.php'); ?>
        </div>    
       <div id="menu">        
           <?php
               switch ($_SESSION['logged']){
               case "logged_successfully":
               include('php_files/menu_logged.php');
               break;
               default:
               include('php_files/menu.php');
               }
           ?>     
       </div>
        <div id="corps">
           <h1><?php 
            switch ($page){
            case "connexion":
            include('php_files/connexion.php');
            break;            
            case "cible_connexion":
            include('php_files/cible_connexion.php');
            break;
            case "inscription":
            include('php_files/inscription.php');
            break;
            case "cible_inscription":
            include('php_files/cible_inscription.php');
            break;
            default:               
           include('php_files/corps.php');
           }
           ?></h1>
        </div>
        <div id="logo">        
        </div>
        <div id="pied_de_page">
           <p><a href="mailto:prout@gmail.com?subject=Contact au sujet du site FTP">Contacter webmaster</a> site mis en ligne le 11/04/2008 en cours de construction</p>
        </div>
   </body>
</html>



Donc pour resumer je fais un test de la variable : $_SESSION['logged'] pour voir si un utilisateur s'est loggé correctement....
Voici le fichier qui verifie les logins et qui marche a la perfections suite a des echo un peu partout :
/php_files/cible_connexion.php

<?php
if (isset($_POST['login']) AND isset($_POST['mdp'])) // Si les variables existent
{
    if ($_POST['login'] != NULL AND $_POST['mdp'] != NULL) // Si on a quelque chose à enregistrer
    {    
        $_SESSION['login'] = $_POST['login'];
        $_SESSION['mdp'] = $_POST['mdp'];
        if (isset($_SESSION['login'])){//test des affectations des variables superglobales
            if (isset($_SESSION['mdp'])){
                //Requete sur la BD: 
                connexion();
                $pass = crypt($_SESSION['mdp'],'10');
                $query = "SELECT userid, passwd, DATE_FORMAT(accessed,'%W %d %M %Y à %hh:%imin') as accessed, DATE_FORMAT(modified,'%W %d %M %Y à %hh:%imin') as modified, email, LoginAllowed, idgroup FROM proftpd.ftpuser WHERE userid = '".$_SESSION['login']."' AND passwd='".$pass."'";
                $res = mysql_query($query);
                while ($row=mysql_fetch_array($res)){
                    if($row['passwd']==$pass){
                        if($row['LoginAllowed']==true){
                            //$_SESSION['pass']=$pass;
                            //$timestamp="%d";
                            $_SESSION['derlogin']= $row['accessed'];
                            $_SESSION['dermod']=$row['modified'];
                            $_SESSION['mailutil']= $row['email'];
                            $_SESSION['idgrp']=$row['idgroup'];
                        }
                        else {
                            $ERREUR="Compte en cours de validation par l'administrateur...";
                            include "./erreur.php";
                            
                        }
                    }
                }            
                //deconnexion($con);
                $_SESSION['logged'] = "logged_successfully";
                echo "<h1><br>Bonjour ".$_SESSION['login']."</h1>";
                echo "<h5><br>Dernier login : ".$_SESSION['derlogin']."</h5>";
                echo "<h5><br>Dernier Upload : ".$_SESSION['dermod']."</h5>";
                echo "<h5><br>E-M@il de contact : ".$_SESSION['mailutil']."</h5>";
            }
        }
    }
    else { //Cas d'erreur si un des champs n'est pas remplis
        echo "<h1>Erreur</h1>";
        echo "<h5>Le login et le mot de passe ne peuvent etre vide...</h5>";
    }
}
?>


Donc toujours en résumant, la j'ai bien ma valeur de $_SESSION['logged'] qui est bien mise a jour en fonction de ce que renvoie la reponse mysql...
Cependant mon menu ne change pas ....car la valeur de $_SESSION['logged'] dans le fichier index.php (le premier) ne change pas... Je me retrouve donc avec un $_SESSION['logged'] qui prend 2 valeurs differentes??!!!

Je ne comprends plus rien, si une âme charitable se sent partante pour m'aider cela serait vraiment sans refus!!!

merci par avance.
Modifié par tekman54000 (15 Apr 2008 - 20:23)
euh j'vois pas où tu donnes le nom à ta session... du coup, - si je ne me trompe pas - il en crée une nouvelle lorsque tu fais ton session_start....


session_name('XXXXXXXXXXXX');
session_start();

Modifié par fred036 (15 Apr 2008 - 18:19)
Il faut donner un nom a la session???!!!!! j'ai jamais vu dans les tutos, ca se place ou? suis etonné la mais si c'est la solution jte dis merci lol
Modérateur
Bonjour et bienvenue tekman54000, Smiley smile

Peux-tu modifier le titre de ton sujet en éditant ton premier message et mettre quelquechose qui reflète un peu plus ton problème ? Smiley cligne
(voir les règles du forum si tu ne sais pas comment faire)

Merci d'avance.
koala64 a écrit :
Bonjour et bienvenue tekman54000, Smiley smile

Peux-tu modifier le titre de ton sujet en éditant ton premier message et mettre quelquechose qui reflète un peu plus ton problème ? Smiley cligne
(voir les règles du forum si tu ne sais pas comment faire)

Merci d'avance.

Sitot dit sitot fait Smiley smile
Probleme resolu grace a l'utilisation des fonction set et unset beaucoup plus simple et plus efficace. Par contre ne pas oublier de rafraichir le site ensuite...
Voila desolé pour le derangement Smiley smile et merci a ceux qui on participé a ce thread