Validierung: URLs mit & und PHPSESSID
Validierung: URLs mit & und PHPSESSID
In welchen Dateien kann ich ConPresso dahin gehend ändern, dass ich meine XHTML Transitional-Seiten validiert bekomme?
Der CSS-Validator moniert "The reference to entity "PHPSESSID" must end with the ';' delimiter." (muss behoben werden, bevor er mein CSS validieren kann).
Der XHTML-Validator moniert die "&" in den URLs, die laut XHTML-Spezifikation mit "&" umgesetzt werden müssten.
Wäre dankbar für den entscheidenden Hinweis...
Der CSS-Validator moniert "The reference to entity "PHPSESSID" must end with the ';' delimiter." (muss behoben werden, bevor er mein CSS validieren kann).
Der XHTML-Validator moniert die "&" in den URLs, die laut XHTML-Spezifikation mit "&" umgesetzt werden müssten.
Wäre dankbar für den entscheidenden Hinweis...
- Matthias V
- Modul-Entwickler
- Beiträge: 1251
- Registriert: 01.01.1970 01:00
- Wohnort: Sondershausen
- Hat sich bedankt: 54 Mal
- Danksagung erhalten: 147 Mal
- Kontaktdaten:
Schau mal hier: http://community.conpresso.de/viewtopic.php?t=3306
mod_Guestbook 4.1.0
Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
- balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Aloha,
ich hatte gerade ueberlegt, ob man da was mit einem Output-Buffer machen kann, aber das wird wohl nichts, weil das &PHPSESSID ja erst angehaengt wird, wenn PHP die Seite erstellt hat.
Bei welchem Hoster bist Du? Kann man da nicht die Einstellung aendern lassen - vielleicht nur fuer Deinen Webspace?
Grundsaetzlich wird das PHPSESSID ja vom PHP auch nur angehaengt, wenn keine Cookies verfuegbar sind. Ich vermute, dass das leider bei den Validatoren der Fall ist.
Balu
ich hatte gerade ueberlegt, ob man da was mit einem Output-Buffer machen kann, aber das wird wohl nichts, weil das &PHPSESSID ja erst angehaengt wird, wenn PHP die Seite erstellt hat.
Bei welchem Hoster bist Du? Kann man da nicht die Einstellung aendern lassen - vielleicht nur fuer Deinen Webspace?
Grundsaetzlich wird das PHPSESSID ja vom PHP auch nur angehaengt, wenn keine Cookies verfuegbar sind. Ich vermute, dass das leider bei den Validatoren der Fall ist.
Balu
Inzwischen habe ich das Problem etwas eingegrenzt: Die Probleme mit der PHPSESSID habe ich nur, wenn ich die www.pecherundpartner.de/index.php in den Validator eingebe (momentan habe ich noch eine normale index.html als Warteseite).
Gibt man diese URL in den Browser ein, erfolgt die Weiterleitung auf meine ConPresso-interne Startseite a la www.pecherundpartner.de/de/index.php?rubric=home
Gebe ich diese ConPresso-URL in den Validator ein, ist alles bestens.
Ich vermute also, dass die ConPresso-Weiterleitung von der index.php in bestimmten Fällen eine PHPSESSID anhängt. Bestimmte Fälle daher, da ich das mal von semf beschriebene "Druckfunktion in ConPresso4" verwende. Sämtliche vom Validator beanstandeten Stellen haben anscheinend mit dieser Funktion zu tun:
Gibt man diese URL in den Browser ein, erfolgt die Weiterleitung auf meine ConPresso-interne Startseite a la www.pecherundpartner.de/de/index.php?rubric=home
Gebe ich diese ConPresso-URL in den Validator ein, ist alles bestens.
Ich vermute also, dass die ConPresso-Weiterleitung von der index.php in bestimmten Fällen eine PHPSESSID anhängt. Bestimmte Fälle daher, da ich das mal von semf beschriebene "Druckfunktion in ConPresso4" verwende. Sämtliche vom Validator beanstandeten Stellen haben anscheinend mit dieser Funktion zu tun:
Code: Alles auswählen
Error Line 51 column 64: general entity "PHPSESSID" not defined and no default entity.
...href="indexprint.php?rubric=home_de&PHPSESSID=8354089c80fe70f075affc414a0f1d
- MarkusR
- Handbuchversteher
- Beiträge: 7362
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 934 Mal
- Kontaktdaten:
Da wird es schon klarer...
wird möglicherweise dieser Link durch ein http-include erzeugt?
Dann muß ja Dein Server bei sich selbst eine Seite via http anfordern (statt sie als php-Datei direkt zu includen). Ein PHP-include nimmt allerdings keinerlei Cookies an und provoziert demzufolge zwangsläufig die Session-ID (ich habe das auch gerade bei einem Projekt beobachtet, aber mich stört das nicht...)
wird möglicherweise dieser Link durch ein http-include erzeugt?
Dann muß ja Dein Server bei sich selbst eine Seite via http anfordern (statt sie als php-Datei direkt zu includen). Ein PHP-include nimmt allerdings keinerlei Cookies an und provoziert demzufolge zwangsläufig die Session-ID (ich habe das auch gerade bei einem Projekt beobachtet, aber mich stört das nicht...)
Ciao Markus
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ich blicke da leider nicht ganz durch, was sich da alles abspielt, aber der Quellcode (im _local_header.php) der die Druckfunktion aufruft lautet:
Code: Alles auswählen
<div id="print">
<?php if (stristr($_SERVER['PHP_SELF'],'detail.php')) {
$printfile = 'detailprint.php';
} else {
$printfile = 'indexprint.php';
}
if (!empty($_SERVER["QUERY_STRING"])) {
$printfile .= '?'.$_SERVER["QUERY_STRING"];
}
echo '<a title="Druckansicht" href="'.$printfile.'" target="_blank"><img src="../images/basic/icon_print.gif" alt="Drucker-Icon" width="16" height="18" class="icon" border="0"/>Seite drucken</a>';
?>
</div><!-- end print -->
- MarkusR
- Handbuchversteher
- Beiträge: 7362
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 934 Mal
- Kontaktdaten:
Hmmm... die Session-ID wird bei der Weiterleitung anghängt und dann später normalerweise automatisch entfernt. Das verwendete Script hängt sie aber wieder an, daher solltest Du mal versuchen, ob man sie einfach im Vorfeld schon entfernt und die Zeile in CONPRESSO_DIR/index.php
ändert in
Code: Alles auswählen
header('Location: '.BASE_ABS.$cpoSystem['homepage'].(stristr(BASE_ABS.$cpoSystem['homepage'], '?')===FALSE ? '?'.SID : '&'.SID));
Code: Alles auswählen
header('Location: '.BASE_ABS.$cpoSystem['homepage']);
Ciao Markus
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
- balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Hallo,
koenntest Du mal das folgende Code-Fragment probieren?
Ich bin nach Lesen der PHP-Dokumentation eigentlich davon ausgegangen, dass ich einen leeren String (SID='') einfach anhaengen darf. Denn die Konstante SID sollte eigentlich nur gesetzt sein, wenn der Cookie-Mechanismus nicht funktioniert.
Aus irgendeinem Grund scheint PHP das aber doch anders zu machen?
Ich vermute, dass der trans_sid-Mechanismus da noch zwischenfunkt.
Balu
koenntest Du mal das folgende Code-Fragment probieren?
Code: Alles auswählen
if (SID!='')
header('Location: '.BASE_ABS.$cpoSystem['homepage'].(stristr(BASE_ABS.$cpoSystem['homepage'], '?')===FALSE ? '?'.SID : '&'.SID));
else
header('Location: '.BASE_ABS.$cpoSystem['homepage']);
Aus irgendeinem Grund scheint PHP das aber doch anders zu machen?
Ich vermute, dass der trans_sid-Mechanismus da noch zwischenfunkt.
Balu
Hallo Balu,
zuerst funktionierte es nicht, aber dann kam ich auf den Trichter, das &-Zeichen korrekt für die URL zu setzen (&) und siehe da: es validiert einwandfrei!
Leider bin ich ein typischer PHP-Probierer und -Bastler und kann mich ein wenig durchkämpfen, aber bei der von dir angesprochenen Thematik muss ich leider passen.
Ich hoffe, mein Test hat trotzdem zu einer kleinen Erhellung der Thematik beigetragen
zuerst funktionierte es nicht, aber dann kam ich auf den Trichter, das &-Zeichen korrekt für die URL zu setzen (&) und siehe da: es validiert einwandfrei!
Code: Alles auswählen
require_once('_include/common.inc.php');
if (SID!='')
header('Location: '.BASE_ABS.$cpoSystem['homepage'].(stristr(BASE_ABS.$cpoSystem['homepage'], '?')===FALSE ? '?'.SID : '&'.SID));
else
header('Location: '.BASE_ABS.$cpoSystem['homepage']);?>
Ich hoffe, mein Test hat trotzdem zu einer kleinen Erhellung der Thematik beigetragen
-
- ConPresso-Checker
- Beiträge: 101
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 6 Mal
Ampersands in URLs
Hallo,
bei mir hat folgendes geholfen:
In die Datei _include/constants.inc.php, folgendes nach
einfügen:
Grüsse
Sandra
bei mir hat folgendes geholfen:
In die Datei _include/constants.inc.php, folgendes nach
Code: Alles auswählen
if (!defined('CPO')) exit;
Code: Alles auswählen
ini_set('arg_separator.output', '&');
Sandra