Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1535 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  aide pour ob_start , setcookie et ob_end_flush();

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide pour ob_start , setcookie et ob_end_flush();

n°1058278
jj59
Posté le 23-04-2005 à 23:52:02  profilanswer
 

Bonjour  
Quelqu'un peut il m'aider pour l'utilisation des fonctions ob_start et ob_end_flush()??
 
je les utilise pour pour eviter les problemes de headers liés a la fonction setcookie
 
voici mon code :
 
au debut de ma page PHP j'ai le code suivant
 
<?php
      function cookie1()
      {    
      setcookie('telechargement',$_POST['logincreateur'],null);      
      }    
       
      function cookie2()
      {  
       $req = "SELECT uploader_id FROM uploader WHERE uploader_login ='$pseudo' AND  uploader_pwd='$mdp';";
       $exec = mysql_query($req);
       $result = mysql_fetch_array($exec);
                 
       setcookie('telechargement2',$result[0],null);  
      }
       
?>
 
 
et j'appelle les fonctions (plus loin dans le code HTML) de la façon suivante
 
       ob_start("cookie1" );
       ob_end_flush();
       ob_start("cookie2" );
       ob_end_flush();
 
Probleme, sa ne marche pas
Quelqu'un peut il m'aider ???
 
merci pour l'aide

mood
Publicité
Posté le 23-04-2005 à 23:52:02  profilanswer
 

n°1058331
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 24-04-2005 à 00:24:58  profilanswer
 

Je ne comprends pas ton utilisation d'ob_start.
Tu le mets une fois au tout début du script, tu mets la terminaison tout à la fin du code PHP (si la suite n'est que du HTML, cela n'a pas grande importance qu'il soit avant ou après).
ob_start(); (plusieurs options peuvent être logés entre les parenthèses, je te laisse découvrir ça).
 
---
Ton script.
---
 
ob_end_flush();

n°1058509
jj59
Posté le 24-04-2005 à 12:08:19  profilanswer
 

en fait voici ou j'en suis actuellement :
 
      <?php
          ob_start();
           
          if($_POST['pwdcreateur'] == NULL )
          {
            echo "aucun mot de passe trouvé, vous n'êtes pas identifié sur le site";      
          }    
           
          else if($_POST['logincreateur'] == NULL )
          {
            echo "aucun login trouvé, vous n'êtes pas identifié sur le site";
          }
           
          else  
          {
           
           include("../ressources/fonction.php" );
           connexion();
               
           $pseudo = $_REQUEST['logincreateur'];
           $mdp = $_REQUEST['pwdcreateur'];
           
           $query2 = "SELECT date_banni FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
           $result2 = mysql_query($query2);
           $row = mysql_fetch_row($result2);
           
           
           if ($row[0] > date('Y-m-d', time()))
           {
            echo 'Vous avez été banni de ce site pour une durée de 15 jours';
            echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../Acceuil.html"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
           }
           
           else if($row[0] == date('Y-m-d', "1970-01-01" ))
           {
            echo 'Vous avez été banni de ce site';
            echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../Acceuil.html"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
           }
           
           else
           {
           
                setcookie('telechargement',$_POST['logincreateur'],null);              
                 
                // creation du cookie avec l'id de la personne venant d'etre crée => Pour savoir qui a mit l'application en Upload
                $req = "SELECT uploader_id FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
                $exec = mysql_query($req);
                $result = mysql_fetch_array($exec);
                 
                setcookie('telechargement2',$result[0],null);  
                 
               if ($result2)
               {
                echo "Vous êtes identifié, vous pouvez à présent mettre à disposition des applications sur notre site.";
                echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../identifie/Acceuil.php"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
               }
     
               else
               {
                echo "L'identification est incorrecte, vérifiez que vous êtes bien inscrit sur le site ou que vous avez correctement remplit le formulaire d'identification.";
                 echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."Identification.html"."><input type="."submit"." value="."Retour"." /></form>".
                "</div>";
               }
     
              mysql_close();
           }
          }  
          ?>
           
<!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" lang="fr">
 
 
  <head>
    <title>
      site de Téléchargement
    </title>    
  </head>
   
   
  <body>
   
    <div id="barre-de-menu">
      <img src="../ressources/ligne.png" alt="ligne"/>
       <?php ob_end_flush();?>
      <p></p>  
    </div>
 
 
mais sa ne marche toujour pas
merci pour ton aide

n°1058549
cerel
Posté le 24-04-2005 à 13:06:21  profilanswer
 

En voyant ton code on constate plusieurs problemes :
-tu n'as pas bien compris comment fonctionne ob_start et ob_flush.
-stocker les mdp en clair dans la base de donnees c'est mal
-avec ton code dans l'etat actuel des choses, dans certains cas tu va avoir du texte avant le debut de ton html. Donc du coup ta page ne sera pas valide.
-tu m'expliques le coup du

Code :
  1. echo "<div id="."bouton-retour".">"

J'ai du rater un episode. Pourquoi tu fais

Code :
  1. id="."bouton-retour"."

cela revient strictement au meme que de faire

Code :
  1. id=bouton-retour

Si tu veux metre des ", tu dois les echaper :

Code :
  1. echo "<div id=\"bouton-retour\" ...";


-

Code :
  1. if($row[0] == date('Y-m-d', "1970-01-01" ))

Personnellement j'eviterais ce genre de choses.
-Pourquoi utilises-tu un formulaire bidon pour rediriger tes visiteurs ?
-as-tu pris en compte les attaques de type "sql-injection" ?
 
Va voir le manuel : http://www.php.net/ob_start


Message édité par cerel le 24-04-2005 à 13:17:22
n°1058652
jj59
Posté le 24-04-2005 à 15:28:26  profilanswer
 

ba en fait c la 1er foi que je fais un site web
mon but n'est pas trop de faire un site hyper securisé.
je developpe pas le site du FBI lol
 
mais il est clair que les histoires de ob_start et ob_flush, je ne comprend pas trop
 
meme avec le manuel
 
merci pour l'aide

n°1058725
naceroth
Posté le 24-04-2005 à 16:30:07  profilanswer
 

Y a rien de particulier à comprendre :)
 
Par défaut, le serveur envoit ses infos au navigateur dès qu'elles sont disponibles. Avec les buffers, tu bloques cet envoi en disant "tout ce qu'il y a après le ob_start, tu ne l'envois que quand je te dis ob_flush (ou une de ses variantes)".
 
Donc, tu peux parfaitement executer plusieurs fonctions dans le bloc ob_start/ob_flush, par exemple

Code :
  1. ob_start(); // je bloque l'envoi
  2. cookie1(); // je crée un cookie
  3. cookie2(); // je crée un autre cookie
  4. ob_end_flush(); // j'envoie mon bloc au navigateur


 
Faut juste que tu comprennes bien que dès que tu fais un ob_flush, tu envois quelque chose au navigateur.
 
Les fonctions de callback et les ob_start imbriqués, bon, tu n'en as pas encore l'utilité.

n°1058745
jj59
Posté le 24-04-2005 à 16:38:36  profilanswer
 

j'ai essayé un truc mais sa ne marche toujour pas, toujours la meme erreur, "cannot modify headers ..."
 
Voici mon code actuel :
 
  <body>
   
    <div id="barre-de-menu">
      <img src="../ressources/ligne.png" alt="ligne"/>
      <p></p>  
      <?php
           
          if($_POST['pwdcreateur'] == NULL )
          {
            echo "aucun mot de passe trouvé, vous n'êtes pas identifié sur le site";      
          }    
           
          else if($_POST['logincreateur'] == NULL )
          {
            echo "aucun login trouvé, vous n'êtes pas identifié sur le site";
          }
           
          else  
          {
           
           include("../ressources/fonction.php" );
           connexion();
               
           $pseudo = $_REQUEST['logincreateur'];
           $mdp = $_REQUEST['pwdcreateur'];
           
           $query2 = "SELECT date_banni FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
           $result2 = mysql_query($query2);
           $row = mysql_fetch_row($result2);
           
           
           if ($row[0] > date('Y-m-d', time()))
           {
            echo 'Vous avez été banni de ce site pour une durée de 15 jours';
            echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../Acceuil.html"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
           }
           
           else if($row[0] == date('Y-m-d', "1970-01-01" ))
           {
            echo 'Vous avez été banni de ce site';
            echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../Acceuil.html"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
           }
           
           else
           {
                ob_start();
                setcookie('telechargement',$_POST['logincreateur'],null);              
                 
                $req = "SELECT uploader_id FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
                $exec = mysql_query($req);
                $result = mysql_fetch_array($exec);
                 
                setcookie('telechargement2',$result[0],null);  
                ob_end_flush();  
                 
               if ($result2)
               {
                echo "Vous êtes identifié, vous pouvez à présent mettre à disposition des applications sur notre site.";
                echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../identifie/Acceuil.php"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
               }
     
               else
               {
                echo "L'identification est incorrecte, vérifiez que vous êtes bien inscrit sur le site ou que vous avez correctement remplit le formulaire d'identification.";
                 echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."Identification.html"."><input type="."submit"." value="."Retour"." /></form>".
                "</div>";
               }
     
              mysql_close();
           }
          }  
          ?>
     
   </div>
 
merci beaucoup pour ton aide, elle m'est tres utile ;-)

n°1058757
naceroth
Posté le 24-04-2005 à 16:50:30  profilanswer
 

Ouais, enfin, elle le serait encore plus si j'étais compris :D
 
En l'occurence, tu ne dois pas envoyer quoique ce soit au navigateur avant ton cookie, rien, nada, et donc sûrement pas une balise HTML :D
 
Ton ob_start doit être la toute première ligne de ton fichier, il doit rien y avoir avant, même pas un espace :)
 
Et corrige les erreurs que t'as signalés Cerel tant que tu y es :)

n°1058763
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 24-04-2005 à 16:58:19  profilanswer
 

naceroth a écrit :


Ton ob_start doit être la toute première ligne de ton fichier, il doit rien y avoir avant, même pas un espace :)


Si, quand même <?php
 
:D

n°1058764
naceroth
Posté le 24-04-2005 à 16:58:59  profilanswer
 

The-Shadow a écrit :

Si, quand même <?php
 
:D


 
Ouais, bon :D

mood
Publicité
Posté le 24-04-2005 à 16:58:59  profilanswer
 

n°1058767
jj59
Posté le 24-04-2005 à 17:02:24  profilanswer
 

oui ok
sa marche j'ai plus d'erreur
 
le seul probleme est que les cookie ne sont pas envoyés :-(
 
voici le code actuel :
 
<?php
ob_start();
function cookie1()
{
  setcookie('telechargement',$_POST['logincreateur'],null);      
}
 
function cookie2()
{
  $req = "SELECT uploader_id FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
  $exec = mysql_query($req);
  $result = mysql_fetch_array($exec);          
  setcookie('telechargement2',$result[0],null);  
}
?>
<!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" lang="fr">
 
 
  <head>
    <title>
      site de Téléchargement
    </title>
  </head>
   
   
  <body>
   
    <div id="barre-de-menu">
      <img src="../ressources/ligne.png" alt="ligne"/>
      <p></p>  
      <?php
           
          if($_POST['pwdcreateur'] == NULL )
          {
            echo "aucun mot de passe trouvé, vous n'êtes pas identifié sur le site";      
          }    
           
          else if($_POST['logincreateur'] == NULL )
          {
            echo "aucun login trouvé, vous n'êtes pas identifié sur le site";
          }
           
          else  
          {
           
           include("../ressources/fonction.php" );
           connexion();
               
           $pseudo = $_REQUEST['logincreateur'];
           $mdp = $_REQUEST['pwdcreateur'];
           
           $query2 = "SELECT date_banni FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
           $result2 = mysql_query($query2);
           $row = mysql_fetch_row($result2);
           
           
           if ($row[0] > date('Y-m-d', time()))
           {
            echo 'Vous avez été banni de ce site pour une durée de 15 jours';
            echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../Acceuil.html"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
           }
           
           else if($row[0] == date('Y-m-d', "1970-01-01" ))
           {
            echo 'Vous avez été banni de ce site';
            echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../Acceuil.html"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
           }
           
           else
           {
                cookie1();
                cookie2();                
                ob_end_flush();  
                 
                $req = "SELECT uploader_id FROM uploader WHERE uploader_login ='$pseudo' AND uploader_pwd='$mdp';";
                $exec = mysql_query($req);
                $result = mysql_fetch_array($exec);
 
               if ($result2)
               {
                echo "Vous êtes identifié, vous pouvez à présent mettre à disposition des applications sur notre site.";
                echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."../identifie/Acceuil.php"."><input type="."submit"." value="."OK"." /></form>".
                "</div>";
               }
     
               else
               {
                echo "L'identification est incorrecte, vérifiez que vous êtes bien inscrit sur le site ou que vous avez correctement remplit le formulaire d'identification.";
                 echo "<div id="."bouton-retour".">".
                  "<form methode="."post"." action="."Identification.html"."><input type="."submit"." value="."Retour"." /></form>".
                "</div>";
               }
     
              mysql_close();
           }
          }  
          ?>
     
   </div>
 
   

n°1058896
jj59
Posté le 24-04-2005 à 19:25:25  profilanswer
 

le probleme ne vien pas des ob_start et ob_flush
 
quand je fais un $_COOKIE['telechargement'] sur la meme page d'envoi de mes cookie, il affiche bien les resultats
 
mais lorsque je l'utilise sur des autres pages, sa n'affiche rien (comme si le contenu du cookie été vide)

n°1058917
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 24-04-2005 à 19:43:29  profilanswer
 

Dans setcookie, indiques-tu bien la date de validité du cookies ?  

n°1059030
yoyo354
Yoyo, le roi du ...
Posté le 24-04-2005 à 21:17:34  profilanswer
 

Indiques-tu bien également le répertoire du cookies ?


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
n°1059034
jj59
Posté le 24-04-2005 à 21:20:18  profilanswer
 

pour la date d'expiration du cookie , j'ai mit null (Ai je le droit ??) apparament sa marche
 
Quand au reperoire du cookie, je sais pas quoi ou je dois le ranger
 
peux tu m'eclairer à ce sujet ?
 
merci beaucoup pour votre aide

n°1059035
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 24-04-2005 à 21:21:44  profilanswer
 

jj59 a écrit :

pour la date d'expiration du cookie , j'ai mit null (Ai je le droit ??) apparament sa marche
 
Quand au reperoire du cookie, je sais pas quoi ou je dois le ranger
 
peux tu m'eclairer à ce sujet ?
 
merci beaucoup pour votre aide


Ne pas mettre de date de validité dans un setcookie correspond à vouloir l'effacer. Le répertoire, tu n'y touches pas, ainsi ton cookies sera stocké pour ton URL.

n°1059043
jj59
Posté le 24-04-2005 à 21:30:14  profilanswer
 

meme quand je fais un :
 
setcookie('telechargement',$_POST['logincreateur'],time()+3600);      
 
sa ne marche pas, le cookie parait toujour vide

n°1059046
yoyo354
Yoyo, le roi du ...
Posté le 24-04-2005 à 21:32:21  profilanswer
 

jj59, fais-tu les tests en local ou sur un site internet accessible ?
 
EDIT : ortograf


Message édité par yoyo354 le 24-04-2005 à 21:33:06

---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
n°1059050
jj59
Posté le 24-04-2005 à 21:33:40  profilanswer
 

sur un site internet accessible
 
en local mon site marchais nikel, et depuis qu'il est en ligne, j'ai ces problemes liées aux cookie

n°1060449
jj59
Posté le 25-04-2005 à 21:13:00  profilanswer
 

quelqu'un peut il m'aider pour mon probleme.  
Le $_COOKIE est vide sur une page, il n'affiche rien
Alors que si je le met sur la meme page d'envoi des cookie (sur la page ou il y a les setcookie), il m'affiche bien le resultat
 
merci pour l'aide

n°1060469
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 25-04-2005 à 21:20:59  profilanswer
 

La page sur lequel tu récupères le $_cookie est bien exactement dans le même répertoire que la page qui l'enregistre ? (Je demande, on sait jamais)

n°1060478
jj59
Posté le 25-04-2005 à 21:25:03  profilanswer
 

euuuuuh c imperatif sa ???
 
parce qu'en fait non  
existe t'il un moyen de contourner le probleme ?

n°1060485
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 25-04-2005 à 21:26:28  profilanswer
 

jj59 a écrit :

euuuuuh c imperatif sa ???
 
parce qu'en fait non  
existe t'il un moyen de contourner le probleme ?


Déjà, met ta page au même niveau, test, si ça fonctionne, ça viendra donc de là et le problème ne sera plus le même. Ne cherche pas une solution à un problème tant que ton nouveau problème n'est qu'une supposition.

n°1060521
jj59
Posté le 25-04-2005 à 21:37:40  profilanswer
 

euh oui tu as raison, le probleme vien de la
sa fonctionne quand je le met dans le meme repertoire
 
Comment dois je faire pour lever le probleme sans devoir tout mettre dans le meme repertoire ?
 
merci pour ton aide

n°1060565
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 25-04-2005 à 22:01:35  profilanswer
 

jj59 a écrit :

euh oui tu as raison, le probleme vien de la
sa fonctionne quand je le met dans le meme repertoire
 
Comment dois je faire pour lever le probleme sans devoir tout mettre dans le meme repertoire ?
 
merci pour ton aide


Je te renvoie sur la doc de setcookie http://www.nexen.net/docs/php/anno [...] en=cookies
 
Mais sache que tout n'est pas possible avec des cookies et c'est tant mieux pour le respect de la vie privée.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  aide pour ob_start , setcookie et ob_end_flush();

 

Sujets relatifs
Aide pour Programme de génération aléatoire de texte (Noob)Aide sur une erreur
VBA & Combobox - besoin d'aide -[C++] Aide pour interface graphique
Aide sur les tableaux à plusieurs dimensionsavoir une aide en programmation java
Pour crer un groupe d'entre-aideurgent, svp, j'ai besoin de l'aide sur ce programme en c
debutant aide script SCP SFTPinterroger une BDD Oracle à l'aide de C
Plus de sujets relatifs à : aide pour ob_start , setcookie et ob_end_flush();


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR