Ik heb een beveiligde pagina op mijn website waarbij je dus moet inloggen.
Wanneer er ingelogd is word het id van de gebruiker onthouden en sla ik die op in een session, dit alles gaat helemaal super in Mozilla Firefox.

Alleen op één of andere manier word de session die ik opsla niet doorgegeven naar de volgende pagina in internet explorer.
ik controleer of er een id is zo ja dan is de persoon ingelogt alleen er word geen enkel id doorgegeven in IE dus in IE ben ik altijd uitgelogd.

HIER WORD GECONTROLEERD OF DE GEBRUIKER BESTAAT EN WORD DE ID OPGESLAGEN:

<?php
session_start();
include("Inc_connect.php");
if (!empty($_POST)){
$query="SELECT * FROM leden WHERE naam='" . $_POST["naam"] . "'
AND wachtwoord='" . $_POST["wachtwoord"]. "'";
$result = mysql_query ($query) or die ("FOUT: " . mysql_error().$query);
if (mysql_num_rows($result) > 0){
$rij = mysql_fetch_array($result);
$_SESSION['id'] = $rij["id"];
header("location: statistieken.php");
exit();
}else{
$tekst= "Uw naam/wachtwoord combinatie is ongeldig!";
die($tekst);
}
}
?>

EN HIER MOET HIJ HET ID WEER IN KUNNEN LEZEN ALLEEN HIJ KRIJGT HIER IN INTERNET EXPLORER GEEN ID MEE:

<?php
session_start();
include("Inc_connect.php");
if(isset($_SESSION["id"])){
$query="SELECT * FROM leden WHERE id='" . $_SESSION["id"] . "'";
$result = mysql_query ($query) or die ("FOUT: " . mysql_error().$query);
$rij = mysql_fetch_array($result);
echo("
Welkom: " . $rij['naam'] ."
<table width=\"760\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td><table width=\"750\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\" bgcolor=\"#000000\">
<tr>
<td align=\"center\" width=\"190\" bgcolor=\"#666666\" align=\"center\" valign=\"middle\"><a href=\"punten.php\" target=\"stats\">Punten</a></td>
<td align=\"center\" width=\"190\" bgcolor=\"#666666\" align=\"center\" valign=\"middle\"><a href=\"fouten.php\" target=\"stats\">Fouten</a></td>
<td align=\"center\" width=\"190\" bgcolor=\"#666666\" align=\"center\" valign=\"middle\"><a href=\"driepunters.php\" target=\"stats\">Driepunters</a></td>
<td align=\"center\" width=\"190\" bgcolor=\"#666666\" align=\"center\" valign=\"middle\"><a href=\"uitloggen.php\">Uitloggen</a></td>
</tr>
</table></td>
</tr>
<tr>
<td><iframe src=\"punten.php\" height=\"800\" width=\"750\" name=\"stats\" frameborder=\"0\"></iframe></td>
</tr>
</table>
");
}else{
echo("Je moet ingelogt zijn om deze pagina te kunnen bekijken.");
}
?>
Script is lek => sql-injection.
en dat betekend? ken wel een beetje php dus niet al te technisch worden graag.
Plaats op die 2e pagina, waar het script de sessie moet uitlezen, eens hetvolgende:

<?php
print_r( $_SESSION );
?>

Geeft ie dan ook wat weer?
Om goed te scripten is inzicht in wat je doet essentieel. Zo moet je goed begrijpen dat sessies serverside zijn. Dat houd in dat de sessie op de server wordt bijgehouden en dus los staat van de browser van de client. In theorie is er dus met sessies niks mis, maar iets wat je eromheen bouwt (wellicht iets met cookies die firefox anders behandeld dan IE) . Dus dat word onze zoektocht nu, die Jelle hierboven mooi is begonnen door je te bewijzen dat er niks mis zal zijn met de sessie zelf ;)
Het belangrijkste op dit moment is nu eenmaal debuggen. Dus eerst kijken of er uberhaubt sessies in staan, is wijsheid.

Is die $_SESSION leeg binnen die print_r, heb je het onjuist gevuld.
Ik heb het net gecontroleerd. in Internet explorer krijg ik een lege array terug

Array()

Terwijl ik in FF dit terug krijg:

Array([id]=>1)
Quote alles eens weg met /* en */ en plaats het volgende eens in de 2 bestanden:

Bestand #1<?php
session_start();
$_SESSION[ 'test' ] = 'Blaat';

if( !empty( $_SESSION[ 'test' ] ) ){
echo 'De sessie \'test\' is nu in ieder geval gevuld.';
}else{
echo 'Error...';
}
?>

Bestand #2<?php
session_start();
print_r( $_SESSION );
?>

Dat zou gewoon moeten werken...
Dan zou het zelfs in IE gewoon een gevulde sessie moeten laten zien.
Anders klopt er iets niet aan je webserver lijkt me.
Aangezien sessies (zoals Afra al zei) server-based zijn. En niks met de browser te maken hebben.
Hoewel een browser wel ingesteld kan zijn dat het geen sessies en dergelijke mag onthouden.

Maar probeer eerst bovenstaande maar eens.
Nu word die zowel in IE als in FF goed uitgelezen.
Ik krijg in beide browsers "De sessie \'test\' is nu in ieder geval gevuld"

en op de andere pagina Array([test] => Blaat)
Dan heb je daar je antwoord. Er klopt iets niet aan je script...

Reageren