Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable in Pfad

Einklappen

Neue Werbung 2019

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

  • Variable in Pfad

    Hallo zusammen

    Ich wäre froh um eure Hilfe. Ich bringe eine Variable nicht korrekt in einen Quell-Pfad hinein:

    PHP-Code:
    $quelle "C:\Users\Desktop\Ordner".$var
    ergibt folgende Meldung:
    Parse error: syntax error, unexpected T_STRING in C:\Users\Desktop\Ordner\download.php on line 15

    Ich habe dann diverses ausprobiert, hier bekomme ich wenigstens die Variable, aber natürlich sind .' '. zuviel. Ich bringe sie aber nicht weg, ohne wieder eine Fehlermeldung siehe oben zu bekommen.

    PHP-Code:
     $quelle "C:\Users\Desktop\Ordner".'$var'."; 
    copy(C:\Users\Desktop\Ordner".'VARIABLE'.) [function.copy]: failed to open stream: Invalid argument in C:\Users\Desktop\Ordner\download.php on line 19

    Weiss jemand wie man das korrekt schreiben muss? Vielen Dank!

  • #2
    Dein erster Vorschlag ist absolut korrekt und funktioniert bei mir tadellos.

    Kommentar


    • #3
      Bei mir gibt es aber immer noch diese Fehlermeldung, weiss jemand warum? Dünkte mich eben auch korrekter Vorschlag

      Kommentar


      • #4
        Ich kann mich Jonas leider lediglich anschließen.
        Bei mir funktionieren die verschiedenen Schreibweisen ebenfalls tadellos, bei letzerer wird allerdings natürlich Klartext ausgegeben.


        PHP:
        PHP-Code:
        <?php

        $file 
        '\nichtklicken.exe';

        $var  "C:\Users\Desktop\Ordner" $file;
        echo 
        $var '<br>';

        $var  'C:\Users\Desktop\Ordner' $file;
        echo 
        $var '<br>';

        $var  'C:\Users\Desktop\Ordner' '$file';
        echo 
        $var '<br>';
        Ausgabe:
        C:\Users\Desktop\Ordner\nichtklicken.exe
        C:\Users\Desktop\Ordner\nichtklicken.exe
        C:\Users\Desktop\Ordner$file

        Schicke uns doch mal den gesamten Code. Vielleicht ist der Fehler anderweitig versteckt?!

        Kommentar


        • #5
          Zitat von brombeertee Beitrag anzeigen
          Ich kann mich Jonas leider lediglich anschließen.
          Bei mir funktionieren die verschiedenen Schreibweisen ebenfalls tadellos, bei letzerer wird allerdings natürlich Klartext ausgegeben.


          PHP:
          PHP-Code:
          <?php

          $file 
          '\nichtklicken.exe';

          $var "C:\Users\Desktop\Ordner" $file;
          echo 
          $var '<br>';

          $var 'C:\Users\Desktop\Ordner' $file;
          echo 
          $var '<br>';

          $var 'C:\Users\Desktop\Ordner' '$file';
          echo 
          $var '<br>';
          Ausgabe:



          Schicke uns doch mal den gesamten Code. Vielleicht ist der Fehler anderweitig versteckt?!
          Zeig doch mal den gesamten Quellcode, vor allem die Stelle, wo $var ein Wert zugewiesen wird.

          Kommentar


          • #6
            Vielen Dank für eure Hilfen.
            Nun habe ich gesehen, dass der Backslash das Problem verursacht. Ich habe dort noch einen Backslash drin. Den würde es brauchen, aber der macht das Problem:

            PHP-Code:
            $var "C:\Users\Desktop\Ordner" $file
            funktioniert nicht, da kommt Fehlermeldung mit
            unexpected T_STRING

            aber wenn ich den Backslash rausnehme, dann findet er die Datei nicht - da der Backslash fehlt...

            Weiss da jemand die Lösung?
            So habe ich es schon probiert, funktioniert auch nicht:


            PHP-Code:
            $var "C:\Users\Desktop\Ordner" .  "'\'" .$file

            Kommentar


            • #7
              Ein Backslash escaped den folgenden Charakter.

              PHP-Code:
              <?php
              $var 
              "datei.exe";
              $quelle "C:\Users\Desktop\Ordner\\".$var;

              var_dump($quelle);
              Oder:

              PHP-Code:
              <?php
              $var 
              "\datei.exe";
              $quelle "C:\Users\Desktop\Ordner".$var;

              var_dump($quelle);

              Kommentar


              • #8
                Das Problem ist, dass dein "dabei.exe" ist selber eine Variable. Resp. ein csv (das den Namen wechselt, darum ist es in eine Variable geschrieben)

                Kommentar


                • #9
                  Sorry, der PHP-Editor hier hat da etwas verschluckt.

                  Du brauchst einen Doppel-\\

                  Kommentar


                  • #10
                    oh DANKE - genau das wars!!
                    Danke für die Hilfe jonas3344

                    Kommentar


                    • #11
                      und nun lade ich diese Datei runter (die nun dank jonas3344 gefunden wird
                      Leider kommt zuoberst eine Zeile zuviel mit. Kann das an dem hier liegen?

                      PHP-Code:
                      if( !file_exists($file) ) die("File not found");
                      // Force the download
                      header("Content-type: text/csv");
                      header("Content-Disposition: attachment; filename="". urlencode($file) .""");
                      header("Content-Length: " filesize($file));
                      header("Content-Type: application/octet-stream;");
                      readfile($file); 

                      Kommentar


                      • #12
                        215 Beiträge hier und du weisst immer noch nicht wie man Strings verkettet und wie man mit Quotes umgeht?

                        Edit: Sogar der Editor hier drin zeigt den Fehler an, wenn du mit einem einigermassen brauchbaren Editor arbeiten würdest, würdest du es sofort sehen.

                        Kommentar


                        • #13
                          PHP-Code:
                          "Content-Disposition: attachment; filename=" 
                          Nach dem letzten doppelten Anführungszeichen ist die Zeichenkette für PHP beendet.
                          Wenn du danach noch Zeichen dranhängen(verketten) willst, das auch in doppelten Anführungszeichen steht, dann müssen die Anführungszeichen maskiert werden oder du weichst auf eine andere Variante aus.

                          Hier mal alle 4 Möglichkeiten
                          PHP-Code:
                          "Content-Disposition: attachment; filename="". urlencode($file) ."""
                          'Content-Disposition: attachment; filename="' 
                          urlencode($file) . '"'
                          "Content-Disposition: attachment; filename='{urlencode(
                          $file)}'"
                          "Content-Disposition: attachment; filename="
                          {urlencode($file)}"" 
                          siehe auch http://php.net/manual/en/language.ty...string.parsing

                          EDIT:
                          Stimme jonas3344 in so weit zu, dass dies Grundlagen sind und wenn man programmiert sich einem die Basissyntax nicht als böhmische Dörfer vorkommen sollte.

                          Kommentar


                          • #14
                            Danke für eure Tipps. Aber leider komme ich doch nicht drauf, wie ich die Leerzeile im Download wegbringe. Warum entsteht die denn überhaupt? Habe ich leider nicht herausgefunden. Habt ihr mir dazu noch einen Tipp? Wenn ich es doch falsch zusammenhängen würde, müsste sie doch nach jeder Zeile eine leere Zeile entstehen und nicht nur zuoberst??

                            Kommentar


                            • #15
                              Die Leerzeile wird wohl in der CSV-Datei schon drin sein. Mit dem Download hat das jedenfalls nichts zu tun.
                              Schau dir die Datei doch mal vor dem Download in einem Editor an, dann löscht du die Leerzeile und speicherst es wieder und testest es.
                              Da wo die Datei erzeugt wird, wird auch die Leerzeile hinzugefügt, da musst du ansetzen.

                              Kommentar

                              Lädt...
                              X