Ankündigung

Einklappen
Keine Ankündigung bisher.

probleme mit "setcookie" nach einem "require&a

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • probleme mit "setcookie" nach einem "require&a

    www.test1.de/index.php enthält:

    setcookie('test1', '1', time() + 3600);
    require 'http://www.test2.de/index.php?kuh=muh';


    www.test2.de/index.php enthält:

    setcookie('test2', '1', time() + 3600);

    ____________________
    prob ist, dass cookie test1 zwar gesetzt wird, test2 aber nicht :/
    hat irgendjemand eine ahnung woran das liegt, bzw. wie ich das problem lösen kann ?

    btw... es finden in beiden skripts keine ausgabe statt und ein http header wird nicht explizit geschickt (oder geschieht das maybe durch das require???)

    für hilfe wäre ich echt dankbar :]


  • #2
    error_reporting(E_ALL);

    drinn stehen ?
    wenn ja ... kommt eine Fehlermeldung ?

    wie sieht test2 aus ?

    setcookie('test2', '1', time() + 3600);
    <?php


    also ein klein bissel dürftig sind deine Infos schon ...
    trau dich poste die files ich verspreche es klaut keiner Code

    mfg



    edit:

    nach einem short test
    test.php
    PHP-Code:
    <?php

    setcookie
    ('test1''1'time() + 3600'/'); 

    ?>
    test2.php
    PHP-Code:
    <?php
    setcookie
    ('test2''1'time() + 3600'/'); 
    require_once(
    'test.php');
    ?>
    funktioniert alles ....

    Kommentar


    • #3
      Cookies kannst du nur setzten, wenn noch keine Ausgabe erfolgt ist.
      Genau wie Sessions. Hat mit den Headern zu tun.

      Kommentar


      • #4
        wobei das nur die halbe wahrheit ist ...

        man sehe ... ( buffer )

        test.php
        PHP-Code:
        <?php
        ob_start
        ();

        echo 
        'haaaaalo';

        setcookie('test1''1'time() + 3600'/'); 

        require_once(
        'test2.php');

        echo 
        'noch schnell ein echo';
        ob_end_clean();
        ?>
        test2.php
        PHP-Code:
        <?php

        setcookie
        ('test2''1'time() + 3600'/'); 

        ?>
        * ups und es funktioniert doch

        was man sich bei cookie, header, session handling zu nutze machen kann
        in verbindung mit sinvollem eval .... uiii

        mfg

        Kommentar


        • #5
          Die Output-Buffering-Funktionen sind für sowas eigentlich nicht gedacht. Leider werden diese Funktionen missbraucht, um einen falschen Aufbau des Scriptes auszubügeln, was nämlich genau hier vorliegt. Es gibt bei richtigem Aufbau keinen Grund, vor setcookie, header oder session_start irgendeine Ausgabe zu machen.

          Gruß
          phpfan

          Kommentar


          • #6
            Die Output-Buffering-Funktionen sind für sowas eigentlich nicht gedacht. Leider werden diese Funktionen missbraucht, um einen falschen Aufbau des Scriptes auszubügeln
            da ich den Buffer für Tempplateengine nutze ist es mir recht "egal" ob man an anderen stellen die Nutzung als Missbrauch ansehen könnte

            a) wollt ich in dem Beispiel nur demonstrieren das nicht nur schwarz weiss existiert

            b) wollen wir uns nicht in kleinigkeiten verlieren sonst fangen wir noch an über die Nutzung des Präinkrement ( $var++ ) zu diskutieren


            mfg

            Kommentar


            • #7
              Auzug aus der FAQ .... ( von Kristian Köhntopp )

              sorry aber ich kann beim besten Willen nichts von Missbrauch/falscher Anwendung oder deratigem lesen ...
              und ob jmd. seine Anwendung langsamer erscheinen lassen will oder nicht
              liegt
              a ) am Programmierer
              b ) und b hauptsächlich am Kunden

              Code:
              Output Buffering
              
                  Mit Hilfe der Funktion ob_start() kann eine Ausgabepufferung aktiviert werden. Der Ausgabepuffer wird erst am Ende der PHP-Seite oder mit Hilfe der Funktion ob_end_flush() ausgegeben. Die Funktion ob_end_clean() verwirft den Ausgabepuffer. ob_get_contents() überträgt den Ausgabepuffer in eine Variable.
              
                  Headerinformation wie sie von header() und setcookie() erzeugt wird ist ungepuffert. Indem man Ausgabepufferung aktiviert, kann man überall in der Datei Headerinformationen senden, egal ob vorher schon Ausgabe erzeugt wurde oder nicht. Ausgabepufferung erhöht die Latenzen bei der Ausgabe der Webseite je nach Anwendung erheblich und kann PHP sehr viel langsamer erscheinen lassen.

              Kommentar


              • #8
                Ausgabepufferung erhöht die Latenzen bei der Ausgabe der Webseite je nach Anwendung erheblich und kann PHP sehr viel langsamer erscheinen lassen.
                wenn ich mit ner template engine arbeite brauch ich auch keine ausgaben mitten im script und kann bis zum schluss lustig header senden und cookies setzen ...
                und da es sowieso empfehlenswert ist php code von html ausgaben zu trennen ... bla bla ... eh scho wissen
                schlimmer gehts nimmer.... dümmer immer!

                Kommentar


                • #9
                  Zitat von J33d3X
                  nach einem short test
                  test.php
                  PHP-Code:
                  <?php

                  setcookie
                  ('test1''1'time() + 3600'/'); 

                  ?>
                  test2.php
                  PHP-Code:
                  <?php
                  setcookie
                  ('test2''1'time() + 3600'/'); 
                  require_once(
                  'test.php');
                  ?>
                  funktioniert alles ....
                  du lässt aber beide scripts auf einer domain laufen oder ?
                  ich mache das nämlich nicht... bei mir schauts so aus:

                  test.de/test1.php
                  PHP-Code:
                  <?php

                  setcookie
                  ('test1''1'time() + 3600'/'); // funktioniert
                  require 'http://www.subdomain.test.de/test2.php?kuh=muh';

                  ?>
                  subdomain.test.de/test2.php
                  PHP-Code:
                  <?php

                  setcookie
                  ('test2''1'time() + 3600'/'); // funktioniert nicht

                  ?>

                  Kommentar


                  • #10
                    test2.php ( auf kommplett anderem server )

                    PHP-Code:
                    <?php


                    echo 'setcookie("test2", "1", time() + 3600, "/");'

                    ?>
                    test.php
                    PHP-Code:
                    <?php
                    $re
                    =file_get_contents('http://organiser.swbulletin.de/test2.php');
                    eval(
                    $re);
                    setcookie('test1''1'time() + 3600'/');
                    ?>

                    ups und geht doch ...

                    Kommentar


                    • #11
                      hehe

                      du hast das jetzt natürlich nicht wie ich mit einem require gemacht, sondern mit eval
                      werde das mal ausprobieren... thx so far ^^

                      Kommentar

                      Lädt...
                      X