IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Enregister des informations de session


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut Enregister des informations de session
    Un utilisateur après avoir se loger, il passe souvent des heures à saisir du texte, il risque de perdre ces informations tant qu'il n'a pas confirmé et le temps de la session est écoulé,
    alors je veux enregistrer ces informations en temps réel, alors je demande si quelqu'un peut m'aider comment je peux les enregistrer, et est ce que dans des cookies ou dans la BD c mieux ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Perso, je verrais plutôt de la sauvegarde automatique dans la BdD (avec un peu de JavaScript par exemple, si tu es certain que les utilisateurs l'acceptent).

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    En fait, je suis d'accord avec vous, et j'ai pensé aussi à ajax, de faire invoquer
    le serveur chaque un temps t avant que la session sera terminée, mais techniquement je ne sais pas comment faire.
    si quelqu'un pourras m'aider SVP ?
    Merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Tu peux commencer par lire ceci par exemple
    http://ajax.developpez.com/

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    Est ce que quelqu'un peut m'aider à ce sujet ?
    Merci

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Tu en es où ?
    Qu'est-ce que tu as déjà fait ? (poste le code)
    Qu'est-ce que tu as compris / pas compris dans le lien ci-dessus ?
    ...

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Ajax c'est du Javascript avec en plus la possibilité d'effectuer des requêtes en arrière-plan :
    http://siddh.developpez.com/articles/ajax/

    Pour ma part, je préfère l'utilisation des iframes, c'est plus simple qu'avec l'ActiveXObject je trouve, enfin c'est sûrement une question d'habitude après...
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");

  8. #8
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    Je n'ai pas encore débuté en Ajax... et c urgent !!!!!!!!!
    j'ai besoin d'une fonction qui me permet d'envoyer les données d'un formulaire (d'un textarea) vers une base tout les 20 mn par exemple, avant que la session s'écoule.

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Citation Envoyé par BFdotNET Voir le message
    Je n'ai pas encore débuté en Ajax... et c urgent !!!!!!!!!
    j'ai besoin d'une fonction qui me permet d'envoyer les données d'un formulaire (d'un textarea) vers une base tout les 20 mn par exemple, avant que la session s'écoule.
    Il y a un début à tout

    Google est ton ami dans ce genre de situation :
    http://www.google.ca/search?hl=en&q=...e+Search&meta=

  10. #10
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Dans une iframe cachée, tu récupères le contenu de ton textarea et tu le postes vers le code PHP d'enregistrement. La fonction Javascript SetTimeOut s'occupera de poster le formulaire caché régulièrement. Voici une démo pour illustrer le principe :
    Ton formulaire de base :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" action="traitement.php">
    <textarea name="mytext" id="mytext" rows="7" cols="5">
    </textarea>
    <input type="submit"/>
    </form>
    Dans ce même script, tu ajoutes simplement l'iframe masquée :
    Note: Tu peux mettre le style de l'iframe en position absolute si elle te gène dans ta mise en page...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <iframe name="myiframe" src="iframe.php"
     frameborder="1" marginwidth="0" marginheight="0" hspace="0" vspace="0" 
     width="0px" height="0px" top="0px" scrolling="no"></iframe>

    Dans le script nommé iframe.php, Javascript va s'occuper de copier le contenu du textarea vers le champs caché "datas" et de poster le formulaire toutes les 5 secondes par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    if(isset($_POST['datas'])){
     
      // Enregistre ici les données en base.
      // Ce code est un exemple pour te montrer comment récupérer les données :
      echo nl2br(htmlspecialchars($_POST['datas']));
    }
    ?>
     
    <form method="post">
    <input type="hidden" name="datas" id="datas"/>
    </form>
     
    <script type="text/javascript">
     function mypost(){
       var text=window.parent.document.getElementById("mytext").value;
       document.getElementById("datas").value=text;
       document.forms[0].submit();
     }
     setTimeout("mypost()",5000);
    </script>
    Si tu veux voir le truc fonctionner, il suffira de modifier les dimensions de l'iframe pour vérifier que les données sont bien affichées dedans et actualisées toutes les 5 secondes...


    [EDIT] Cette solution est une alternative à l'ActiveXObject. C'est à peu près ce principe que j'ai utilisé pour cette démo. Vous êtes prévenus maintenant qu'il est tout à fait possible qu'un site récupère votre message sans que vous ayez cliqué sur le bouton "envoyer".

  11. #11
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Je viens de voir une autre solution;
    L'utilisation et la gestion des cookies avec Javascript :

    Cela devrait simplifier les choses pour ton projet...

  12. #12
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    Merci, pour votre aide , mais suite à la documentation ajax, j'ai préferé d'utiliser AJAX , et ça bien marché en créant une fonction javascript qui permet de faire un appel asynchrone tout les n minutes.

    Voici par exmple le fichier ajax.js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    var xmlhttp = false ;
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
    {
      try {
        xmlhttp = new XMLHttpRequest ();
      }
      catch (e) {
      xmlhttp = false}
    }
     
    function myXMLHttpRequest ()
    {
      var xmlhttplocal;
      try {
          xmlhttplocal = new ActiveXObject ("Msxml2.XMLHTTP")}
      catch (e) {
        try {
        xmlhttplocal = new ActiveXObject ("Microsoft.XMLHTTP")}
        catch (E) {
          xmlhttplocal = false;
        }
      }
     
      if (!xmlhttplocal && typeof XMLHttpRequest != 'undefined') {
        try {
          var xmlhttplocal = new XMLHttpRequest ();
        }
        catch (e) {
          var xmlhttplocal = false;
        }
      }
      return (xmlhttplocal);
    }
     
    var mnmxmlhttp = Array ();
    var mnmString = Array ();
    var mnmPrevColor = Array ();
    var responsestring = Array ();
    var myxmlhttp = Array ();
    var responseString = new String;
     
     
    var i=0;
    var ii = 0;
     
    function ajax_update()
    {
         url = "TestAjax.php";
        target2 = document.getElementById ('content');
     
        ii = i++;
     
        var content = "i=" + ii ;
     
        mnmxmlhttp = new myXMLHttpRequest ();
        if (mnmxmlhttp) {
                mnmxmlhttp.open ("POST", url, true);
                mnmxmlhttp.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
     
                mnmxmlhttp.send (content);
                errormatch = new RegExp ("^ERROR:");
     
                target2 = document.getElementById('content');
     
     
                mnmxmlhttp.onreadystatechange = function () {
                    if (mnmxmlhttp.readyState == 4) {
                        mnmString = mnmxmlhttp.responseText;
     
                        if (mnmString.match (errormatch)) {
                            mnmString = mnmString.substring (6, mnmString.length);
     
                            target = document.getElementById ('content');
                            target2.innerHTML = mnmString;
     
                        } else {
                            target = document.getElementById ('content');
                            target2.innerHTML = mnmString;
     
                        }
                    }
                }
            }
     
        //5000 en milliseconde
        setTimeout('ajax_update()', 5000);
     
    }

    et dans le fichier TestAjax.php:
    - Dans le load du body on fait appel à la fct a ajax_update()
    - Puis pour voir et tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($_POST) {
        echo '<pre>';
        echo htmlspecialchars(print_r($_POST, true));
        echo '</pre>';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/04/2009, 23h00
  2. Réponses: 0
    Dernier message: 26/02/2009, 13h04
  3. Réponses: 3
    Dernier message: 15/06/2006, 15h58
  4. Comment récuperer des informations d'un .swf (flash) ?
    Par diado dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 12/01/2004, 21h32
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo