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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 01-01-2009, 17:53
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard gz-Dateien kein Download

Wie kann es sein, dass ein und dieselbe gz-Datei beim Aufruf über HTTP auf dem einen Server heruntergeladen wird, auf dem anderen aber einfach im Browser geöffnet wird? Kann man den Grund dafür in der PHP-Konfiguration festmachen?
Mit Zitat antworten
  #2 (permalink)  
Alt 01-01-2009, 18:13
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Was für header werden mitgesendet? Es liegt wohl in 99% der Fällen an den gesendeten Headern, wenn der selbe Browser verwendet wird.
Mit Zitat antworten
  #3 (permalink)  
Alt 01-01-2009, 18:20
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Im Skript sind gar keine Header gesetzt, es wird einfach nur der Link ausgegeben (mit Headern klappt der Download bei mobilen Browsern nämlich nicht).
Mit Zitat antworten
  #4 (permalink)  
Alt 01-01-2009, 19:46
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Ich meine: welche Header empfangt der Browser?
Bei jeder HTTP Übertragung wird als erstes ein Header gesendet.
Es ist nicht nötig, dass man diese Header manuell setzt, das wird unter anderem durch Apache, wen du Apache benutzt oder was auch immer gesendet. Auch bei verschiedenen PHP-Einstellungen werden automatisch Header mitgesendet.Lies einmal die gesendeten Header aus, z.B. mit firebug beim firefox oder manuell mit java, c oder was immer du willst. Wenn du dich nicht mit Programmieren auskennst ist es aber wohl am einfachsten den Firefox mit dem Plugin Firebg zu benutzen.
Mit Zitat antworten
  #5 (permalink)  
Alt 01-01-2009, 20:14
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ach so, da bin ich mal gespannt, was dabei herauskommt. Wenn ich den Unterschied gefunden habe, wie kann ich dies ins Skript einbinden? Bei entsprechenden Browser-Headern soll das Skript Gzippen nicht mehr anbieten.
Mit Zitat antworten
  #6 (permalink)  
Alt 01-01-2009, 21:26
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Ob der Browser gzip erlaubt sendet er ebenfalls im Header bei seiner Anfrage mit.
Hier einmal ein Beispiel des gesendeten und des empfangenen headers:
Code:
Response Headers
Date	Thu, 01 Jan 2009 19:18:58 GMT
Server	Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c
X-Powered-By	PHP/5.2.6-0.dotdeb.1
Keep-Alive	timeout=15, max=100
Connection	Keep-Alive
Transfer-Encoding	chunked
Content-Type	text/plain

Request Headers
Host	XXX.ch
User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Accept	*/*
Accept-Language	en-gb,en;q=0.5
Accept-Encoding	gzip,deflate // hier sind die erlaubten encodierungen, welche vom Browser im Header mitgesendet werden
Accept-Charset	ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive	300
Connection	keep-alive
Referer	XXX
Cookie	PHPSESSID=6fce3e6ba5edcb7438dd7e6598151756
Wenn du die Header vom Server hast kannst du dir den Unterschied anschauen und bei google suchen wodurch das bewirkt wird und wenn du nichts findest, dann schreib die Header einmal hier ins Forum.
Mit Zitat antworten
  #7 (permalink)  
Alt 01-01-2009, 23:25
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe Folgendes gefunden:

HTTP Request Headers
Accept-Encoding: gzip, deflate, x-zip, identity; q=0.9

HTTP Response Headers
Transfer-Encoding: chunked

Mein Browser unterstützt demnach gzip, heißt "chunked", dass der Server gzip-Dateien herunterlädt und nicht öffnet? Habe 2 Links derselben Datei auf je einem anderen Server:

da.gif.gz wird heruntergeladen (s. o. HTTP Response Headers)

da.gif.gz wird als gif-Datei geöffnet, was natürlich scheitert (keine HTTP Response Headers ermittelt)
Mit Zitat antworten
  #8 (permalink)  
Alt 02-01-2009, 00:03
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Jetzt noch die Response-Headers der beiden Links:
Link 1 (wird heruntergeladen):
Code:
HTTP/1.1 200 OK
Date: Thu, 01 Jan 2009 21:46:54 GMT
Server: Apache
Vary: Host
Last-Modified: Thu, 01 Jan 2009 20:19:53 GMT
ETag: "4b08fc01-79-45f718c156c40"
Accept-Ranges: bytes
Content-Length: 121
Connection: close
Content-Type: application/x-gzip
Link 2 (wird angezeigt):
Code:
HTTP/1.1 200 OK
Date: Thu, 01 Jan 2009 21:53:09 GMT
Server: Apache
Set-Cookie: Apache=80.190.144.123.300671230846789561; path=/
Last-Modified: Thu, 01 Jan 2009 20:43:34 GMT
ETag: "4b5c6bf-79-495d2af6"
Accept-Ranges: bytes
Content-Length: 121
Connection: close
Content-Type: image/gif
Wie du siehst ist der Unterschied, welcher dich betrifft der Content-Type.
Bei lycos wird die Datei als Bild erkannt (da wahrscheinlich der Header der Datei ausgelesen wird oder evtl. da .gif in der Datei vorkommt; keine Ahnung was lycos betrifft, denn das ist ihre interne Angelegenheit; du könntest es ja ausprobieren --> Datei wird als Gif deklariert).
Bei weltvolk.de wird der Dateityp über die Dateiendung erkannt und als gzip Datei erkannt (type application/x-gzip).
Nun hat dein Browser die Einstellung (lässt sich bei manchen Browsern sogar manuell einstellen), dass Dateien mit dem Mimetype image/gif im Browser selbst angezeigt werden, da es Bilder sind und der selbe Browser hat die Einstellung, dass Dateien mit dem Mimetype application/x-gzip einen Download-Dialog auslösen.

Ich weiss jetzt nicht, ob du nun noch ein Problem hast oder ob das nur eine allgemeine Frage war. Wenn du noch ein Problem haben solltest schreib einfach. Am einfachstenund sinnvollsten wäre es den Header über Apache zu ändern, wenn du das möchtest.

[EDIT]
PS: Transfer-Encoding: chunked hat mit deinem Problem nicht viel zu tun. Das ist eine Übertragungsart für den Fall, dass nicht die ganzen Daten in einem Stück, sondern in chunks geschickt werden sollen. Dabei wird immer zuerst die Länge des nächsten chunks in Form zweier Hex-Ziffern geschickt und danach das nächste Stück.

Geändert von jmc (02-01-2009 um 00:10 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 02-01-2009, 14:09
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Alles klar, jetzt muss ich nur noch wissen, wie das PHP-Skript erkennt, ob gz-Dateien heruntergeladen werden würden oder nicht. Gzip soll ja nur möglich sein, wenn auch der Download funktioniert. PHP müsste den Content-Type erkennen und wenn dieser "application/x-gzip" nicht enthält, eine Meldung ausgeben. Wie gesagt funktionieren im Skript definierte Header nicht bei Handybrowsern, da aufgerufene gz-Dateien durch PHP-Header leider immer angezeigt werden (auch da, wo normalerweise ein Download erfolgt).
Mit Zitat antworten
  #10 (permalink)  
Alt 02-01-2009, 14:49
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ein PHP-Script scheint da gar nicht involviert zu sein. Die URLs zeigen zumindest direkt auf .gz-Dateien und wenn du nicht mit mod_rewrite zauberst, ist PHP überhaupt nicht beteiligt. Suche in der Apache-Konfiguration nach AddType-Direktiven und lies in der Apache-Doku nach, was es damit auf sich hat.
Mit Zitat antworten
  #11 (permalink)  
Alt 02-01-2009, 15:33
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP kann also nirgends erkennen, ob gzip-Dateien downgeloadet oder geöffnet werden.
Mit Zitat antworten
  #12 (permalink)  
Alt 02-01-2009, 16:39
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

PHP hat wie onemorenerd in deinem Fall nicht viel damit zu tun, ausser du sorgst ausdrücklich darum. Es liegt an deinem Apache Server. Du könntest es aber als PHP-Datei behandeln lassen oder auch die Datei über eine PHP-Datei umgelenkt downloaden lassen.
Es sind keine PHP-Header, aber du hast auch mit PHP die Möglichkeit die Header zu bestimmen.
Sendet den Mimetype nicht, sondern dein Server. Du hast aber die Möglichkeit bei einer PHP-Datei diesen Typ ausdrücklich zu überschreiben.
Mit Zitat antworten
  #13 (permalink)  
Alt 02-01-2009, 16:41
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Wenn PHP nicht angesprochen wird, natürlich nicht.

Stell dir vor, du sitzt hier in deinem Haus. Bekommst du dann mit, wenn in China ein Sack Reis umfällt?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #14 (permalink)  
Alt 02-01-2009, 17:50
weltvolk
 Registrierter Benutzer
Links : Onlinestatus : weltvolk ist offline
Registriert seit: Apr 2006
Ort: Kiel
Beiträge: 85
weltvolk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von TobiaZ
Wenn PHP nicht angesprochen wird, natürlich nicht.

Stell dir vor, du sitzt hier in deinem Haus. Bekommst du dann mit, wenn in China ein Sack Reis umfällt?
Naja, mittels Skript kann man schon einiges zum Environment erfahren, z. B. ob der Server unter Windows oder Linux läuft über die Funktion php_uname(). Meine Frage war, ob es eine Funktion oder auch eine Variable gibt, die angeben kann, ob gegzippte Files heruntergeladen oder geöffnet werden und die Antwort ist 'nein'.

Geändert von weltvolk (02-01-2009 um 18:13 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 02-01-2009, 18:36
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Diese Funktion kann es gar nicht geben, denn das wird nicht durch PHP behandelt sondern durch den jeweiligen Browser.
Jedoch gibt es eine Möglichkeit (den Header) den Browser mitzuteilen, welche Art von Dateien sie, wenn sie sich nach dem Standard richten, erhalten. Dazu gibt es auch Standardverhalten bei diesen bestimmten Dateitypen.

Z.B. Gif-Bilder werden praktisch bei allen Browsern direkt angezeigt. Das ist jedoch kein muss, sie könnten auch zu einem Download-Dialog führen oder direkt gedownloadet werden oder was auch immer.
Mit dem Header kannst du auch versuchen eine Windows-Anwendung als Bild anzeigen zu lassen.

Es gibt ausserdem so viele Kompressionsarten... wie soll denn der Server erkennen sollen ob es sich um eine gezippte Version handelt. Bei einer Zip-Kompression geht das gerade noch, da die auch schon beinahe standard ist und deren Header bekannt sind, aber normalerweise wird einfach standardmässig durch den Server der Dateiendung X der Mimetype Y zugeordnet, das kannst du aber auch abändern.

Um den Mimetype einer Datei auszulesen gibt es tatsächlich Möglichkeiten mit PHP, z.B. Fileinfo

Ob die Datei bei diesem Mimetype aber dann gedownloadet wird oder nicht kann PHP unmöglich erkennen, da dies vom Client abhängt. Es gibt jedoch einige Mimetypes, bei denen man tendentiell sicher sein kann, dass sie runtergeladen werden. Dazu gehören die meisten application/...
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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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