2016-06-07 3 views
2

Ich habe 2 Testskripts: session_test.php und session_write.php. Das Skript session_test.php lädt den session_write.php mithilfe einer jQuery-Ladefunktion. Das Skript läuft in Ubuntu14.04 + Firefox 46.0.1 einwandfrei, fügt jedoch nicht die Datensitzungsvariable in Windows 8.1 oder 10 mit Firefox 46.0.1 hinzu. Windows 10 + Chrome, Edge und Opera funktionieren einwandfrei.PHP Session-Variablen verloren in Firefox 46.0.1 + Windows, aber funktioniert mit Firefox 46.0.1 + Ubuntu 14.04

Kann mir jemand helfen, dieses Problem zu beheben?

session_test.php:

<?php 
session_start(); 
var_dump($_SESSION); 
$_SESSION['test']= 'testing'; 

?> 
<html> 
<head> 
    <title>website title</title> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
</head> 
<body> 
    <br> 
    <input type="checkbox" class="merken" id="merken"/> Merken box 
    <div id="div_session_write"></div> 

    <script> 
    $('.merken').click(function() { 
     var merk = 'test'; 

     var url = "session_write.php?data="+encodeURIComponent(merk); 
     console.log(url); 
     $('#div_session_write').load(url); 

     location.reload(true); 
    }); 
    </script> 
</body> 
</html> 

session_write.php:

<?php 
session_start(); 
if (isset($_GET['data'])) { 
    $_SESSION['data'] = $_GET['data']; 
} 
var_dump($_SESSION); 
?> 

Update [7-Juli-2016] Dieses Problem bei developer.mozilla.org als Bug geschrieben und ist durch das reproduzierte Entwickler von Mozilla. Sie arbeiten an eine Lösung.

Update [13 Juli 2016] Die Lösung, die funktioniert für mich ist:

$('#div_session_write').load(url, function() { 
    self.location = self.location; 
}); 

Die Lösung von den Firefox-Entwicklern zur Verfügung gestellt wurde, , wie sie es ein Timing-Problem zu sein gefunden.

+0

Scheck in Ihrem Browser Cookies aktiviert ist oder nicht? Wenn nicht Cookie aktivieren und dann versuchen –

+0

Es funktioniert für mich. (Firefox 46.0.1 + Win10) – SandroMarques

+0

@BindeshPandya Cookies sind aktiviert. Ich kann die phpSessionId im Cookie sehen. – Deepfreeze

Antwort

-1

vermeiden mit
console.log (url); location.reload (wahr); und dann das Datensitzungsvariable läuft

+0

Das Entfernen von 'console.log (url)' hat nicht geholfen. 'location.reload (true)' wird nun durch 'self.location = self.location' ersetzt. Immer noch der gleiche Effekt unter Windows 10 + Firefox 46.0.1. – Deepfreeze

-3

.ajax Funktion ist besser.

session_test.php

<?php 
session_start(); 
$_SESSION['test']= 'testing'; 
var_dump($_SESSION); 
?> 
<html> 
<head> 
    <title>website title</title> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
</head> 
<body> 
    <br> 
    <input type="checkbox" class="merken" id="merken"/> Merken box 
    <div id="div_session_write"></div> 

    <script> 
    $('.merken').click(function() { 
     var merk = 'test'; 

     var url = "session_write.php?data="+encodeURIComponent(merk); 
     console.log(url); 
     $.ajax({ 
      url: url, 
      success: function(response) { 
      $('#div_session_write').html(response); 
      } 
     }); 
     //location.reload(true); 
    }); 
    </script> 
</body> 
</html> 

session_write.php

<?php 
session_start(); 
if (isset($_GET['data'])) { 
    $_SESSION['data'] = $_GET['data']; 
} 
var_dump($_SESSION); 
?> 
Verwandte Themen