Hi Delphi-Freak,
als erstes muss ich erwähnen: der folgende Code funktioniert nur ab PHP 4.0.x.
Als erstes musst du diese Funktion in allen Dateien definieren:
Code:
//
// Append $SID to $
url. Borrowed from phplib and modified
// Taken from phpBB 2.0.10, (c) by phpBB Group ([
url]www.phpbb.com[/
url])
//
function append_sid($
url, $SID_name, $SID)
{
if ( !empty($SID) && !preg_match('#'.$SID_name.'#', $
url) 9
{
$
url .= ( ( strpos($
url, '?') != false ) ? '&' '?' ) . $SID_name . '=' . $SID;
}
return $
url;
}
Sie hängt an eine übergebene
URL eine Session-ID an. $
url ist die
URL, $SID_name der Name der Sessionvariable und $SID der Inhalt.
Als nächstes muss der Code ganz oben vor die erste Ausgabe hin:
Dieser sorgt dafür, dass die Ausgabe gecached wird, und nicht sofort ausgegeben wird.
Und am Ende kommt dieser Code hin:
Code:
$contents = ob_get_contents();
ob_end_clean();
//
// Parts of this code property of Daniel R. Wolf of [
url]www.delphipraxis.net[/
url]
//
$segments = preg_split( '#(<a.+?</a>)#s', $contents, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$contents = '';
foreach( $segments as $seg )
{
if (strpos($seg, '<a') !== false)
{
$subsegments = preg_split( '#(href=".+?")#s', $seg, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$seg = '';
foreach ( $subsegments as $subseg )
{
if (strpos($subseg, 'href') !== false)
{
$seg .= substr($subseg, 0, 6);
$seg .= append_sid(substr($subseg, 6, -1));
$seg .= '"';
}
else
{
$subseg .= $subseg;
}
}
unset($subsegments);
}
contents .= $seg;
}
unset($segments);
echo $contents;
Was macht der nun? Zuerst holt er sich alles, was ausgegeben wurde und leert den Ausgabecache.
Als nächstes wird nach
URL-tags gespaltet, und falls eines gefunden wurde, wird das href="..." herausgefiltert. Das wird anschließend so bearbeitet, dass die Session-ID angehängt wird. Anschließend wird alles nochmal mit echo ausgegeben (diesmal ohne Buffering, also endgültig). Sieh dir einfach die Befehlsreferenz zu den einzelnen Befehlen an, das sollte helfen.
Greetz
alcaeus