php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 09-11-2006, 13:11
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard dateiname beim download

hi,
ich habe ein problem, an dem ich seit stunden sitze, aber ich komme einfach nicht weiter. Tut mir Leid, ich bin kein PHP-Crack.

Also ich will nen Download erzwingen und möchte dazu den Dateinamen anzeigen lassen. Da ich das mit nem downloadscript mache, gibt es da Probleme. Entweder zeigt er mit den Skriptnamen an oder die ID. Ich komme einfach nicht weiter.
Soweit bin ich (meine letzte Idee)

$datei = "data/test.txt"; // Name der Datei (Jede Zeile(=ID) ist der spezielle Dateiname)
$array = file($datei); // Datei in ein Array einlesen
$blub = $array[$_GET['id']]; //ist glaube ich sinnlos
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$blub.'"');
readfile('filename');

was macht er? nichts ... er öffnet die pdf-datei im browser.

kann mir jemand bitte helfen!!!

Lg kevin.

P.S.: Falls jemand ne andere gute Idee hat, nehme ich die auch ... jedoch ist das Problem, dass die url der dateien jeweils unterschiedlich lang ist
Mit Zitat antworten
  #2 (permalink)  
Alt 09-11-2006, 13:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: dateiname beim download

Zitat:
Original geschrieben von unnamedkh
was macht er? nichts ... er öffnet die pdf-datei im browser.
Wenn du das in deinem Browser für Ressourcen des Content-Types application/pdf so eingestellt hast, läuft doch also alles wunderbar ...


Wenn du wirklich entgegen dieser Nutzerentscheidung handeln willst, dann nutze einen Content-Type, den der Client höchstvermutlich nicht kennt, für den er also als Default-Aktion den Downloaddialog öffnet - Suchfunktion benutzen, das leidige Thema hatten wir schon sehr oft.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 09-11-2006, 13:29
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das ist mir klar. mir geht es auch nicht um das öffnen des dialogfeldes. das funktioniert ja, jedoch nicht mit dem dateinamen. den versuche ich halt so hinzubekommen, aber er hat scheinbar probleme mit der ausgabe des arrays...

denn wenn ich statt

header('Content-Disposition: attachment; filename="'.$blub.'"');

das hier angebe

header('Content-Disposition: attachment; filename="'.$_GET['id'].'"');

gibt er die id als dateiname an ...

grüße
Mit Zitat antworten
  #4 (permalink)  
Alt 09-11-2006, 13:33
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von unnamedkh
aber er hat scheinbar probleme mit der ausgabe des arrays...
"er" in diesem Falle == du?

Zitat:
PHP-Code:
$array file($datei); // Datei in ein Array einlesen
$blub $array[$_GET['id']]; //ist glaube ich sinnlos 
Wie sieht der Inhalt der Datei aus?
Was ergab deine Kontrollausgabe des eingelesenen Inhaltes, also print_r oder var_dump von $array? Gibt es dort einen Eintrag mit dem Key, den du in $_GET['id'] übergibst?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 09-11-2006, 13:44
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

der inhalt sie bspw. so aus

1|test.pdf
2|test.pdf
3|test.pdf
test.pdf
test.pdf
test.pdf

die ids werde ich vorn noch wegnehmen.

var_dump von $_GET['id'] --> string(1) "1"
var_dump von $blub--> string(10) "2|test.pdf"
Mit Zitat antworten
  #6 (permalink)  
Alt 09-11-2006, 13:49
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich würde mal
PHP-Code:
header("Content-Type: application/octet-stream"); 
für den zu sendenden Header machen.
Hast du dir mal $blub ausgeben lassen ? Ist das der korrekte Dateiname ? Und hast du auchmal $array mittels var_dump() augegeben lassen ? Sind das in etwa die erwarteten Ergebnisse ?

Gruss

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

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #7 (permalink)  
Alt 09-11-2006, 13:51
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry aber du sagst ja selber, dass der Dateiname so nicht korrekt ist 2|test.pdf ist bestimmt kein Name den readfile() auf deiner Platte finden würde.
Und was bezweckst du mit dieser Zeile
PHP-Code:
readfile('filename'); 
Hast du denn eine Datei Names filename auf deiner Platte ? Ich meinte die sollte test.pdf heissen.

Gruss

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

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 09-11-2006, 14:14
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich habe es jetzt anders gemacht.

ich hole mir den Namen als Get-Variable. Der Dateiname wird mir jetzt auch perfekt angezeigt. aber jetzt gibt es ein anderes Problem und ich habe keine Ahnung, woran das liegen könnte: Er kann die Datei nicht mehr öffnen. Grund: "Dateityp nicht unterstützt oder Datei beschädgit (z.b. wenn sie als Dateianhang geschickt wurde und nicht korrekt dekodiert wurde)"

Eine Idee?

das sieht jetzt so bei mir aus:

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$_GET['name'].'.pdf"');
readfile('filename');
Mit Zitat antworten
  #9 (permalink)  
Alt 09-11-2006, 14:40
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Liest du die Posts anderer Leute auch
PHP-Code:
readfile('filename'); 
oder warum hast du immer noch diese nutzlose Zeile drin. Er findet die Datei nicht. Weil du keine hast die 'filename' heisst !
Ist der Groschen (Eurocent) jetzt gefallen ???

Gruss

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

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #10 (permalink)  
Alt 09-11-2006, 15:00
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sry, das hatte ich schon verändert. das alte war nur noch im zwischenspeicher. tut mir leid.

so zieht das jetzt alles aus ...

#Header("Location: ".$url);
header("Expires: Mon, 10 Jan 1970 01:01:01 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$_GET['name'].'.pdf"');
readfile($url) or die("File not found.");


fehler:
<br />
<b>Warning</b>: readfile(http://test.de/blub/blub/blub/Einheit_01.pdf
) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in <b>/var/www/vhosts/test.de/httpdocs/test/counter/count.php</b> on line <b>86</b><br />
File not found.
Mit Zitat antworten
  #11 (permalink)  
Alt 09-11-2006, 15:05
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht solltest du mal keinen HTTP-URL an readfile übergeben, sondern einen Pfad/Dateinamen aus dem lokalen Dateisystem des Servers ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 09-11-2006, 15:12
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das habe ich auch schon probiert, da kommt das:

<br />
<b>Warning</b>: readfile(../../blub/blub/blub/test.pdf
) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>/var/www/vhosts/test.de/httpdocs/test/counter/count.php</b> on line <b>86</b><br />
File not found.

aber ich bin mir zu 100% sicher, dass der file existiert und auch das die adresse/der pfad stimmt!!

tut mir echt Leid, dass ich das nicht klappen will.

grüße

P.S.: Denkt dran, ich bin kein php-pro ... ich versuch ja mein Bestes!
Mit Zitat antworten
  #13 (permalink)  
Alt 09-11-2006, 15:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Wenn du dir "100%ig sicher" bist, und PHP aber anderer Meinung ist - tja, wem glaube ich dann wohl eher ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 09-11-2006, 15:37
unnamedkh
 Registrierter Benutzer
Links : Onlinestatus : unnamedkh ist offline
Registriert seit: Nov 2006
Beiträge: 20
unnamedkh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mmh, natürlich mir, weil ich die url, die er mir als "falsch" angibt, direkt im browser eingebe (oder halt reinkopiere) und schups (wunderwerk der technik) öffnet er die pdf datei ... mmh, wem glaube ich jetzt mehr? dem fehler oder meinen augen?

so, jetzt mal wieder etwas sachlicher (btw: seid ihr immer so schlecht gelaunt bzw. gereizt oder nur bei mir??).

noch jemand eine idee, oder soll ich euch mal das komplette script geben? ich kenn mich wie gesagt mit php nicht so gut aus, so dass es sein kann, dass ich nen gedankenfehler habe. ich häng es mal dran:

PHP-Code:
function counten($url)
{
global 
$email;
#Header("Location: ".$url);
header("Expires: Mon, 10 Jan 1970 01:01:01 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$_GET['name'].'.pdf"');
readfile($url) or die("File not found."); 

Geändert von unnamedkh (09-11-2006 um 15:52 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 09-11-2006, 15:47
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von unnamedkh
mmh, natürlich mir, weil ich die url, die er mir als "falsch" angibt, direkt im browser eingebe (oder halt reinkopiere) und schups (wunderwerk der technik) öffnet er die pdf datei ...
Und was hat ein URL mit dem Dateisystem zu tun?

Die Angabe bei readfile bezieht sich, wenn du sie relativ machst, natürlich auf den Ausführungsort des Scriptes.
Ist der Pfad unter dem Gesichtspunkt immer noch richtig ...?
Zitat:
mmh, wem glaube ich jetzt mehr? dem fehler oder meinen augen?
Wenn soll ich mehr glauben - PHP, dass eine eindeutige Fehlermeldung ausgibt, oder dem x-ten hier reingeschneiten Newbee, der es besser zu wissen meint?


Und den Code brichst du bitte schnellstens um, so wie es in den Regeln steht.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:22 Uhr.