Partage
  • Partager sur Facebook
  • Partager sur Twitter

qu'est ce qui cloche dans mon script?

connecté ou non

    25 novembre 2005 à 17:41:54

    bonjour,
    voici mon script:

    Citation : code


    <?php
    //code pour les users actifs et inactifs a placer sur chaque page!
    mysql_connect('...');//connexion bdd
    mysql_select_db('........');
    $retour=mysql_query('select * from sessions where login="'.$_SESSION['login'].'"') or die(mysql_error());
    $data=mysql_fetch_array($retour);
    function actif()//fonction
    {
    echo 'blabla';
    if($_SESSION['connect']==TRUE)
    {
    echo 'camarch<br />';
    $query='UPDATE sessions SET temps="time()+20" AND connect ="oui" WHERE user="'.$_SESSION['login'].'" ';
    mysql_query($query);//on met a jour le timestamp 10 MINUTES
    mysql_query('update sessions set connect="oui"');

    }
    else //premiere visite
    {
    $qery='INSERT INTO sessions VALUES("'.$_SESSION['login'].'","'.time().'+600","oui")';
    mysql_query($qery);
    $_SESSION['connect']=TRUE;
    }
    }
    function verif()
    {
    echo 'kikoo';
    if($data['temps']>time())
    {
    include('stamp.php');
    mysql_query('UPDATE sessions SET connect="non" WHERE login="'.$_SESSION['login'].'"');//on met dans la bdd qu'il est deconnecté
    }
    }
    verif();//on verifie si la session à expiré
    actif();// on active la connexion

    mysql_close();
    ?>




    Voila, donc le problème c'est que quand je me mets sur la page... et que j'actualise, ca ne change rien dans la bdd :euh: pourtant j'ai une session qui existe, et quand je me connecte pour la première fois, ca rentre bien dans la bdd :D
    de plus au bout de 20 secondes et que je réactualise la page, ca ne change rien :-°
    merci de maider o_Oo_Oo_O
    je suis un vrai zero :(:(
    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2005 à 18:12:36

      Hello gnominou,

      As tu initialisé la session ?

      Sinon utilise un session_start(); au debut de ton code.

      <?php

      session_start();

      //code pour les users actifs et inactifs a placer sur chaque page!
      mysql_connect('localhost', 'root', '');//connexion bdd
      mysql_select_db('base');
      // ...
      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2005 à 18:26:44

        oui!
        en fait cette page est une include!sur l'autre page, la session est initialisée... dans ma bdd je vois l'user, on dirait que les requetes update que j'ai mises ne fonctionnent pas!
        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2005 à 18:32:22

          Moi j'ai 2 scripts qui clocent :

          Livre d'Or :


          <form method="post" action="livredor.php">
              <p>Vous aimez-bien JAKPRO ? Faites-nous parvenir vos commentaires !</p>
             
              <p>
                  Pseudo : <input name="pseudo" /><br />
                  Message :<br />
                  <textarea name="message" rows="8" cols="35"></textarea> <br />
                  <input type="submit" value="Envoyer" />
              </p>
              </form>

          <p class="pages">
          <?php
          mysql_connect("sql.free.fr", "XXXX", "XXXX");
          mysql_select_db("livredor");

          // --------------- Etape 1 -----------------
          // Si un message est envoyé, on l'enregistre
          // -----------------------------------------

          if (isset($_POST['pseudo']) AND isset($_POST['message']))
          {
             
              $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
                 
              $message = htmlentities($_POST['message'], ENT_QUOTES); // De même pour le message
              $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
             
              // On peut enfin enregistrer :o)
              mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "')");
          }

          // --------------- Etape 2 -----------------
          // On écrit les liens vers chacune des pages
          // -----------------------------------------

          // On met dans une variable le nombre de messages qu'on veut par page
          $nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)

          // On récupère le nombre total de messages
          $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livredor');

          $totalDesMessages = $donnees['nb_messages'];

          // On calcule le nombre de pages à créer
          $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);

          // Puis on fait une boucle pour écrire les liens vers chacune des pages
          echo 'Page : ';
          for ($i = 1 ; $i <= $nombreDePages ; $i++)
          {
              echo '<a href="livredor.php?page=' . $i . '">' . $i . '</a> ';
          }

          ?>

          </p>

          <?php
          // --------------- Etape 3 ---------------
          // Maintenant, on va afficher les messages
          // ---------------------------------------

          if (isset($_GET['page']))
          {
              $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
          }
          else // La variable n'existe pas, c'est la première fois qu'on charge la page
          {
              $page = 1; // On se met sur la page 1 (par défaut)
          }

          // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
          $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

          $reponse = mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);


          {
              echo '<p><gras>' . $donnees['pseudo'] . '</gras> a écrit :<br />' . $donnees['message'] . '</p>';
          }

          mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
          ?>


          ...et...

          Formulaire Mail :


          <?php
          if(isset($_GET['mode']) && $_GET['mode'] == 'envoie')
          {
            $expediteur= $_POST['expediteur'];
            $message = $_POST['message'];
            $sujet = $_POST['sujet'];
            $destinataire = $_POST['destinataire'];
            if ($destinataire=="jakhris")
            {
              $destinataire = 'webmaster@jakpro.fr.st; FFMaster_77@hotmail.com';
            }
            if ($destinataire=="jaketdaxter")
            {
              $destinataire = 'jaketdaxter@jakpro.fr.st; jaketdaxter@hotmail.fr';
            }
            if ($destinataire=="kilik")
            {
              $destinataire = 'kilik@jakpro.fr.st; kilik2099@hotmail.com';
            }
            if ($destinataire=="mailer313")
            {
              $destinataire = 'mailer313@jakpro.fr.st; ling5@club-internet.fr';
            }
            if ($destinataire=="all")
            {
              $destinataire = 'webmaster@jakpro.fr.st; jaketdaxter@jakpro.fr.st; kilik@jakpro.fr.st; mailer313@jakpro.fr.st';
            }

            if ($expediteur=="")
            {
              echo('Erreur - email non spécifié');
            }
            else
            {
              mail("$destinataire","$sujet","$message","From: $expediteur");
              echo("Message envoyé.<a href=?>Retour</a>");
            }
          }
          else
          {
            echo"<form name='contact' action='?mode=envoie' METHOD=POST>"; ?>
            <div>
             <label for="sujet">Sujet du message :</label>
             <input type="text" id="sujet" name="sujet" />
            </div>
            <div>
             <label for="dest">Destinataire :</label>
             <select id="dest" name="dest">
              <option value="jakhris">JaKhris</option>
              <option value="jaketdaxter">Jaketdaxter</option>
              <option value="kilik">Kilik</option>
              <option value="mailer313">Mailer313</option>
              <option value="all" selected="selected">Toute l'Équipe</option>
             </select>
            </div>
            <div>
             <label for="expediteur">Votre e-mail :</label>
             <input type=text name="email" />
            </div>
            <div>
             <label for="message">Votre message :</label>
             <textarea name="message" rows="4" cols="40"></textarea>
            </div>
            <div>
             <input type="submit" />
            </div>
            </form>
          <?php
          }
          ?>
           
           


          Merci d'avance !
          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2005 à 18:45:46

            Gnominou : utilise "Code > PHP" et pas la citation, là on peut pas trop lire ton code.

            Et indente ton code aussi :
            http://fr.wikipedia.org/wiki/Indentation#Informatique


            JaKhris :
            Moi, j'ai envie de 1000 euros en liquide, par la poste.

            Merci d'avance !
            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2005 à 19:01:03

              Très drôle :euh:
              J'ai bien mis "Merci d'avance !"
              • Partager sur Facebook
              • Partager sur Twitter
                25 novembre 2005 à 19:05:17

                UPDATE sessions SET temps="time()+20" AND connect ="oui" WHERE user="'.$_SESSION['login'].'"
                mysql_query($query); //on met a jour le timestamp 10 MINUTES

                # [...] #

                if($data['temps']>time())  {


                - UPDATE sessions SET temps="time()+20", connect ="oui" WHERE user="'.$_SESSION['login'].'"
                - D'ou vient $data ?? De l'exterieur de la fonction ? Alors ca ne marchera pas comme ca ...


                Et ca ?
                <?php

                session_start();

                if(isset($_SESSION['login']))  {
                 
                  $retour = mysql_query('select * from sessions where login="'.$_SESSION['login'].'" ') or die(mysql_error());
                  $data = mysql_fetch_assoc($retour);
                 
                  function actif()  {
                    if($_SESSION['connect']==TRUE)  {
                   
                      $query = ' UPDATE sessions SET temps="time()+20", connect="oui" WHERE user="'.$_SESSION['login'].'" ';
                      mysql_query($query) or die(mysql_error());//on met a jour le timestamp 10 MINUTES
                     
                    }  else { //premiere visite
                   
                      $qery='INSERT INTO sessions VALUES("'.$_SESSION['login'].'","'.(time()+600).'","oui&quot;)';
                      mysql_query($qery) or die(mysql_error());
                      $_SESSION['connect'] = true;
                     
                    }
                  }
                 
                  function verif($temps=time())  {
                    mysql_query(' UPDATE sessions SET connect="non" WHERE temps=' . $temps . '<temps ') or die(mysql_error()); // On deconnecte si le temps est dépassé
                  }
                 
                  verif($data['temps']);//on verifie si la session à expiré
                  actif();// on active la connexion

                }

                mysql_close();

                ?>


                JaKhris, crée un nouveau topic sinon ... Sinon, je vois pas trp, j'ai juste survolé ...
                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2005 à 12:16:04

                  Citation : code


                  Parse error: parse error, unexpected '(', expecting ')' in /usr/home/hebergement/sites/gnominou/user.php on line 26


                  je rapelle: ligne 26:

                  Citation : code

                  }



                  il faut revoir tout le code^^ je trouve vraiment pas la... en tout cas merci ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2005 à 12:54:31

                    Tu utilise mon code ? Car moi la ligne 26 c'est :
                    mysql_query(' UPDATE sessions SET connect="non" WHERE temps=' . $temps . '<temps ') or die(mysql_error()); // On deconnecte si le temps est dépassé

                    Sinon donne 24-25-26
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 novembre 2005 à 13:33:02

                      oui mais j'ai rajouté la connexion msql:p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 novembre 2005 à 13:39:59

                        Et tu peux donner tes lignes à toi ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 novembre 2005 à 13:44:51

                          voici mon code:


                          <?php

                          session_start();

                          if(isset($_SESSION['login']))  {
                           mysql_connect('.........');
                          mysql_select_db(XXXXX);
                            $retour = mysql_query('select * from sessions where login="'.$_SESSION['login'].'" ') or die(mysql_error());
                            $data = mysql_fetch_assoc($retour);
                           
                            function actif()  {
                              if($_SESSION['connect']==TRUE)  {
                             
                                $query = ' UPDATE sessions SET temps="time()+20", connect="oui" WHERE user="'.$_SESSION['login'].'" ';
                                mysql_query($query) or die(mysql_error());//on met a jour le timestamp 10 MINUTES
                               
                              }  else { //premiere visite
                             
                                $qery='INSERT INTO sessions VALUES("'.$_SESSION['login'].'","'.(time()+600).'","oui";)';
                                mysql_query($qery) or die(mysql_error());
                                $_SESSION['connect'] = TRUE;
                               
                              }
                            }
                           
                            function verif($temps=time())  {
                              mysql_query(' UPDATE sessions SET connect="non" WHERE temps="' . $temps . '<temps '"') or die(mysql_error()); // On deconnecte si le temps est dépassé
                            }
                           
                            verif($data['temps']);//on verifie si la session à expiré
                            actif();// on active la connexion

                          }

                          mysql_close();

                          ?>



                          merci :euh:
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 novembre 2005 à 13:53:00

                            Citation : JaKhris

                            Moi j'ai 2 scripts qui clocent :

                            Livre d'Or :


                            <form method="post" action="livredor.php">
                                <p>Vous aimez-bien JAKPRO ? Faites-nous parvenir vos commentaires !</p>
                               
                                <p>
                                    Pseudo : <input name="pseudo" /><br />
                                    Message :<br />
                                    <textarea name="message" rows="8" cols="35"></textarea> <br />
                                    <input type="submit" value="Envoyer" />
                                </p>
                                </form>

                            <p class="pages">
                            <?php
                            mysql_connect("sql.free.fr", "XXXX", "XXXX");
                            mysql_select_db("livredor");

                            // --------------- Etape 1 -----------------
                            // Si un message est envoyé, on l'enregistre
                            // -----------------------------------------

                            if (isset($_POST['pseudo']) AND isset($_POST['message']))
                            {
                               
                                $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
                                   
                                $message = htmlentities($_POST['message'], ENT_QUOTES); // De même pour le message
                                $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
                               
                                // On peut enfin enregistrer :o)
                                mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "')");
                            }

                            // --------------- Etape 2 -----------------
                            // On écrit les liens vers chacune des pages
                            // -----------------------------------------

                            // On met dans une variable le nombre de messages qu'on veut par page
                            $nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)

                            // On récupère le nombre total de messages
                            $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livredor');

                            $totalDesMessages = $donnees['nb_messages'];

                            // On calcule le nombre de pages à créer
                            $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);

                            // Puis on fait une boucle pour écrire les liens vers chacune des pages
                            echo 'Page : ';
                            for ($i = 1 ; $i <= $nombreDePages ; $i++)
                            {
                                echo '<a href="livredor.php?page=' . $i . '">' . $i . '</a> ';
                            }

                            ?>

                            </p>

                            <?php
                            // --------------- Etape 3 ---------------
                            // Maintenant, on va afficher les messages
                            // ---------------------------------------

                            if (isset($_GET['page']))
                            {
                                $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
                            }
                            else // La variable n'existe pas, c'est la première fois qu'on charge la page
                            {
                                $page = 1; // On se met sur la page 1 (par défaut)
                            }

                            // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
                            $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

                            $reponse = mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);


                            {
                                echo '<p><gras>' . $donnees['pseudo'] . '</gras> a écrit :<br />' . $donnees['message'] . '</p>';
                            }

                            mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
                            ?>



                            Dans mysql_select_db, tu confond pas les bases de données et les tables ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 novembre 2005 à 13:57:21

                              Regarde la : mysql_query(' UPDATE sessions SET connect="non" WHERE temps="' . $temps . '<temps '"') or die(mysql_error()); // On deconnecte si le temps est dépassé

                              Et si tu mets ca ?
                              mysql_query(' UPDATE sessions SET connect="non" WHERE temps=' . $temps . '<temps ') or die(mysql_error());
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 novembre 2005 à 14:14:23

                                  function verif($temps=time())  {
                                    mysql_query(' UPDATE sessions SET connect="non" WHERE temps="' . $temps . '<temps '"') or die(mysql_error()); // On deconnecte si le temps est dépassé
                                  }


                                Tu vois bien qu'après ce bout là, tout est en rouge, non ?
                                Ca veut dire qu'il y a un problème avec les ' et les ". Il suffit de chercher un petit peu et on voit qu'à la fin il y a trois ' de suite.

                                Pense a regarder la coloration de ton code la prochaine fois.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 novembre 2005 à 17:41:08

                                  Citation : Gnominou

                                  $qery='INSERT INTO sessions VALUES("'.$_SESSION['login'].'","'.time().'+600","oui")';
                                  mysql_query($qery);
                                  $_SESSION['connect']=TRUE;



                                  Juste en passant : c'est normal ton $qery ? ce serait pas mieux $query ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 novembre 2005 à 17:54:34

                                    Re,
                                    bah, ca n'a aucune importance ... le principale c'est que la ligne sql et le query porte le meme nom :D


                                    :p
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 novembre 2005 à 17:57:52

                                      Au fait, le problème avec mon livre d'or, c'est que ça affiche pas le message, ni le pseudo !
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 novembre 2005 à 18:03:21

                                        JaKris, regarde bien ton script ... il ne manque pas quelque chose ?


                                        {
                                            echo '<p><gras>' . $donnees['pseudo'] . '</gras> a écrit :<br />' . $donnees['message'] . '</p>';
                                        }
                                        ?>



                                        While( $donnees = mysql_fetch_assoc($reponse))
                                        {
                                            echo '<p><gras>' . $donnees['pseudo'] . '</gras> a écrit :<br />' . $donnees['message'] . '</p>';
                                        }
                                        ?>
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        qu'est ce qui cloche dans mon script?

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown