Apache streikt nicht mehr bei Cookies

Aus NOBAQ
Zur Navigation springenZur Suche springen

Wie im vorigen Beitrag bereits als Ausweg genannt, lasse ich nun wirklich mein CMS die Benutzer überprüfen, hole mir die Session-ID und setze das Cookie...


Das zugehörige PHP-Code sieht so aus:

<?
require_once(dirname(__FILE__) . /inc/Page.inc.php’);

$page = new Page(__FILE__);
$page->SetTitle(’Shareaza’);
$page->SetPageOption(PAGEOPT_NORIGHTROW);
$page->SetPageOption(PAGEOPT_NOLEFTROW);
$page->SetMID(’SHAREAZA_PHP’);

$acl = &$page->GetACL();
$acl->SetPublic(false);
$acl->AddGroup(’intern’);

if(!$acl->IsAllowed())
{
	$page->Header();
}

$sid = GetShareazaSID();

if(!$sid)
{
	$page->Header();
	?>
	<h1>offline</h1>
	<p>

	Shareaza antwortet leider nicht :-(

	</p>
	<?
	$page->Footer();
}

// Setze passendes Cookie
header(”Set-Cookie: ShareazaRemote=$sid; path=/);

flush();

$page->Header();

?>

<h1>Shareaza</h1>

<iframe xsrc=”<?=$WebBase?>/shareaza/home?<?=$sid?>” mce_src=”<?=$WebBase?>/shareaza/home?<?=$sid?>” width=”100%” height=”1200″ name=”shareaza” scrolling=”no” frame marginheight=”0″ marginwidth=”0″>
Dein Browser unterstützt leider keine eingebetteten Frames!
</iframe>

<?
$page->Footer();

function GetShareazaSID()
{
	$data = "GET /remote/?submit=1&username=user&password=pass HTTP/1.1
Host: 192.168.0.4:4711
Connection: Close
";

	$fp = fsockopen(’192.168.0.4, 4711, $errno, $errstr, 10);
	if(!$fp)
	{
		return 0;
	}
	fputs($fp, $data);

	$data = "";
	while(!feof($fp))
	{
		$data .= fgets($fp, 4096);
		if(preg_match(/ShareazaRemote=([0-9]+)/, $data, $sid))
		{
			fclose($fp);
			return $sid[1];
		}
	}

fclose($fp);

return 0;
}

?>

Wie man sieht, wird die Legitimität des Benutzers direkt durch das CMS gecheckt (zusätzlich prüfe ich das durch $acl->IsAllowed(), damit die SID nicht unnötig geholt werden muss), danach wird die SID geholt, mit Set-Cookie das Cookie gesetzt und der iframe geladen.