PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-08-2010 15:11:39

honey0
Membre
Inscription : 15-07-2010
Messages : 25

déconnexion à l'appel d'une autre page

Bonjour,

j'ai une première page (chercher_user.php) dans la page j'ai une liste déroulante permettant de choisir un acteur afin d'afficher toutes ses informations et une 2ième page (fiche_user.php) où j'affiche ses informations.
chercher_user.php:

<?php     session_start();

      include_once ("fonctions.php");
      include_once ("fonctionsjs.php");
     
      if ((!isset($_SESSION['mail'] ))&& (!isset($_SESSION['pwd'])))
        {
          $lebas=1;
        }

      else
        {
          $lebas=2;
        }
 
      entete("Rechercher un acteur", $lebas);
     
      connexion();
/*******************************************************************************************/
?>
      <form method="post" id="form" id="etat">
        <fieldset class="absence_personne"> <legend> Rechercher une personne </legend>
          <table cellspacing=20 cellpadding=2 align="center">
            <span id="erreur"> </span>   
            <tr>  <label>
              <td> Choisir un acteur  </td>
              <td> <font color="red" size=2> * </font> <select name="personne" id="etat"> <option> </option>
                <?php $val =''; liste_nom("tout", $val);  ?>
                </select> </td>
            </label>  </tr>
                             
            <tr>  <label>
                <td> </td>  <td align="center"> <input type="submit" name="sauver" value="Chercher" onclick="return verifier_ajout();" />
                                <a href="index.php" style="text-decoration: none">  <input type="submit" name="annulation" value="Annuler" /> </a></td>
                                  <!-- le input de 'annuler' se comprtait de la mm façon que 'chercher', j'ai donc été obligée de mettre un <a href> pour retourner à l'accueil  -->
            </label>  </tr>
           
          </table>
        </fieldset>
      </form>
   
<?php

  if (isset($_POST['sauver']))
    {
      $acteur = verifier_isset('personne');
     
      if(empty($acteur))
        echo '<script ttype="text/javascript"> alert("Veuillez choisir un acteur"); </script>';
     
      else
        header('location: fiche_user.php?personne='.$acteur.''); 
    }
?>
   
    </div> </div>
  </body>
</html>

J'avais d'abord fait la soumission en précisant l'attribut action dans la balise form, mais après avoir remarqué le problème j'ai changé, sans succès d'ailleurs.

fiche_user.php:

<?php     session_start();

      include_once ("fonctions.php");
      include_once ("fonctionsjs.php");
             
      connexion();
     
        //vérification de la session
      if ((!isset($_SESSION['mail'] ))&& (!isset($_SESSION['pwd'])))
        {
          $lebas=1;
        }

      else
        {
          $lebas=2;
        }
       
      entete("Fiche acteur", $lebas);
     
      if(isset($_GET['personne']))    //récupération de la personne de la page afficher_users.php à travers <a href...>
        $personne = $_GET['personne'];
     
      else
        $personne = verifier_isset("personne");
       
      if (!empty($personne))
        {  
          echo '<div class="div1">';
          //recherche de l'identifiant de la personne
          $lid1 = mysql_query('select id, profil, email, telephone, acteur from personne where acteur="'.$personne.'"');
         
          if ($lid2=mysql_fetch_assoc($lid1))
            {
              echo '<table cellpadding=10 align="center" id="tab_acteur"> <caption> <b><u>Informations personnelles</u></b> <br/><br /> </caption>';

              $identif = $lid2['id'];   //récupération de l'id pour les comparaisons ultérieures
                           
              echo '<tr> <td> Acteur </td> <td>'.$lid2['acteur'].'</td> </tr>';
              echo '<tr> <td> Profil </td> <td>'.$lid2['profil'].'</td> </tr>';
              echo '<tr> <td> E-mail </td> <td>'.$lid2['email'].'</td> </tr>';
              echo '<tr> <td> Téléphone </td> <td>'.$lid2['telephone'].'</td> </tr>';
             
                //compte le nombre de fois que la personne apparait dans la table absence
              $absence = mysql_query('select COUNT(*) from absences where id="'.$identif.'"');
              $nb_absence = mysql_fetch_assoc($absence);
              if (!empty($nb_absence))
                echo '<tr> <td> Nombre d\'absences </td> <td>'.$nb_absence['COUNT(*)'].'</td> </tr>';
              else if (empty($nb_absence))
                echo '<tr> <td> Nombre d\'absences </td> <td> 0 </td> </tr>';

                //compte le nombre de fois que la personne apparait dans la table activite
              $activites = mysql_query('select COUNT(*) from activite where id_acteur_pack="'.$identif.'" or id_acteur_qualif="'.$identif.'"');
              $nb_activites = mysql_fetch_assoc($activites);
              if (!empty($nb_activites))
                echo '<tr> <td> Nombre d\'activités </td> <td>'.$nb_activites['COUNT(*)'].'</td> </tr>';
              else
                echo '<tr> <td> Nombre d\'activités </td> <td> 0 </td> </tr>';
               
              //compte le nombre de fois que la personne apparait dans la table demande
              $demandes = mysql_query('select COUNT(*) from demande where id_acteur_cpi="'.$identif.'"');
              $nb_demandes= mysql_fetch_assoc($demandes);
              if (!empty($nb_demandes))
                echo '<tr> <td> Nombre de demandes </td> <td>'.$nb_demandes['COUNT(*)'].'</td> </tr>';
              else
                echo '<tr> <td> Nombre de demandes </td> <td> 0 </td> </tr>';
             
              echo '</table> <br/>';
            }
         
          echo '<pre>                                          
           <a href="modifier_infos_user.php?personne='
.$identif.'" >Modifier</a>         <a href="chercher_user.php">Retour recherche</a>   <a href="afficher_users.php">Liste des acteurs</a>  </pre>';
         
          echo "</div>";
         
          echo "<div class='div2'>";
              // ses absences
            $lesabsences = mysql_query('SELECT nature, date_debut, date_fin FROM absences WHERE  id="'.$identif.'"');
            $ligne_ab = mysql_num_rows($lesabsences);
             
                echo '<p style="text-align: center;"> <b><u>Absences</u></b> </p>';
               
                if(empty($ligne_ab))    //si l'acteur n'est pas dans la table absence
                  echo "<p align='center'> Aucune absence enregistrée </p>";
               
                else
                  {
                    echo '<table cellspacing=20 align="center" id="tab_acteur">
                    <th> Absences </th> <th> Début </th> <th> Fin</th>'
;
               
                    while($resultat1 = mysql_fetch_assoc($lesabsences))
                      {
                          echo '<tr align="center">';
                        echo '<td>'.$resultat1['nature'].'</td>';
                          $ddebut = formater_date($resultat1['date_debut']);
                          $dfin = formater_date($resultat1['date_fin']);
                        echo '<td>'.$ddebut.'</td>';
                        echo '<td>  '.$dfin.'</td>';
                          echo '</tr>';
                      }
                  }
                echo '</table> <br/><br/>';
          echo '</div>';
         
          echo '<div class="div3">';
                //activités dans lesquelles il figure
       
            $activite = mysql_query('SELECT code_application, version_application, TM, version_TM, type_activite
                          FROM activite WHERE id_acteur_pack="'
.$identif.'" or id_acteur_qualif="'.$identif.'"');
            $ligne_ac = mysql_num_rows($activite);
           
            echo '<p style="text-align: center;"> <b><u>Projets</u></b> </p>';
           
            if(empty($ligne_ac))        //si l'acteur n'est pas dans la table activité
              echo '<p align="center"> Vous n\'avez travaillé sur aucun projet </p>';
             
            else
              {
                echo '<table cellspacing=2 cellpadding=10 align="center" id="tab_acteur">
                    <th> Application </th> <th> Code </th> <th> Version </th> <th> Module</th> <th> Version module </th>
                    <th> Etat module </th> <th> Activité </th>'
;
               
                while($resultat2 = mysql_fetch_assoc($activite))
                  {
                      echo '<tr align="center">';
                    echo '<td>'. get_application($resultat2['code_application']).'</td>'; //nom de l'application     
                    echo '<td>'.$resultat2['code_application'].'</td>';
                    echo '<td>'.$resultat2['version_application'].'</td>';
                    echo '<td>'.$resultat2['TM'].'</td>';
                    echo '<td>'.$resultat2['version_TM'].'</td>';
                    echo '<td>'.$resultat2['type_activite'].'</td>';
                      echo '</tr>';
                  }
               
                echo '</table> <br/><br/>';
              }
          echo '</div>';
         
          echo '<div class="div4">';
          //demandes par lesquelles l'acteur est concerné
            $demande = mysql_query('SELECT  libelle, application, version_application, debut_demande, fin_demande, fingesdem, etat_protocole,
                            date_protocole, etat_bilan, date_bilan, etat_demande
                          FROM demande WHERE id_acteur_cpi="'
.$identif.'"');
            $ligne_d = mysql_num_rows($demande);
           
            echo '<p style="text-align: center;"> <b><u>Demandes</u></b> </p>';
           
            if(empty($ligne_d))
              echo " <p align='center'> Vous n'êtes concerné par aucune demande </p> ";
       
            else
              {
                echo '<table cellspacing=2 cellpadding=10 id="tab_acteur">
                    <th> Libellé </th> <th> Application </th> <th> Version </th> <th> Début </th> <th> Fin </th>
                    <th> Etat </th> <th> Protocole </th> <th> Date protocole </th> <th> Bilan </th> <th> Date bilan </th>'
;
               
                while($resultat3 = mysql_fetch_assoc($demande))
                  {
                      echo '<tr align="center">';
                     
                    echo '<td>'.$resultat3['libelle'].'</td>';
                    echo '<td>'.$resultat3['application'].'</td>';
                    echo '<td>'.$resultat3['version_application'].'</td>';
                    echo '<td>'.$resultat3['debut_demande'].'</td>';
                      $find = formater_date($resultat3['fin_demande']);
                    echo '<td>'.$find.'</td>';
                    echo '<td>'.$resultat3['etat_demande'].'</td>';
                    echo '<td>'.$resultat3['etat_protocole'].'</td>';
                      $dproto = formater_date($resultat3['date_protocole']);
                    echo '<td>'.$dproto.'</td>';
                    echo '<td>'.$resultat3['etat_bilan'].'</td>';
                      $dbilan = formater_date($resultat3['date_bilan']);
                    echo '<td>'.$dbilan.'</td>';
                     
                      echo '</tr>';
                  }
               
                echo '</table>';
              }
          echo '</div>';
        }
      else
        header('location: chercher_user.php');
?>
    </div>
    </div>
  </body>
</html>

Donc lorsque je choisis une personne et que valide, je suis redirigée vers "fiche-user.php" mais je suis aussi déconnectée. Ce qui me parait bizarre car j'ai une autre (3ième) page qui contient la liste de tous les acteurs et on peut cliquer sur un nom pour voir la fiche dans "fiche_user.php", cette fois je ne suis pas déconnectée.

Ce que j'ai aussi remarqué c'est que le problème n'est visible que sous mozilla, sous IE7 tout va bien (paradoxale, car c'est souvent le contraire).

J'espère obtenir de l'aide pour m'éclairer sur le sujet.

+++

Dernière modification par honey0 (20-08-2010 15:51:35)

Hors ligne

#2 20-08-2010 16:02:19

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : déconnexion à l'appel d'une autre page

Salut,

j'ai pas tous suivis mais

chercher_user.php

ligne 21 : 2 attributs id ce n'est pas valide en html
pas d'attribut action donc le formulairesera valider sur la même page (c'est comme si tu avais mis action="chercher_user.php")

avec le micmac des ligne 42 à 53 tu renvoi si fiche_user.php avec un argument en "get" (argument qui est sencé etre a même valeur que je ne sais pas quoi ne connaissant le contenue de la fonction verifier_isset()

ligne 34 tu ne met pas un bouton dans un lien, tu vire le lien et utilise un boutton de type "button" et un bout de JS pour retourner sur l'index (onclic etc)

fiche_user.php

ligne 33 pourquoi un fetch_assoc et une boucle puisse que l'acteur est normalement unique (c'est le bordel s'il y a des homonymes, c'est pour cela que l'on utilise une clef primaire de table pour identifier et non leurs noms wink

les 3 requetes ensuites, doivent pouvoir etre faite une seule fois (il faut pour cela faire des joitures mais ce n'est pas compliqué)
par exemple

select personne.id as idacteur, profil, email, telephone, acteur, count(absences.id) as nbabsence from personne inner join absences on absences.id=idacteur where acteur="'.$personne.'"'

tu peut ajouter les deux autres (attention a la requete c'est pas que du copier collé).
Pour info : on evitera au maximum de faire des requetes dans une boucle car c'est gourmand et pas forcément utile (utilisation des jointures SQL par exemple).

Pour le problème exact je ne vois pas ce que tu entend par déconnecter, mis a part si tu utilise des variables $mail ou $pwd (si tu parle de la sessions)

si tu parle d'une retour sur chercher_user.php non voulu c'est surement le header en fin de page (d'ailleur il te manque la } fermante du else).


@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#3 20-08-2010 16:53:23

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : déconnexion à l'appel d'une autre page

Que fait la fonction connexion() ?
Car dans une page tu la met avant la vérification de connexion et dans l'autre après.

Hors ligne

#4 20-08-2010 19:50:44

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : déconnexion à l'appel d'une autre page

moi non plus j'ai rien compris big_smile
enfin, je ne vois que des aberrations hmm

c'est quoi ca ???
[code = php ]

            $activite = mysql_query('SELECT code_application, version_application, TM, version_TM, type_activite
                          FROM activite WHERE id_acteur_pack="'.$identif.'" or id_acteur_qualif="'.$identif.'"');
            $ligne_ac = mysql_num_rows($activite);
           
            echo '<p style="text-align: center;"> <b><u>Projets</u></b> </p>';
           
            if(empty($ligne_ac))

[/code]

tu met qqchose dans $ligne_ac  et tu te pose la question s'il est vide roll

bon, moi je dis, fé un peu de ménage et reviens nous voir qd tu auras les idées plus claires wink

a++

Hors ligne

#5 23-08-2010 08:15:35

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

bonjour,

merci pour vos réponses.

la fonction connexion() sert à se connecter à la base. quand j'ai vu ta question, je l'ai mis avant la vérification de la session, mais est-ce que son ordre a de l'importance sur la session ( je ne le crois pas, mais il se peut que je me goures sur ça aussi).

ligne 21: je n'avais pas fait attention, désolée, id="etat" n'a rien n'a faire là.

J'ai mis id="form" pour pouvoir y appliquer des styles en css; sinon il se valide sur la même page vu que je n'ai pas d'attribut action.

la fonction verifier_isset($val) contient:

if (isset($_POST[$val]))
   $mavar = $_POST[$val];

else
   $mavar = '';

return $mavar;

Pour la ligne 34, le bouton annuler, j'ai ce que tu m'as dit moogli

function retourner()
    {
      header("location: index.php");
    }

<input type="button" name="annulation" value="Annuler" onclick="retourner();" />

mais ça ne me renvoie pas à l'index. J'ai aussi essayer avec header('location..') mais celui là me renvoie directement à l'index sans m'afficher le formulaire.

J'ai une clé primaire qui est  "id" en auto_increment.


pour les 3 requêtes, si je les fait en une seule fois et que j'affiche le résultat avec une boucle comme mysql_fetch_assoc ou fetch_array, il ne m'affichera pas x fois (x étant le nombre de ligne dans la table absence) les informations contenues dans la table personne??


Quand je parle de déconnexion, c'est effectivement la session qui est fermée, mais comme je l'ai dit cela ne se passe qu'avec mozilla pas avec IE avec lequel ça ne me pose pas de problème.

Désolée Pierrot si ce que je fais te parait aberrant, mais ce n'est pas si évident pour moi. Ce que vous faites est vraiment formidable, vous vous donnez la peine non seulement de lire nos posts mais aussi d'essayer de nous aider au mieux. Mais si je fais des trucs qui te paraissent "stupides", dis toi que je ne le vois pas ainsi, sinon je ne l'aurai pas fais. J'aimerai bien pouvoir faire "le ménage " seule dans mon code, mais je fais des erreurs dont je ne me rends pas compte et c'est pour cela que j'ai lancé cette discussion.

pour le if(empty($ligne_ac)), j'ai affiché $ligne_ac dans le cas ou  il ne trouve aucune ligne et il a affiché 0; donc je vais le remplacer par:

 if($ligne_ac == 0)

Merci

++

Hors ligne

#6 23-08-2010 08:21:14

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

je retourner finalement à l'index en faisant simplement:

if (isset($_POST['annulation']))
    header('location: index.php');

comme dans les autres formulaires

Hors ligne

#7 23-08-2010 09:03:47

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : déconnexion à l'appel d'une autre page

Tes cookies sont-ils activés sous Mozilla ?
S'ils ne le sont pas tu perdras forcement la session.

Hors ligne

#8 23-08-2010 10:05:55

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

les cookies sont activés, d'ailleurs ça ne m'arrive qu'entre ces 2 pages, la navigation entre les autres pages n'entraine pas la fermeture de la session.

Hors ligne

#9 25-08-2010 09:01:09

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

kiku!! personne

je suis vraiment bloquée là, j'ai même essayé de nommer les sessions, mais toujours le même problème. Je crois qu'il ne transmet pas les variables de session. En effet, lorsque je fais (dans fiche_user.php)

echo $_SESSION['mail'];

FF me met undefined index: mail
et pourtant je les sauvegardes dès que la session est établie.

Dernière modification par honey0 (25-08-2010 09:02:09)

Hors ligne

#10 25-08-2010 20:30:34

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : déconnexion à l'appel d'une autre page

que donne un var_dump($_SESSION) ?

a tu une variable $mail qui traine dans ton script ? (si oui change sont nom)

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#11 26-08-2010 07:40:01

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

bonjour

var_dump($_SESSION) donne: array empty

Sur la page la même page je n'ai pas de variable $mail

Dernière modification par honey0 (26-08-2010 08:47:13)

Hors ligne

#12 26-08-2010 07:56:39

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : déconnexion à l'appel d'une autre page

tu as oublié session_start wink
a++

Hors ligne

#13 26-08-2010 08:46:41

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

non, j'ai bien mis session_start au début des 2 pages

<?php session_start();

...........

Hors ligne

#14 26-08-2010 10:21:24

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

je crois ce n'est pas le code de ces pages qui pose problème. J'ai sorti une sauvegarde de 10 jours qui marche très bien. lorsque je remplace les fichiers par ceux de la sauvegarde, ça ne marche plus (alors qu'ils marchaient dans le répertoire de sauvegarde). Je ne sais pas d'où ça vient, mais je vais chercher et vous tenir au courant.

Bonne journée

Hors ligne

#15 26-08-2010 11:09:41

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : déconnexion à l'appel d'une autre page

Bonjour,

Quand ca marche dans un répertoire et pas dans un autre, il n'y a pas photo. C'est que le problème viens dans la gestion de ton arborescence. Tes chemins relatifs pour tes includes doivent se faire par rapport à la page principale qui éxécute le script en cours.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 26-08-2010 12:41:47

honey0
Membre
Inscription : 15-07-2010
Messages : 25

Re : déconnexion à l'appel d'une autre page

salut!!

ce n'est pas exactement l'arborescence qui est en cause. en fait j'appelle une fonction "entete($maphrase, $lebas)". C'est elle qui pose problème.
J'ai changé la fonction pour ne plus avoir que "entete($maphrase)". $lebas me servait à savoir si une session est active ou pas, et si c'est le cas, on affiche un bouton déconnexion, sinon on affiche le formulaire de connexion. J'ai enlevé cette partie et ça marche. Je vais donc voir du côté de jquery si je peux faire un formulaire de connexion flottant ou caché.

Je vous remercie beaucoup pour vos interventions qui m'ont appris de nouvelles choses et m'ont permis de corriger certaines erreurs de mes codes.

Encore merci à tous!!!!:D

Dernière modification par honey0 (26-08-2010 13:01:58)

Hors ligne

Pied de page des forums