Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Aus PHP wird HTML: header()

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 21.01.2004, 00:14

Und nocheinmal,

ich habe nun ja schon einen Thread über statische URLs die eigentlich dynamisch sind gestartet. Damit ist es allerdings nicht wirklich getan, hier gibt es noch ein weiteres Problem: Die Header die der Server zurück an den Browser/Bot sendet.

Hier 2 Beispiele die ich grade mal aus den Logs gegriffen habe:
HTTP/1.1 200 OK
Date: Tue, 20 Jan 2004 11:11:11 GMT
Server: Apache/1.3.26 [...]
Last-Modified: Mon, 29 Dec 2003 00:55:46 GMT
ETag: "13e9b-a28-3fef7b92"

Accept-Ranges: bytes
Content-Length: 2600

Content-Type: text/html
Das sind die Header bei einer Anfrage nach eine .htm...
HTTP/1.1 200 OK
Date: Tue, 20 Jan 2004 11:11:11 GMT
Server: Apache/1.3.26 [...]
X-Powered-By: PHP/4.2.2
Transfer-Encoding: chunked

Content-Type: text/html
... und das die einer .php. Klar zu erkennen sind die von mir fett hervorgehobenen Unterschiede.

Mit php hat man ja die Möglichkeit Header zu manipulieren beziehungsweise selber Werte anzugeben. Und hier kommt meine eigentliche Frage:

Nutzt jemand von euch diese Methode per header()?
Und wenn ja, welche Werte genau?

Ich selbst nutze es teilweise auch, Last-Modified und ETag modifiziere ich.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

sandoba
PostRank 6
PostRank 6
Beiträge: 395
Registriert: 20.10.2003, 21:33

Beitrag von sandoba » 21.01.2004, 10:24

Diese Variante wird u.a. bei unserem CMS Contentpapst verwendet mit den Headern für "HTTP/1.0 200 OK", "Date", "Connection", "Content-Type", "Last-Modified" (NICHT AKTUELLE ZEIT!!!), "Accept-Ranges" und "X-Powered-By".

Dies funktioniert auch sehr gut. Leider gibt es aber von Server zu Server Unterschiede. D.h. einige überschreiben manche im Script gesetzten Header mit eigenen Werten (wie z.B: "X-Powered-By"). Das lässt sich aber im Einzelfall nicht groß verhindern (zumindest nicht ohne Zugriffsmögl. auf Konfig.-Dateien).
Shop-Software CP::Shop (brandneu: V2016.1!) und Content-Management-System Contentpapst unter www.sandoba.de / www.shop-test.com
Standardmäßig SEO-/Affiliate-freundlich, flexibel anpassbar! | Tipps&Tricks: Entwickler-Weblog zu CMS + Shop-Software

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 21.01.2004, 15:25

Sehr schön, freut mich dass das noch jemand praktiziert hier.

Wieso verzichtest Du auf "ETag"? Bezüglich Caching ist das doch recht wichtig, und wenn ihr Last-Modified nutzt auch kein Problem da ein UniqueString zu produzieren.

Kannst du mal genauer aufschlüsseln was ihr genau macht, also einfach mal aufzählen welceh Werte übergeben übergeben werden. Wäre sicher sehr aufschlussreich.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


sandoba
PostRank 6
PostRank 6
Beiträge: 395
Registriert: 20.10.2003, 21:33

Beitrag von sandoba » 21.01.2004, 15:35

ETag ist mir persönlich bisher noch nicht bekannt. Was bewirkt dieser Header und wie setzt er sich zusammen?

Hier mal ein Beispiel:

header("HTTP/1.0 200 OK");
header("Date: ".date("D, d M Y H:i:s T",time()));
header("Connection: Keep-Alive");
header("Keep-Alive: timeout=15, max=50");
header("Content-Type: text/html");
header("Last-Modified: ".date("D, d M Y H:i:s T",(time()-3600)));
header("Accept-Ranges: bytes");

Unter https://www.andyhoppe.com/software/http ... header.htm kann man z.B. den Header von www.hotbooks.de einsehen (oder auch per wget / PHP etc.). Man sieht: einige der Header werden gesetzt, andere Gnadenlos gelöscht oder überschrieben. :cry:

Lässt sich aber scheinbar nicht anders regeln.
Shop-Software CP::Shop (brandneu: V2016.1!) und Content-Management-System Contentpapst unter www.sandoba.de / www.shop-test.com
Standardmäßig SEO-/Affiliate-freundlich, flexibel anpassbar! | Tipps&Tricks: Entwickler-Weblog zu CMS + Shop-Software

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 21.01.2004, 16:01

Na dann wirds mal Zeit:
https://www.w3.org/Protocols/rfc2616/rf ... l#sec14.19
Einfach und auf Deutsch: Zusätzlich zu last-modified wird ETag dazu verwendet dem Surfer/Browser/Bot/etc zu sagen dass der Inhalt sich seit dem letzten Besuch geändert hat. - So hab ich es auf jeden Fall verstanden.
Apache berechnet das aus dem Seiteninhalt, ein Timestamp soll aber auch reichen.

Das Überschreib-Problem ist eigentlich gar keines, sondern ein Feature. Der Apache und PHP halten halt die Wahrheit für wichtiger und schreiben deshalb die Default-Werte da rein wie immer, liesse sich vielleicht ändern, hab ich aber ehrlich gesagt noch nicht versucht bzw nachgelesen.

Beim Recherchieren dazu bin ich gestern abend auch gleich auf paar Beispiele gestoßen:
https://fishbowl.pastiche.org/2002/10/2 ... ss_hackers
https://simon.incutio.com/archive/2003/ ... itionalGet

sandoba
PostRank 6
PostRank 6
Beiträge: 395
Registriert: 20.10.2003, 21:33

Beitrag von sandoba » 21.01.2004, 16:13

Ok, danke für die Info. Der ETag wurde jetzt offiziell in der Liste der Header willkommen geheißen. :wink:

"Das Überschreib-Problem ist eigentlich gar keines, sondern ein Feature."

Mag sein, für einen Hersteller, dessen Systeme möglichst überall optimal laufen sollen führt dies dennoch zu Problemen.

Übrigens: Natürlich kann bei "header("HTTP/1.0 200 OK");" auch HTTP/1.1 verwendet werden. HTTP/1.1 in Zusammenhand mit "mod_rewrite" ergibt jedoch bei einigen Servern ein nettes Chaos (durch falsche Konfiguration des Webhosters).
Shop-Software CP::Shop (brandneu: V2016.1!) und Content-Management-System Contentpapst unter www.sandoba.de / www.shop-test.com
Standardmäßig SEO-/Affiliate-freundlich, flexibel anpassbar! | Tipps&Tricks: Entwickler-Weblog zu CMS + Shop-Software

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 22.01.2004, 22:03

Kuckt mal hier: https://www.webmasterworld.com/forum3/6005.htm
Bin ich über nen Posting in nem anderen Forum gestossen...

Man hört dass diese Vorgehensweise mehrere Gigabyte an Traffic und Bothits sparen könnte bei bestimmten Personen... nur wussten die davon bisher nix.

Ich glaube wir sollten das Thema noch ein wenig vertiefen.

sandoba
PostRank 6
PostRank 6
Beiträge: 395
Registriert: 20.10.2003, 21:33

Beitrag von sandoba » 22.01.2004, 23:04

Hört sich interessant an. Vor allem die Möglichkeit Google damit langfristig zu beschleunigen / bei der Arbeit zu unterstützen und den eigenen Server am Laufen zu halten.
Shop-Software CP::Shop (brandneu: V2016.1!) und Content-Management-System Contentpapst unter www.sandoba.de / www.shop-test.com
Standardmäßig SEO-/Affiliate-freundlich, flexibel anpassbar! | Tipps&Tricks: Entwickler-Weblog zu CMS + Shop-Software

sandoba
PostRank 6
PostRank 6
Beiträge: 395
Registriert: 20.10.2003, 21:33

Beitrag von sandoba » 22.01.2004, 23:13

Noch mal nachgeschaut: Der Thread ist vom Oktober 2002 !!!
(haben wir da was verpasst oder hat sich die Thematik erledigt?)

Hier der PHP-Code aus dem Thread:

Code: Alles auswählen

[...]
if ($last) { 
$last = strtotime($last); 
$cond = isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : 0; 

if ($cond and $_SERVER['REQUEST_METHOD'] == 'GET' and strtotime($cond) >= $last) { 
header('HTTP/1.0 304 Not Modified'); 
exit; 
} 

header("Last-Modified: " . $this->rfc_date($last)); 
} 
[...]
$last enthält das Datum der letzten Änderung. Anschließend wird überprüft, ob der Spider/User bereits die aktuellste Version besitzt. Je nach Ergebnis wird die Seite abgebrochen oder den Inhalt kommt.

Die Funktionsfähigkeit sollte jetzt am besten bei einer stark frequentierten Seite getestet werden. Ergebnisse bitte hierher.
Shop-Software CP::Shop (brandneu: V2016.1!) und Content-Management-System Contentpapst unter www.sandoba.de / www.shop-test.com
Standardmäßig SEO-/Affiliate-freundlich, flexibel anpassbar! | Tipps&Tricks: Entwickler-Weblog zu CMS + Shop-Software

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 22.01.2004, 23:18

Nein, bitte nicht diesen Code hier nutzen. Der ist bäh.

Wenn schon dann diesen hier aus dem Link von oben:

Code: Alles auswählen

function doConditionalGet($timestamp) {
    // A PHP implementation of conditional get, see
    // http://fishbowl.pastiche.org/archives/001132.html
    
    // Editiert, übersetzt und berichtigt von Jan Piotrowski

    // header generieren
    $last_modified = gmdate("D, d M Y H:i:s", $timestamp).' GMT';
    $etag = md5($last_modified);

    // header senden
    header("Last-Modified: ".$last_modified);
    header("ETag: \"".$etag."\"");

    // pruefung: hat der client die notwendigen header uebermittelt
    $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
        stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
        false;
    $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
        stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
        false;
    if (!$if_modified_since && !$if_none_match) {
        return;
    }
    // mind. ein header ist da - ueberpruefen
    if ($if_none_match && $if_none_match != $etag) {
        return; // etag ist vorhanden, passt aber nicht
    }
    if ($if_modified_since && $if_modified_since != $last_modified) {
        return; // if-modified-since ist vorhanden, passt aber nicht
    }
    // keine verändertung seit dem letzten request - 304 und exit
    header('HTTP/1.0 304 Not Modified');
    exit;
}
Ich bin aber gerade dabei eine eigene Funktion dafür zu schreiben, poste ich hier dann natürlich.

Zu der Frage ob wir da was verpasst haben: Jein. Dieses Problematik ist vielen Webmaster erst gar nicht bewusst weil sie sich nicht gut genug mit ihrem System auskennen. Das selbe mit mod_gzip...
Zuletzt geändert von Southmedia am 31.01.2005, 15:26, insgesamt 3-mal geändert.

sandoba
PostRank 6
PostRank 6
Beiträge: 395
Registriert: 20.10.2003, 21:33

Beitrag von sandoba » 22.01.2004, 23:22

Huch, jetzt wechseln sich PM und Forum schon lustig miteinander ab. :D Das wäre natürlich ebenfalls eine Alternative. Aber morgen ist ja auch noch ein Tag für Experimente. Für heute erstmal Pause...
Shop-Software CP::Shop (brandneu: V2016.1!) und Content-Management-System Contentpapst unter www.sandoba.de / www.shop-test.com
Standardmäßig SEO-/Affiliate-freundlich, flexibel anpassbar! | Tipps&Tricks: Entwickler-Weblog zu CMS + Shop-Software

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 24.01.2004, 16:37

Mir kommt da gerade eine Gedanke:
Google crawlet ja mit verschiedenen Bots. Haben die dann trotzdem das selbe Last-Modified - Datum gespeichert wie der Bot der das letzte mal auf der Seite war? Müsste man mal analysieren denk ich.

daniel_k
PostRank 7
PostRank 7
Beiträge: 513
Registriert: 30.07.2003, 14:46
Wohnort: Berlin

Beitrag von daniel_k » 27.01.2004, 13:07

bin da gerade über ein Tool gestossen das denn http-header einer webseite ausliest:
https://www.andyhoppe.com/software/http ... header.htm

kai
PostRank 1
PostRank 1
Beiträge: 18
Registriert: 23.01.2004, 12:51

Beitrag von kai » 30.01.2004, 10:29

Bei uns schauen die Header so aus:
PHP mit Last/Expires:

Code: Alles auswählen

1: HTTP/1.1 200 OK
2: Date: Fri, 30 Jan 2004 09:19:57 GMT
3: Server: Apache
4: Expires: Sat, 05 Nov 2003 22:27:00 GMT
5: Last-Modified: Fri, 30 Jan 2004 1:0:1 GMT
6: Transfer-Encoding: chunked
7: Content-Type: text/html
PHP ohne alles:

Code: Alles auswählen

1: HTTP/1.1 200 OK
2: Date: Fri, 30 Jan 2004 09:23:40 GMT
3: Server: Apache
4: Transfer-Encoding: chunked
5: Content-Type: text/html
Echte Html Seite:

Code: Alles auswählen

1: HTTP/1.1 200 OK
2: Date: Fri, 30 Jan 2004 09:24:32 GMT
3: Server: Apache
4: Transfer-Encoding: chunked
5: Content-Type: text/html

ulle
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 18.02.2004, 10:42

Beitrag von ulle » 18.02.2004, 10:50

:o header auslesen !!!!

Hallo Leute,

bin da etwas neu auf diesem Gebiet,


wie kann man denn den [header] auslesen?

Im Quellcode(HTML) der Datei habe ich noch nie einen Header gesehen, aber es muß ja irgendwo sein!

Könnt Ihr mir mal einen Tipp geben

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag