Versio

PHP Sessions werken niet in IE?

Overzicht Reageren

Pagina: 1 2 volgende »

Patrick van t Hart

patrick van t Hart

19/01/2012 10:02:29
Quote Anchor link
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..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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?

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
 
PHP hulp

PHP hulp

25/05/2012 10:48:58
Gesponsorde koppelingen:
 
Kris Peeters

Kris Peeters

19/01/2012 10:28:44
Quote Anchor link
Lijn 30
Vervang die eens door

else
 
Jens erd

Jens erd

19/01/2012 10:36:03
Quote Anchor link
Wát werkt er niet?
 
Patrick van t Hart

patrick van t Hart

19/01/2012 10:36:59
Quote Anchor link
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
 
Kris Peeters

Kris Peeters

19/01/2012 10:42:48
Quote Anchor link
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
 
Patrick van t Hart

patrick van t Hart

19/01/2012 10:47:14
Quote Anchor link
@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
 
Kris Peeters

Kris Peeters

19/01/2012 10:54:20
Quote Anchor link
Ja ...
Parse errors eerst oplossen, he.

Elke { die je opent, moet gesloten worden door }

Dit zal geen verschil maken welke webbrowser de gebruiker gebruikt.
 
- Aar -

- Aar -

19/01/2012 11:14:11
Quote Anchor link
Die error is wel te verklaren, een else kan ook helemaal geen scope hebben.
M.a.w., dit kan dus niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
}
   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.
 
Jelle -

Jelle -

19/01/2012 11:50:33
Quote Anchor link
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!).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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';
    }

?>
 
Kees Schepers
Moderator

kees Schepers

19/01/2012 11:55:20
Quote Anchor link
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']) ..
 
Ozzie PHP

Ozzie PHP

19/01/2012 12:57:59
Quote Anchor link
<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>
 
- Aar -

- Aar -

19/01/2012 12:59:20
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

19/01/2012 13:04:33
Quote Anchor link
@Aar: ah zo... jammer, dan heb je er niet heel veel aan.
 
- Aar -

- Aar -

19/01/2012 13:06:11
Quote Anchor link
PHP kan eenmaal niet zien of iets bij de client aan/uit staat.
 
Chris
Beheerder

Chris

19/01/2012 13:16:17
Quote Anchor link
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."
 
Ozzie PHP

Ozzie PHP

19/01/2012 13:20:09
Quote Anchor link
Ja, klopt inderdaad. Thanks, mijn vraag is beantwoord.

Nu weer ontopic...
 
Patrick van t Hart

patrick van t Hart

20/01/2012 09:44:55
Quote Anchor link
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...
 
Kris Peeters

Kris Peeters

20/01/2012 09:59:11
Quote Anchor link
toon nog eens je aangepaste code
 
Erwin H

Erwin H

20/01/2012 10:18:44
Quote Anchor link
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:

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.
 
Patrick van t Hart

patrick van t Hart

20/01/2012 10:24:50
Quote Anchor link
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 = '
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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>

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.
 
Kris Peeters

Kris Peeters

20/01/2012 11:02:53
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


Browser.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
?>
Gewijzigd op 20/01/2012 11:06:26 door Kris Peeters
 

Pagina: 1 2 volgende »



Overzicht Reageren

Get Adobe Flash player