Beste mensen, in mijn volgende code werken de sessions in Internet Explorer niet. Ik heb in elke pagina die session_start() uitgevoerd dus ik snap er echt helemaal niks meer van..


<?php
session_start();


if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') )
{
   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') )
   {
     $browser = 'Netscape ';
   }
   else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') )
   {
     $browser = 'Firefox';
   }
   else if(strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome'))
   {
	   $browser = 'Chrome';
   }
   else if (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari'))
   {
     $browser = 'Safari';
   }
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
   {
     $browser = 'Opera ';
   }
   else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Internet Explorer') )
   {
     $browser = 'Explorer';
   }
}
else
{
   $browser = 'Others browsers';
}


$_SESSION['Ibrowser'] = $browser;
?>
&&&
<?php
session_start();
include("Browser.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>wk demo</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<script language="javascript">
function printTrigger(elementId) 
{
	var browser = '<?php echo $_SESSION['Ibrowser']; ?>';
	
	/*alert("hello world");*/
	if(browser == "")
	{
		alert("session is leeg");
	}
}
</script>


Bij Chrome, Safari en FF werkt het wel allemaal. Zou iemand kunnen helpen aub?

Lijn 30
Vervang die eens door

else
Wát werkt er niet?
Ik zie niet helemaal wat dat met mijn sesie te maken heeft. Maar hij geeft nog steeds aan dat de sesie leeg is.

[size=xsmall]Toevoeging op 19/01/2012 10:38:00:[/size]

@jens zodra ik op de knop klik dan geeft IE aan dat de sesie die ik gemaakt heb op browser.php leeg is op print.php
Mijn advies gevolgd?

Kijk eens: mijn Internet explorer geeft volgende string:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2; .NET4.0C; .NET4.0E)


Zoals je ziet, komt daar nergens de string 'Internet Explorer' in voor.
Vervang dus


else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Internet Explorer') )

simpelweg door

else
@kris hij komt helemaal niet zover. de sesie die nodig is om daar te komen is leeg, dus hij kan helemaal niet bij die code komen voordat die sesie>browser met "iets" gevult is :)

[size=xsmall]Toevoeging op 19/01/2012 10:48:27:[/size]

ow nee sorry ik zit helemaal verkeert te kijken...

[size=xsmall]Toevoeging op 19/01/2012 10:50:32:[/size]

Parse error: syntax error, unexpected '{' in D:\studenten_website\website\62291\Stage\VDMdm\Browser.php on line 31
PHP Parse error: syntax error, unexpected '{' in D:\studenten_website\website\62291\Stage\VDMdm\Browser.php on line 31

dit krijg ik zodra ik er een: else van maak
Ja ...
Parse errors eerst oplossen, he.

Elke { die je opent, moet gesloten worden door }

Dit zal geen verschil maken welke webbrowser de gebruiker gebruikt.
Die error is wel te verklaren, een else kan ook helemaal geen scope hebben.
M.a.w., dit kan dus niet:


}
   else( strpos($_SERVER['HTTP_USER_AGENT'], 'Internet Explorer') )
   {


Een elseif, is het enige wat juist is. En verder staan de statements totaal los van het probleem.

Sessies zouden in elke browser moeten werken, als dit niet het geval is, is dit vaak te verwijten aan instellingen van de browser. Zo heb ik een idee dat je cookies blokkeert, of zelfs hele strikte regels ervoor hanteert waarbij sessies niet aangemaakt kunnen worden.
Ik zou trouwens ook stripos() gebruiken (niet hoofdletter gevoelig).

En het is belangrijk te realiseren dat deze functie false of een getal terug kan geven (dus ook 0!).


<?php
	//let ook op de tweede =, je wilt niet dat 0 als false wordt aangezien
	if(stripos($_SERVER['HTTP_USER_AGENT'], 'Internet Exploder') !== false){
		echo 'Boem';
	}
?>
<offtopic>
He, interessante functie Kees. Is dit 100% waterdicht? Ik zie dat je kunt controleren of javascript wel of niet is ingeschakeld? Werkt dat altijd?
</offtopic>

Reageren