PHP redirict na login.
Als je goed script heb je alle code boven je HTML staan en in je HTML alleen maar echo's en wat simpele if'jes. Dus je krijgt dan nooit problemen.
Thomas ik heb er geen html voor staan. Want in de html echo ik de functies en voor de html staan de functies. Maar het kan zo zijn dat het werkt . Ik ga het even proberen.
Wie weet heeft hij wel html codes boven het script staan dus wie ben jij om te zeggen dat hij dat niet heeft?
En trouwens Wouter heeft al wel een oplossing gegeven , dus je reactie slaat nergens op .
Gewijzigd op 19/02/2012 13:29:35 door Bas van de Steeg
Want zou je het op een manier als deze doen:
http://www.domein.nl/?page=pagina
Dan heb je in de index waarschijnlijk:
en ergens onderin:
Met deze manier heb je uiteindelijk wel html codes boven je pagina staan.
Dus dat $_GET['page'] staat in een functie en dan op de plek waar het include moet worden heb ik dan
staan. Zoals Wouter net zei.
de oplossing gegeven?
Waarom jou oplossing fout is:
- Meta tags horen in de head thuis en niet in de body. Dit betekend dat je nooit zomaar ergens in de body een meta tag mag echoën. Dit mag alleen in de head. Daarom is jou oplossing fout
- In PHP moet je zoveel mogelijk enkele quotes gebruiken en in HTML dubbele (is de standaard) jij hebt het precies andersom
- Tevens heb ik al gezegd dat je alle PHP boven je HTML moet afhandelen, dus dit is ook fout. In jou voorbeeld van een pagina include zou het zoiets moeten worden:
In zijn startpost zie je dat hij al een header gebruikt. Mocht hij HTML voor de header hebben staan dan zal hij al meteen een error krijgen, alleen die krijgt hij niet dus mag je concluderen dat hij geen HTML ervoor heeft staan.
Thomas, naar mijn mening heb ik hier Waarom jou oplossing fout is:
- Meta tags horen in de head thuis en niet in de body. Dit betekend dat je nooit zomaar ergens in de body een meta tag mag echoën. Dit mag alleen in de head. Daarom is jou oplossing fout
- In PHP moet je zoveel mogelijk enkele quotes gebruiken en in HTML dubbele (is de standaard) jij hebt het precies andersom
- Tevens heb ik al gezegd dat je alle PHP boven je HTML moet afhandelen, dus dit is ook fout. In jou voorbeeld van een pagina include zou het zoiets moeten worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
require_once '/lib/page/page.php'; // include de Page klasse
if( !isset($_GET['page_id']) )
$_GET['page_id'] = 1; // 1 is de homepagina
$page = Page::getById((int) $_GET['page_id']);
?>
<!doctype html>
<html lang=nl>
<head>
<meta charset=utf-8>
<title><?php echo $page->getTitle(); ?></title>
<?php echo $page->getHeadData(); // dingen als link en meta tags ?>
</head>
<body>
<h1><?php echo $page->getTitle(); ?></h1>
<?php echo $page->getContent(); ?>
</body>
</html>
require_once '/lib/page/page.php'; // include de Page klasse
if( !isset($_GET['page_id']) )
$_GET['page_id'] = 1; // 1 is de homepagina
$page = Page::getById((int) $_GET['page_id']);
?>
<!doctype html>
<html lang=nl>
<head>
<meta charset=utf-8>
<title><?php echo $page->getTitle(); ?></title>
<?php echo $page->getHeadData(); // dingen als link en meta tags ?>
</head>
<body>
<h1><?php echo $page->getTitle(); ?></h1>
<?php echo $page->getContent(); ?>
</body>
</html>
Quote:
Wie weet heeft hij wel html codes boven het script staan dus wie ben jij om te zeggen dat hij dat niet heeft?
In zijn startpost zie je dat hij al een header gebruikt. Mocht hij HTML voor de header hebben staan dan zal hij al meteen een error krijgen, alleen die krijgt hij niet dus mag je concluderen dat hij geen HTML ervoor heeft staan.
Gewijzigd op 19/02/2012 14:30:21 door Wouter J
Bas van de S op 18/02/2012 14:59:17:
Eey mensen.
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 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.
Probeer eens de volgende code te gebruiken
(ik merkte dat toen ik hem leg liet dat geen enkele browser dat begrijpt en je dan terug stuurt naar de pagina waarvan de aanvraag kwam
Gewijzigd op 19/02/2012 15:09:49 door Koen Hollander
Bedankt koen zo werkt het inderdaad wel wat ik gek vind. Moest er alleen nog een
sleep(1);
voor zetten anders werd er als nog niks veranderd. Maar het werkt nu.
Zo is het nu,
Quote:
@Maikel, naar mijn mening vertel je nu 2 verkeerde dingen:
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.
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.
Lees even: http://stackoverflow.com/questions/3553698/php-should-i-call-exit-after-calling-location-header
En zie ook: http://php.net/manual/en/function.header.php
Quote:
/* Make sure that code below does not get executed when we redirect. */
Een header redirect zorgt er dus zeker niet voor dat de rest van de code niet meer uitgevoerd wordt!
Code (php)
1
2
3
4
5
2
3
4
5
header('Location: http://www.google.nl');
// more code
header('Location: http://www.phphulp.nl');
// more code
header('Location: http://www.phphulp.nl');
BV: In dit geval zal er een redirect zijn naar Phphulp, dit terwijl google eerder was.
Gewijzigd op 07/04/2012 13:22:27 door Maikel Doeze
Maikel, bedankt voor de uitleg! Dat wist ik niet
Mijn voorkeur gaat zelf meestal uit naar een header aangezien meta iets langer nodig heeft om te redirecten
Je bent niet de eerste, het heeft mij tijdens het debuggen eens 3 uur gekost voordat ik eindelijk doorhad dat het geen server side issue was, vandaar dat ik er toch nog even op terug kwam ;)