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.");
}
?>
Gebruik $_SERVER['REQUEST_METHOD'], die heeft geen problemen met IE.
!empty( $_POST )

Heeft IE ook geen problemen mee hoor.
Hoe zou ik anders moeten controleren of er ingelogd is dan ?
want nu doe ik dat dus op het id

1) je logt in krijgt een id mee
2) er word gecontroleerd of je een id hebt zo ja ben je ingelogd zo nee ben je niet ingelogd krijg je een foutmelding.
3)je gaat naar de beschermde pagina
Jelle Posthuma schreef op 18.08.2009 14:48
!empty( $_POST )

Heeft IE ook geen problemen mee hoor.


Volgens mij was het niet goed om empty () over superglobals heen te gooien...
Althans, dat is mij verteld hier op PHPHulp. Nu moet ik wel eerlijk bekennen dat ik niet goed meer weet waarom dat was.. :-)

$_SERVER['REQUEST_METHOD'] werkt iig altijd bij mij ;-)
Ok ik heb het nu zo ver dat ik zowel in IE als in FF kan inloggen:

aanmelden.php

<?php
session_start();
include("Inc_connect.php");
echo("
<body bgcolor=\"#FFFF66\">
Om de statistieken te kunnen bekijken dien je ingelogt te zijn.<br />
Je gebruikersnaam is je eigen voornaam. Om aan je wachtwoord te komen
moet je een email sturen naar [email protected]
Dit geld alleen voor leden van Pekel Sharks.
<br /><br /><br />
<center>
<form name=\"aanmelden\" method=\"post\" action=\"beveiligen.php\">
<table width=\"275\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\" bgcolor=\"#000000\">
<tr>
<td colspan=\"2\" bgcolor=\"#666666\"><div align=\"center\"><strong>Aanmelden</strong></div></td>
</tr>
<tr>
<td width=\"98\" bgcolor=\"#999999\">Naam:</td>
<td width=\"196\" bgcolor=\"#999999\"><input type=\"text\" name=\"naam\" size=\"25\"/></td>
</tr>
<tr>
<td bgcolor=\"#999999\">Wachtwoord:</td>
<td bgcolor=\"#999999\"><input type=\"password\" name=\"wachtwoord\" size=\"25\" /></td>
</tr>
<tr>
<td bgcolor=\"#999999\">&nbsp;</td>
<td align=\"center\" valign=\"middle\" bgcolor=\"#999999\"><input type=\"submit\" name=\"aanmelden\" value=\"Aanmelden\" /></td>
</tr>
</table>
</form>
</center>
");
?>

beveiligen.php:

<?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);
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>
");
exit();
}else{
$tekst= "Uw naam/wachtwoord combinatie is ongeldig!";
die($tekst);
}
}
?>


Alleen nu moet ik nog een controle kunnen uitvoeren op aanmelden.php
of de persoon is ingelogd. want wanneer je al ingelogd bent hoef je niet opnieuw aan te melden.
@Edwin, Tip: Gebruik enkele quotes om HTML te echoen. Zo hoef je niet elke dubbele quote van HTML zelf te gaan escapen.
ok bedankt, dat wist ik niet vond het altijd al een rotwerk om al die backslashes erin te zetten.
Maar heeft iemand een idee hoe ik op aanmelden.php kan controleren of iemand al ingelogd is of niet?

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Reageren