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

Langage PHP Discussion :

envoi d'un cookie en milieu de page


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut envoi d'un cookie en milieu de page
    Bonsoir,

    je voudrais n'envoyer un cookie qu'en milieu d'une page, après avoir fait un test ; comme je sais qu'il faut le placer en tout début de page, j'ai voulu insérer dans la page qui contient le test une iframe avec le fichier PHP qui envoie le cookie. Mais ça ne marche pas : comment faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    ce qu'il faut faire c'est séparer les calculs de l'affichage
    comme ça dans un 1er temps tu fais les calculs, les tests et l'envoi de cookie et ensuite dans un 2e temps tu fais l'affichage de la page
    GNAP !

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci, ça a marché ;en gros, j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ?>
    <iframe src="action_seconnecter2.php" width="0" height="0"></iframe>
    <?php
     
    $sql='update `login` set `connecte`=1 where login="'.$login.'"';
    $result1 = mysql_query($sql) or die(mysql_error());
    echo "Vous &ecirc;tes connect&eacute<br>";
    où l'envoi de cookie est dans "action_seconnecter2.php", mais si je mettais la 2e partie (de $sql=...à l'echo) dans une seconde iframe, celle-ci n'étais pas exécutée...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    nosferapti t'a donné la solution,
    Puisque ton PHP finira par envoyer un html au visiteur, tu peux faire tout tes test même si cela fait 100 lignes, puis creer ton cookies
    Et la tu commences tes ECHO ou en fermant ?>
    directement ton html !

    Mais fais trés attention aux IFRAMES déjas certains prudents interdisent javascript, mais encore plus de visiteurs n'affichent plus les IFRAMES
    là ou sont les pub, les trojan et surtout une fuite immédiate de ta session.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    OK pour l'averto, mais à part une iframe, je ne vois pas d'autre solution...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Invité
    Invité(e)
    Par défaut
    Mais si tu donnes l'Url ou mieux le PHP complet de ta page on pourrait t'aider

    Je ne connais pas de cas ou un IFRAME ne soit incontournable

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    OK,

    voici la fonction qui contient l'iframe :
    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
    function seconnecter()
    {
    ?><a href="index1.php">Retour au forum</a><br><br><?php
    $id_conn = connect();
     
    $login=stripslashes($_POST['login']);
    $pwd=stripslashes($_POST['pwd']);
     
    $pwd=md5($pwd);
     
    if ($_SESSION["connecte"]==1)
        {echo "Vous êtes d&eacute;j&agrave; connect&eacute;";
    	 }
    else	{
    $OK=0;
    $sql="select login,pwd from `login`";
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
     
     while ($ligne=mysql_fetch_array($result,MYSQL_NUM))
     {
    if (($ligne[0]==$login)&&($ligne[1]==$pwd))
    {
    ?>
    <iframe src="action_seconnecter2.php" width="0" height="0"></iframe>
    <?php
     
    $sql='update `login` set `connecte`=1 where login="'.$login.'"';
    $result1 = mysql_query($sql) or die(mysql_error());
    echo "Vous &ecirc;tes connect&eacute<br>";
     
    $OK=1;
    } 
    }
    if ($OK==0) echo "pseudo ou mot de passe incorrect ";
    }
    close($id_conn);
     
    }
    ?>
    (Rien en début de fichier) et ce que j'ai mis au début de la page qui appelle cette fonction (le reste n'a aucun intérêt) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php session_start();if (! $_COOKIE["connecte"]) { $connecte=0; /*setcookie("connecte","true",time()+3214080000);*/} else $connecte=1;$_SESSION["connecte"]=$connecte;
    if (!$_COOKIE["login"]) { setcookie("login",$_POST['login'],time()+3214080000);} ?>
    et le fichier contenu dans l'iframe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php  session_start(); setcookie("connecte","true",time()+3214080000);
    setcookie("login",$_SESSION["login"],time()+3214080000);
     ?>
    S'il y a une solution, ça m'intéresse.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    ce qu'il faut faire c'est séparer les calculs de l'affichage
    comme ça dans un 1er temps tu fais les calculs, les tests et l'envoi de cookie et ensuite dans un 2e temps tu fais l'affichage de la page
    quand j'ai écrit ce message je ne pensais pas l'iframe

    tu peux mettre directement la fonction "setcookie" dans la fonction "seconnecter"
    ensuite tu sors l'affichage du lien et les "echo" de la fonction "seconnecter" et tu fais tout cet affichage après l'appel de "seconnecter"
    GNAP !

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Pourquoi changer un truc qui marche ? De plus l'echo est contenu dans une boucle while (cf ci-dessus), donc ça ne serait pas facile à faire...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    OK,
    S'il y a une solution, ça m'intéresse.
    Oh oui elle saute aux yeux
    je reprends ton extrait , a toi de transposer ailleur

    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
     
    function seconnecter()
    {
    ?><a href="index1.php">Retour au forum</a><br><br><?php
    $id_conn = connect();
     
    $login=stripslashes($_POST['login']);
    $pwd=stripslashes($_POST['pwd']);
     
    $pwd=md5($pwd);
     
    if ($_SESSION["connecte"]==1)
        {echo "Vous êtes d&eacute;j&agrave; connect&eacute;";
    	 }
    else	{
    $OK=0;
    $sql="select login,pwd from `login`";
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
     
     while ($ligne=mysql_fetch_array($result,MYSQL_NUM))
     {
    if (($ligne[0]==$login)&&($ligne[1]==$pwd))
    {
     
    include("action_seconnecter2.php");
     
    $sql='update `login` set `connecte`=1 where login="'.$login.'"';
    $result1 = mysql_query($sql) or die(mysql_error());
    echo "Vous &ecirc;tes connect&eacute<br>";
     
    $OK=1;
    } 
    }
    if ($OK==0) echo "pseudo ou mot de passe incorrect ";
    }
    close($id_conn);
     
    }
    ?>
    MAIS ATTENTION
    le PHP include n'as pas de session_start(); si c'est déjas présent au début du PHP principal

  11. #11
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Pourquoi changer un truc qui marche ?
    justement ça ne fonctionne pas c'est pour ça que tu nous demandes notre avis, non ?
    mais ensuite si tu n'essayes pas ce qu'on te propose, je ne vois pas comment on peut t'aider
    GNAP !

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Si "action_seconnecter2.php" contient bien session_start() (cf ci-dessous), mais le fait de faire un include ne revient-il pas au même que si je mettais à la place le code en ligne : donc l'appel à setcookie serait en plein milieu de la page...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    justement ça ne fonctionne pas c'est pour ça que tu nous demandes notre avis, non ?
    mais ensuite si tu n'essayes pas ce qu'on te propose, je ne vois pas comment on peut t'aider
    Si en ayant utilisé ce que tu avais proposé, ça marchait () mais essayer la nouvelle proposition est loin d'être évident.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Si "action_seconnecter2.php" contient bien session_start() (cf ci-dessous), mais le fait de faire un include ne revient-il pas au même que si je mettais à la place le code en ligne : donc l'appel à setcookie serait en plein milieu de la page...
    Escuses moi mais je dois te souligner quelques points
    IFRAME te cache ton vrais probléme, puisqu'il évite une erreur de doublon de cookies !

    Alors regardes calmement ton probléme.
    La régle fondamental des sessions est UN ID et UN Cookies de session par PHP
    Donc impossible dans une boucle !! car dans le deuxiéme passage de ta boucle il y aura arret !

    OUI MAIS SAUF AVEC IFRAME car il te créeras autant de Cookies de domaine que de IFRAME, les valeurs ne pouvant pas pour autant communiquer entre elles

  15. #15
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci pour tes remarques, mais en fait, je ne crois pas qu'il puisse y avoir un problème : la boucle sert à balayer toutes les lignes d'une table MySQL, mais en fait il est impossible (je l'ai interdit avec mon code) qu'il y ait 2 logins identiques, donc il n'y aura au plus qu'un seul cookie...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Merci pour tes remarques, mais en fait, je ne crois pas qu'il puisse y avoir un problème : la boucle sert à balayer toutes les lignes d'une table MySQL, mais en fait il est impossible (je l'ai interdit avec mon code) qu'il y ait 2 logins identiques, donc il n'y aura au plus qu'un seul cookie...
    Oui bien sur j'avais vu qu'il y avait controle du user donc un seul,
    mais veux tu me faire plaisir, et tester ma version (include),
    en virant juste la ligne session_start(); de l'include !

    Je réédites pour parler d'un point ou tu n'as pas eu de réponse
    le session_start(); ou dans un autre domaine la gestion des cookies de données, peuvent étre a la ligne 3000 ... si avant aucun html n'as été envoyé,

    Et tu sais je supposes qu'en tête d'un PHP le
    <?PHP doit étre collé au bord et en haut !!

  17. #17
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'ai viré le session_start() de la fonction "action_seconnecter2.php" vu qu'il ne sert à rien (surtout que la page dans laquelle se trouve l'appel à cette fonction contient un session_start() au début (qui, lui, est utile)).
    Sinon, j'ai remplacé l'iframe par le include mais ai dû revenir en arrière, car visiblement, il n'aimait pas qu'on envoie un cookie en milieu de page (surtout qu'il y a du html avant)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    J'ai viré le session_start() de la fonction "action_seconnecter2.php" vu qu'il ne sert à rien (surtout que la page dans laquelle se trouve l'appel à cette fonction contient un session_start() au début (qui, lui, est utile)).
    Sinon, j'ai remplacé l'iframe par le include mais ai dû revenir en arrière, car visiblement, il n'aimait pas qu'on envoie un cookie en milieu de page (surtout qu'il y a du html avant)
    Je n'en reviens pas, tu as lu OUI OU NON ?
    c'est dans l'include qu'il faut retirer la session !
    mais bien sur tu peux y manier toutes tes valeurs de session !! ça n'a rien a voir.

    C'est incroyable le nombre de visiteurs qui demande de l' aide et font autrement

  19. #19
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Mais c'est bien dans l'include que j'avais viré session_start(), vu que l'include portait sur action_seconnecter2.php.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Mais c'est bien dans l'include que j'avais viré session_start(), vu que l'include portait sur action_seconnecter2.php.
    J'ais l'impression que si nous avions toute la page PHP y compris ses includes, on pourrait trés vite résoudre ton affaire,
    (bien sur en masquant tes MDP etc... )
    moi je suis pret a y passer un bon moment si tu veux , vu que je suis
    bloqué au lit

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Cookies] Erreur cookie php milieu de page chez Free
    Par fabiofabio dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2008, 15h30
  2. Figure en milieu de page, comment la remonter ?
    Par enneite dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 6
    Dernier message: 24/11/2007, 19h01
  3. Réponses: 7
    Dernier message: 20/02/2007, 13h22
  4. Lancer une fonction js en milieu de page
    Par Anonymus dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2007, 10h08
  5. Réponses: 15
    Dernier message: 02/03/2006, 15h34

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