PHP redirict na login.
Ik probeer mijn login systeem nu zo te maken dat wanneer ik inlog met mijn Admin gebruikersnaam en wachtwoord de pagina meteen weer refresht (Zelfde effect als F5).
Alleen als ik
gebruik dan veranderd er niks aan de pagina omdat de info dan in in je cache geheugen staat. Vandesteeg.org kun je het voorbeeld vinden. Als je daar inlogt met Admin,admin123 dan maakt die de session wel aan maar dan moet je eerst de pagina refreshen voordat de wijzigingen plaatsgevonden zijn.
Ik zie het probleem niet.
Als ik inlog dan gebeurt er niks. Zodra ik de pagina refresh(f5) dan pas zie ik dat ik ingelogt ben. Maar het moet zo zijn dat als ik inlog de pagina automatish refresht en dat ik dan zie dat ik ingelogt ben. Maar dat gebeurt dus niet.
Daar had ik hier geen last van.
geprobeert.
FF
Iemand misschien nog een optie ?
gebruik
Tevergeefs......
Laat het form doorsturen naar een pagina waar je het afhandelt en zet het dan doormiddel van de header location weer terug naar de pagina waar je vandaan komt.
Maar kan ik dan het beste de error meegeven via een $_GET['error'] ?
Errors van Gebruikersnaam verplicht enzo wachtwoord is tekort,,,
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$errors = Array();
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if( !isset($_POST['name') || $_POST['name'] == '' )
$errors[] = 'U moet een naam invullen';
if( !isset($_POST['pass') || $_POST['pass'] == '' )
$errors[] = 'U moet een wachtwoord invullen';
if( count($errors) =< 0 )
{ # geen fouten
header('Location: login-afhandelen.php');
}
}
?>
$errors = Array();
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if( !isset($_POST['name') || $_POST['name'] == '' )
$errors[] = 'U moet een naam invullen';
if( !isset($_POST['pass') || $_POST['pass'] == '' )
$errors[] = 'U moet een wachtwoord invullen';
if( count($errors) =< 0 )
{ # geen fouten
header('Location: login-afhandelen.php');
}
}
?>
Login-afhandelen.php
Ah oke bedankt wouter :) Ik ga er even naar kijken maar denk dat dit wel gaat lukken.
Het valt me altijd op dat iedereen exit(); vergeet na een header redirect terwijl deze wel vereist is. IE wil zonder deze exit ook nog wel eens de hele redirect negeren.
1) Een exit() na een redirect header is niet verplicht. Sterker nog, die exit zou nooit gelezen worden, omdat de pagina al wordt doorgezonden.
2) PHP is een server-side taal, deze dingen worden dus op de server afgehandeld en niet aan de client-side. Dus of je nou IE, Chrome, Opera of Safari gebruikt, het is allemaal hetzelfde. Het verschil ligt hem in welke server je gebruikt voor de website.
Op php.net staat wel dat je exit(); kan gebruiken omdat alle code die na een redirect niet meer te lezen. Maar dit lijkt mij al te gebeuren als je doorgestuurt word.
Toevoeging op 19/02/2012 09:59:09:
Function.Header
gebruiken hier. Ik had precies hetzelfde probleem en heb het hiermee opgelost:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if($wachtwoord == $_POST['wachtwoord']) //Zoiets gebruik je waarschijnlijk om te kijken of het wachtwoord klopt.
{
echo "<meta http-equiv='REFRESH' content='0; url=http://www.jouwdomein.nl/beveiligdepagina.html'>"; //Deze echo zorgt er dus voor dat de pagina refresht in 0 seconden en naar de opgegeven url gaat.
}
?>
if($wachtwoord == $_POST['wachtwoord']) //Zoiets gebruik je waarschijnlijk om te kijken of het wachtwoord klopt.
{
echo "<meta http-equiv='REFRESH' content='0; url=http://www.jouwdomein.nl/beveiligdepagina.html'>"; //Deze echo zorgt er dus voor dat de pagina refresht in 0 seconden en naar de opgegeven url gaat.
}
?>
Gewijzigd op 19/02/2012 13:11:36 door Thomas R
Waarom zou je hier geen header kunnen gebruiken volgens jou?
Ik heb ergens gelezen dat wanneer je een header aanroept, er geen html inhoud boven de header mag staan. Als je een header aanroept moet die dus helemaal bovenaan de pagina komen te staan. Ik kwam hier laatst achter want zat met hetzelfde probleem te kampen en vond dit even goede oplossing.
Gewijzigd op 19/02/2012 13:15:35 door Obelix Idefix
Ik weet niet of het erbij staat want hij laat maar één lijn zien van zijn sccript. Ik kan daaruit niet opmaken of hij er wel of geen html voor heeft staan dus gaf ik een andere oplossing.