PHP Sessions werken niet in IE?
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..
Bij Chrome, Safari en FF werkt het wel allemaal. Zou iemand kunnen helpen aub?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?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>
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?
Kees Schepers:
Ik heb even je post aangepast. Zou je in het vervolg alle code in code tags willen zetten? Als je dit niet doet dan kan het erg onleesbaar zijn wat bij jou het geval is. Tevens heb ik ook wat taal correcties gedaan op je post, zodat mensen je vraag beter begrijpen.
Gewijzigd op 19/01/2012 11:35:33 door Kees Schepers
Gesponsorde koppelingen:
Lijn 30
Vervang die eens door
else
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.
Toevoeging op 19/01/2012 10:38:00:
@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
Toevoeging op 19/01/2012 10:38:00:
@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
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 :)
Toevoeging op 19/01/2012 10:48:27:
ow nee sorry ik zit helemaal verkeert te kijken...
Toevoeging op 19/01/2012 10:50:32:
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
Toevoeging op 19/01/2012 10:48:27:
ow nee sorry ik zit helemaal verkeert te kijken...
Toevoeging op 19/01/2012 10:50:32:
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.
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:
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.
M.a.w., dit kan dus niet:
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!).
En het is belangrijk te realiseren dat deze functie false of een getal terug kan geven (dus ook 0!).
En ik zou ook naar de volgende functie kijken: http://php.net/manual/en/function.get-browser.php. Wellicht dat je code dan netter kan maken door te werken met een switch($browserInfo['browser']) ..
<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>
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>
Ik denk eerder dat er wordt gecontroleerd of de browser Javascript ondersteund, niet of het aan of uit staat.
Lynx bijv. als text-browser zal ongetwijfeld niks met JS doen.
Lynx bijv. als text-browser zal ongetwijfeld niks met JS doen.
@Aar: ah zo... jammer, dan heb je er niet heel veel aan.
PHP kan eenmaal niet zien of iets bij de client aan/uit staat.
Offtopic:
@Aar, voor de volledigheid zou je zin een kleine toevoeging moeten krijgen: "PHP (Server-side) kan eenmaal niet zien of iets bij de bezoeker (Client-side) aan/uit staat."
@Aar, voor de volledigheid zou je zin een kleine toevoeging moeten krijgen: "PHP (Server-side) kan eenmaal niet zien of iets bij de bezoeker (Client-side) aan/uit staat."
Ja, klopt inderdaad. Thanks, mijn vraag is beantwoord.
Nu weer ontopic...
Nu weer ontopic...
Heey bedankt iedereen, ik heb de instellingen voor de Cookies en session enzo juist minder beveiligd zodat dit zou werken, maar dat is het geval dus niet. ik ben er nog steeds niet uit wat nou het probleem zou kunnen zijn...
toon nog eens je aangepaste code
Je roept session_start() twee keer aan. Een keer in het script zelf en een keer in het aangeroepen browser.php. Dat is in elk geval geen goed begin. Vanuit de php manual:
De session_start() in browser.php weghalen dus. Of het helemaal je probleem verhelpt durf ik niet te zeggen.
Quote:
As of PHP 4.3.3, calling session_start() after the session was previously started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored.
De session_start() in browser.php weghalen dus. Of het helemaal je probleem verhelpt durf ik niet te zeggen.
in Browser.php is eigelijk alleen dit aangepast:
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
{
$browser = 'Opera ';
}
else
{
$browser = 'Explorer';
}
voor print.php:
?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 = '';
var iFramePdf = elementId;
/*alert("hello world");*/
if(browser == "")
{
alert("session is leeg");
}
else
{
if(browser == 'Explorer')
{
//alert("IE");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Safari')
{
//alert("Safari");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Chrome')
{
//alert("Chrome");
var getMyFrame = document.getElementById(elementId);
getMyFrame.focus();
getMyFrame.contentWindow.print();
}
else if(browser == 'Firefox')
{
//alert("Firefox");
window.open('http://62291.ict-lab.nl/Stage/VDMdm/pdf.php');
}
else
{
alert("Onbekende Browser");
}
}
}
</script>
ik heb gister ook nog met een collega van mij eraan zitten puzzelen maar zelfs hij zij dat er eigelijk niks mis is met mijn script alleen werkt hij gwn niet in IE
Toevoeging op 20/01/2012 10:26:56:
bij alle andere browsers werkt het wel ook met de nu gecommente alert.
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
{
$browser = 'Opera ';
}
else
{
$browser = 'Explorer';
}
voor print.php:
?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 = '';
var iFramePdf = elementId;
/*alert("hello world");*/
if(browser == "")
{
alert("session is leeg");
}
else
{
if(browser == 'Explorer')
{
//alert("IE");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Safari')
{
//alert("Safari");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Chrome')
{
//alert("Chrome");
var getMyFrame = document.getElementById(elementId);
getMyFrame.focus();
getMyFrame.contentWindow.print();
}
else if(browser == 'Firefox')
{
//alert("Firefox");
window.open('http://62291.ict-lab.nl/Stage/VDMdm/pdf.php');
}
else
{
alert("Onbekende Browser");
}
}
}
</script>
ik heb gister ook nog met een collega van mij eraan zitten puzzelen maar zelfs hij zij dat er eigelijk niks mis is met mijn script alleen werkt hij gwn niet in IE
Toevoeging op 20/01/2012 10:26:56:
bij alle andere browsers werkt het wel ook met de nu gecommente alert.
Patrick van t Hart op 19/01/2012 10:02:29:
... Ik heb in elke pagina die session_start() uitgevoerd dus ik snap er echt helemaal niks meer van..
Toch even duidelijk maken: zo hoort het niet.
Je mag session_start() maar 1 keer tegen komen.
Je moet session_start() zetten bovenaan elke php-file waar mensen naartoe surfen.
Niet in include files (of juist wel in 1 include file die bij elk verzoek wordt geïnclude).
Indien de gebruiker altijd via index.php gaat, heb je session_start() maar 1 keer nodig in je hele site.
Probeer dit eens: bij mij werkt dit in alle browsers (die op deze pc zijn geïnstalleerd). Ik heb de alert's terug gezet (debug mode)
index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?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']; ?>';
var iFramePdf = elementId;
/*alert("hello world");*/
if(browser == "")
{
alert("session is leeg");
}
else
{
if(browser == 'Explorer')
{
alert("IE");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Safari')
{
alert("Safari");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Chrome')
{
alert("Chrome");
var getMyFrame = document.getElementById(elementId);
getMyFrame.focus();
getMyFrame.contentWindow.print();
}
else if(browser == 'Firefox')
{
alert("Firefox");
window.open('http://62291.ict-lab.nl/Stage/VDMdm/pdf.php');
}
else
{
alert("Onbekende Browser");
}
}
}
</script>
</head>
<body>
<input type="button" onclick="printTrigger(this)" value="Klik"/>
</body>
</html>
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']; ?>';
var iFramePdf = elementId;
/*alert("hello world");*/
if(browser == "")
{
alert("session is leeg");
}
else
{
if(browser == 'Explorer')
{
alert("IE");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Safari')
{
alert("Safari");
window.frames[iFramePdf].focus();
window.frames[iFramePdf].print();
}
else if(browser == 'Chrome')
{
alert("Chrome");
var getMyFrame = document.getElementById(elementId);
getMyFrame.focus();
getMyFrame.contentWindow.print();
}
else if(browser == 'Firefox')
{
alert("Firefox");
window.open('http://62291.ict-lab.nl/Stage/VDMdm/pdf.php');
}
else
{
alert("Onbekende Browser");
}
}
}
</script>
</head>
<body>
<input type="button" onclick="printTrigger(this)" value="Klik"/>
</body>
</html>
Browser.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
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
{
$browser = 'Explorer';
}
}
else
{
$browser = 'Others browsers';
}
$_SESSION['Ibrowser'] = $browser;
?>
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
{
$browser = 'Explorer';
}
}
else
{
$browser = 'Others browsers';
}
$_SESSION['Ibrowser'] = $browser;
?>
Gewijzigd op 20/01/2012 11:06:26 door Kris Peeters



