Apache streikt nicht mehr bei Cookies: Unterschied zwischen den Versionen

Aus NOBAQ
Zur Navigation springenZur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 7: Zeile 7:
 
<source lang="php">
 
<source lang="php">
 
<?
 
<?
require_once(dirname(__FILE__) . /inc/Page.inc.php’);
+
require_once(dirname(__FILE__) . '/inc/Page.inc.php');
  
 
$page = new Page(__FILE__);
 
$page = new Page(__FILE__);
Zeile 41: Zeile 41:
  
 
// Setze passendes Cookie
 
// Setze passendes Cookie
header(”Set-Cookie: ShareazaRemote=$sid; path=/);
+
header("Set-Cookie: ShareazaRemote=$sid; path=/");
  
 
flush();
 
flush();
Zeile 51: Zeile 51:
 
<h1>Shareaza</h1>
 
<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″>
+
<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!
 
Dein Browser unterstützt leider keine eingebetteten Frames!
 
</iframe>
 
</iframe>
Zeile 76: Zeile 77:
 
{
 
{
 
$data .= fgets($fp, 4096);
 
$data .= fgets($fp, 4096);
if(preg_match(/ShareazaRemote=([0-9]+)/, $data, $sid))
+
if(preg_match("/ShareazaRemote=([0-9]+)/", $data, $sid))
 
{
 
{
 
fclose($fp);
 
fclose($fp);
Zeile 92: Zeile 93:
  
 
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.
 
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.
 +
 +
= Kommentare =
 +
 +
<comments />{{:{{TALKSPACE}}:{{PAGENAME}}}}
  
 
[[Kategorie:Weblog]]
 
[[Kategorie:Weblog]]

Aktuelle Version vom 2. Mai 2009, 22:11 Uhr

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.

Kommentare

<comments />Diskussion:Apache streikt nicht mehr bei Cookies