Chmod + fopen

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

  • Chmod + fopen

    Hallo,

    habe da ein Problem und hoffe ihr könnt mir da weiterhelfen.

    Ich habe ein Array und möchte dessen Inhalt in eine txt Datei schreiben, die neu erstellt und direkt zum Download angeboten wird.

    Mein Fehler liegt bei den chmod Rechten, ich glaube, dass sie gar nicht angenommen werden.

    Habe unten das Skript miteingefügt. Ich hoffe, es ist nicht zu viel verlangt.

    "test" ist der Name des Verzeichnisses in dem das Skript sich befindet und der Unterordner "upload". In "upload" soll dann letztendlich die txt Datei erzeugt werden.

    PHP-Code:
    mkdir(test0666);
    $file fopen('datei.txt''w');
        
    for( 
    $i=0$i<count($_SESSION['line']); $i++ )
    {
    $line = array();
    $line[$i] = $_SESSION['line'][$i];
    fwrite($filename$line[$i]);
    }
    fclose($file);

    header("Content-Type: application/force-download"); 
    header("Content-Disposition: attachment; filename=$filename"); 
    readfile($filename); /* Diese Zeile angeblich nicht notwendig! */

    unlink($filename); 

  • #2
    PHP-Code:
    $dir mkdir('test'0666);
    if (
    $dir)... 
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Danke für die Antwort Peter.

      Habe das mal jetzt so abgeändert:

      PHP-Code:
      $dir mkdir($filename0666);
            
      if( 
      $dir )
      {
      $file fopen('datei.txt''w');
          
      for( 
      $i=0$i<count($_SESSION['line']); $i++ )
      {
      $line = array();
      $line[$i] = $_SESSION['line'][$i];
      fwrite($filename$line[$i]);
      }
      fclose($file);

      header("Content-Type: application/force-download"); 
      header("Content-Disposition: attachment; filename=$filename"); 
      readfile($filename);

      unlink($filename); 

      Info:
      $filename = 'uploads/datei.txt';

      Ich glaube, dass es nicht notwendig war dem Ordner 'test' die Rechte zugeben. Habe der Datei datei.txt und dem Ordner 'uplodas' die Rechte gegeben. Schien mir logisch, aber es funktioniert nicht.

      Kommentar


      • #4
        warum schreibst du die datei überhaupt in das dateisystem?
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          Weil jeder Benutzer seine eigene Datei braucht und serverseitig keine Informationen gespeichert werden sollen.

          Kommentar


          • #6
            Original geschrieben von deNiz83
            Weil [...] serverseitig keine Informationen gespeichert werden sollen.
            Das geht an der Frage vorbei.

            Die zielte darauf, wofür du überhaupt bei deinem Download eine (temporäre) Datei zu brauchen glaubst.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Was will man denn sonst herunterladen, wenn es keine Datei ist? Und die Datei soll heruntergeladen werden, weil die Informationen vom Benutzer benötigt werden und sie so wichtig sind, dass sie nicht auf dem Server gelagert werden.

              Wenn eure Frage darauf hinaus ist, ob ich das ganze hätte auch anders realisieren können, dann kann ich es gleich vorweg nehmen und sagen, dass es wichtig ist es so zu lösen.

              Kommentar


              • #8
                Du sagst selbst, dass du severseitig nix speichern willst. Dann stellt sich die Frage warum du die Daten nicht einfach nur zum Download anbietest und danach wegschmeist. Wieso noch in ein File und auf dem Server ablegen ?? Du kannst die Header senden und danach einfach den Inhalt an den Browser durchreichen. Da musst du keine Datei anlegen und speichern..

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Dachte ich hätte es mit einem Download realisiert

                  PHP-Code:
                  header("Content-Type: application/force-download"); 
                  header("Content-Disposition: attachment; filename=$filename"); 
                  und anschließend wird die Datei gelöscht.

                  PHP-Code:
                  unlink($filename); 

                  Kommentar


                  • #10
                    PHP-Code:
                    $line '';
                    for( 
                    $i=0$i<count($_SESSION['line']); $i++ )
                    {
                       
                    $text.= $_SESSION['line'][$i]."\r\n";
                    }
                    header("Content-Type: application/force-download"); 
                    header("Content-Disposition: attachment; filename=$filename"); 
                    echo 
                    $text
                    reicht völlig aus. ggf. noch header hinzufügen

                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Wofür brauch ich noch $line? Wenn alles in $text gespeichert wird.

                      Und dadurch wid automatisch die Datei datei.txt erzeugt und zum DL angeboten? Werde das mal testen, danke dir Peter.

                      //edit

                      Habe es ausprobiert. Die Datei wird erzeugt, nur heißt sie dann nicht datei.txt, sondern hat den selben Namen wie die php Datei, aber ohne Endung. Als Inhalt hat sie die ganze Page mit einer php Fehlermeldung in der 1. Zeile.

                      Warning: unlink(uploads/datei.txt) [function.unlink]: No such file or directory in .../test/skript.php on line xxx
                      Zuletzt geändert von deNiz83; 07.03.2007, 12:07.

                      Kommentar


                      • #12
                        Und dadurch wid automatisch die Datei datei.txt erzeugt und zum DL angeboten?
                        Und wieso glaubst du dass ein Download von einem Server immer ein File im Hintergrund bedeutet ? Der Inhalt kann von einem File gelesen werden, oder es kann einfach der Inhalt einer Var zum Download angeboten werden.
                        Und nein, dieser Code erzeugt kein File auf dem Server !

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          Auch dir danke Tobi.

                          Es wird aber eine Datei zum Download angeboten, die ganz einfach skript heißt und den HTML Code der Datei skript.php enthält. Das war aber nicht bezweckt. Was wurde falsch gemacht?

                          Kommentar


                          • #14
                            Original geschrieben von deNiz83
                            Warning: unlink(uploads/datei.txt) [function.unlink]: No such file or directory in .../test/skript.php on line xxx
                            Wenn du es jetzt ohne temporäre Datei, sondern mit direkter Ausgabe versucht hast - welche temporäre Datei willst du denn dann noch löschen ...?

                            Hirn einschalten.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Original geschrieben von deNiz83
                              Auch dir danke Tobi.

                              Es wird aber eine Datei zum Download angeboten, die ganz einfach skript heißt und den HTML Code der Datei skript.php enthält. Das war aber nicht bezweckt. Was wurde falsch gemacht?
                              der download beginnt doch sicher beim klick auf einen link? also lager den entsprechenden code in datei z.b. download.php aus. auf den verlinkst du dann. da eine datei zum download angeboten wird, bleibt die seite script.php im browser weiterhin sichtbar.

                              gruß
                              peter
                              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                              Meine Seite

                              Kommentar

                              Lädt...
                              X