IE PHP yönlendirme sorun oturum değişkenleri kullanırken

4 Cevap php

Ben aşağıda gibi çalışan küçük bir web sitesi var

1) User goes karşı the login page and enters the credentials (call it page1)
2) The form gets posted karşı page2, which authenticates the user, calls  
   session_start and then sets a session variable with $_SESSION['somevar'] and 
   redirects karşı the page3
3) On page3 , I check if the $_SESSION['somevar'] is set if not send the user back karşı the login page
 //here's the code on the karşıp of the page3 
<?php
 session_start();
 if (!isset($_SESSION['somevar'])) { header("Location:http://somesite") }
 ...other code follows

Bu hatta IE 7 SAYFA1 geri yönlendirme yerine Sayfa3 içeriğini görüntüleyen devam ediyor doğru kullanıcı kimlik bilgileri ile, Firefox çalışır iken sorundur.

Bazı işaretçi bu çözmek için lütfen?

EDIT: Çok garip bir çözüm ama işe yarıyor. Ben değiştim

 if (!isset($_SESSION['somevar'])) { header("Location:http://somesite") }

karşı

 if ($_SESSION['somevar'] == '' ) { header("Location:http://somesite") }

and IE is happy now. But I am still clueless as karşı why isset didn't work in IE

Çok teşekkürler

4 Cevap

Script başlık işlevi çağırdıktan sonra çıkmak () veya () ölmek gerekiyor.

header () komut bitmiyor. Diğerleri script kalanı çalışırken bekleyin ve bu çıktıyı görüntüler Bazı tarayıcılar, devam edin ve yeni bir konuma hareket edecek. Eğer exit () çağrısı sürece, komut çıkış gösterilir olup olmadığını çalışacaktır.

Gerçekten de, sağ başlığından sonra ölmeli. Eğer değilse, aşağıdaki kod çalıştırılır ve tüm istemciler aslında (örneğin arama motoru örümceklerinin cf) yönlendirme başlığı takip olarak değil sercurity sorunlara yol açabilir.

Sen sadece kendi içeriğini var_dumping oturumunda gerçekte ne olduğunu kontrol edebilirsiniz. Çağrısı () header için önce bir çıkış tarayıcıya gönderilen gibi yönlendirme testi sırasında dikkate alınmayacaktır.

<?php
  session_start();

  /* To test: */
  var_dump($_SESSION);

  if (!isset($_SESSION['somevar'])) 
  { 
      header("Location: http://somesite");
      die();
  }

IE çerezi geri gönderme olup olmadığını öğrenmek için iehttpheasers veya wireshark kullanın. Ben bunu da olmadığını göreceksiniz beklemek, ya da bu olmamalıdır sayfaları önbelleğe alma.

C.

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

 header("Set-Cookie: SIDNAME=ronty; path=/; secure");

 header('Cache-Control: no-cache');

 header('Pragma: no-cache');

Sabit IE7 için sayfanın üstüne bu kullanmak

header('location: land_for_sale.php?phpSESSID='.session_id());

bulunduğunuz yere ?phpSESSID='.session_id() kullanın: Sabit IE6