php header problem

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

  • php header problem

    hallo,
    ich habe eine download-seite, bei der per fpassthru die downloads gestartet werden, dazu muss ich
    PHP-Code:
    header("Content-Disposition: attachment; 
    setzen, dass das fpassthru auch als file ausgibt und net nur text
    der download wird nur gestartet wenn ne if-abfrage positiv verläuft, sonst soll per echo text ausgegeben werden. und da is das problem: wegen dem oben gesetzten header wird das echo auch als file ausgegeben...
    wie kann ich das verhindern?
    lg papanoah

  • #2
    Indem du den Header erst sendest, wenn schon feststeht, was beim If rauskommt?

    Kommentar


    • #3
      Re: php header problem

      strukturiere deinen code vernünftig ... mehr kann man so wohl kaum dazu schreiben.
      Kissolino.com

      Kommentar


      • #4
        Original geschrieben von onemorenerd
        Indem du den Header erst sendest, wenn schon feststeht, was beim If rauskommt?
        hab ich schon probiert, funktioniert irgendwie net...
        lg papanoah

        Kommentar


        • #5
          na dann zeig uns doch mal 'wie' du es versucht hast.... und aus den Wörtern 'funktioniert irgendwie net...' wird auch beim 10.000sten Versuch keine vernünftige Fehlerbeschreibung
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            PHP-Code:
            <?
            /*/
            Download a file using fpassthru()
            /*/
            $fileDir = "/home/pathto/myfiles"; // supply a path name.
            $fileName = "myfile.zip"; // supply a file name.
            $fileString=$fileDir.'/'.$fileName; // combine the path and file
            // translate file name properly for Internet Explorer.
            if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")){
              $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
            }
            // make sure the file exists before sending headers
            if(!$fdl=@fopen($fileString,'r')){
               die("Cannot Open File!");
            } else {
              header("Cache-Control: ");// leave blank to avoid IE errors
              header("Pragma: ");// leave blank to avoid IE errors
              header("Content-type: application/octet-stream");
              header("Content-Disposition: attachment; filename=\"".$fileName."\"");
              header("Content-length:".(string)(filesize($fileString)));
               sleep(1);
               fpassthru($fdl);
            }
            ?>
            so wird der download gestartet...
            da is dann noch ne if abfrage die guckt ob ein slot offen is, wenn ja dann startet der download (das geht noch); wenn kein slot offen is, dann wird per echo was ausgegeben, aber das landet dann net auf der seite sondern ein download wird gestartet mit dem filenamen des files, und in diesem file steht dann die error-message, ziemlich komisch also, ich glaube das liegt an dem header-zeug, da wird irgendwie definiert dass jede ausgabe als download gestartet wird denk ich, kann man das irgendwie rückgängig machen falls die if abfrage negativ verläuft, also kein slot frei is?
            danke für jede hilfe!
            lg papanoah
            Zuletzt geändert von Papa_Noah; 02.11.2005, 16:41.

            Kommentar


            • #7
              weiß keiner rat??
              wäre wichtig
              lg papanoah

              Kommentar


              • #8
                Original geschrieben von Papa_Noah
                da is dann noch ne if abfrage die guckt ob ein slot offen is, wenn ja dann startet der download (das geht noch); wenn kein slot offen is, dann wird per echo was ausgegeben, aber das landet dann net auf der seite sondern ein download wird gestartet mit dem filenamen des files, und in diesem file steht dann die error-message, ...
                Original geschrieben von mir selbst
                Indem du den Header erst sendest, wenn schon feststeht, was beim If rauskommt?

                Kommentar


                • #9
                  Original geschrieben von Papa_Noah
                  ... da is dann noch ne if abfrage die guckt ob ein slot offen is, wenn ja dann startet der download (das geht noch); wenn kein slot offen is, dann wird per echo was ausgegeben, aber das landet dann net auf der seite sondern ein download wird gestartet ...
                  dann benutze die() anstatt echo. im fehlerfall steigt das script dann an der stelle aus.
                  Kissolino.com

                  Kommentar


                  • #10
                    Hi,

                    habs mit die(); probiert.
                    Der Download startet leider trotzdem noch - und der Dateiinhalt ist dann halt immer die Fehler-Nachricht.

                    Irgendwie komisch, aber das Script wird an der Stelle einfach nicht unterbrochen.
                    Alles an Text wird irgendwie als Download geöffnet...

                    hugamann

                    Kommentar


                    • #11
                      Hu,

                      hat wirklich keiner 'ne Idee ?

                      Kommentar


                      • #12
                        was erwartest du? wenn die glaskugel im wochenende ist und du keine code postest, wird es ein ewiges rätsel bleiben.

                        wenn es der code da oben ^^ ist, ist klar, dass der download startet, sofern die datei existiert. woher der text kommen soll, ist mir schleierhaft ... wie gesagt ... glaskugel => wochenende.
                        Kissolino.com

                        Kommentar

                        Lädt...
                        X