Archief - meta http-equiv="refresh" niet snel genoeg?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

moose-man

Legacy Member
Hello,

'k zit (weer) met een nieuw probleem:
kleine login form waarbij de gebruiker naar een site wordt gestuurd. Indien login niet succesvol is, moet hij terug geredirect worden naar login scherm. Zoniet, mag de pagina getoond worden..

de redirect werkt, maar pas na 1-2 seconden.. op die tijd is een gedeelte van de site al geladen. Hoe kan ik ervoor zorgen dat onmiddelijk wordt gefreshed? Of hoe kan ik voorkomen dat de site al even wordt verder geladen?

Code:
<?php
session_start();
if( !isset($_SESSION['login']) )  // login ingegeven op login pagina
{ 	
	echo "<meta http-equiv=\"refresh\" content=\"0; url=_mainlogin.php\" />\n"; 
		
} else {}

?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>title</title>
</head>

enz...

moose-man

Legacy Member
ja dat had ik geprobeerd, maar die werkt gewoon niet bij mijn hosting (X10 hosting)
straf he..

dJeez

Legacy Member
moose-man zei:
ja dat had ik geprobeerd, maar die werkt gewoon niet bij mijn hosting (X10 hosting)
straf he..
Dat zal dan wellicht eerder aan een fout in je script liggen... Je kan uiteraard enkel redirecten als je nog geen output naar de browser hebt gestuurd, da's de vaakst voorkomende beginnersfout als redirecten niet werkt.

moose-man

Legacy Member
@dJeez, in mijn geval is er nog geen output naar de browser geweest. Het enige wat voor de header("location: _mainlogin.php") komt is PHP zonder echo's..

dJeez

Legacy Member
Als er bepaalde fouten staan in die PHP vb. omdat error_reporting ook notices weergeeft en je parameters uit $_GET/$_POST/$_SESSION/$_REQUEST (of algemeen een array index) uitleest die niet bestaan, dan is er wel output (met name die notice), ook zonder echo's. Als je Windows gebruikt en je PHP script bevat de BOM marker, dan heb je ook output, zonder echo's (en zelfs niet direct zichtbaar ook, maar een Linux server valt daar over en beschouwt de BOM als output).

moose-man

Legacy Member
Thanks for reply..
Ik kan eventueel error reporting opzetten en zien of er inderdaad errors zijn.
Echter, kan je iets meer uitleg geven ivm BOM marker? Hoe kan ik zien of mijn script al dan niet een BOM marker bevat? (de eerste keer dat ik deze term hoor :-) )

Twilkie

Legacy Member
Zoals Djeez al zei is je code structureel ook fout.
Je constructie moet zoiets worden:

PHP:
<?php
session_start();
if( !isset($_SESSION['login']) )  // login ingegeven op login pagina
{ 	
	echo "<meta http-equiv=\"refresh\" content=\"0; url=_mainlogin.php\" />\n"; 
		
} else {
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>title</title>
</head>
<?
}
?>

Op die manier wordt je verborgen pagina code niet naar de browser gestuurd zonder de gebruiker is aangemeld.
Als meta refresh niet werkt kan je ook eens proberen

PHP:
<script language="javascript">window.location="mainlogin.php";</script>

Trouwens, waarom de underscore voor je filename?

moose-man

Legacy Member
inderdaad.. natuurlijk.. das een domme fout van mij.. Had in feite direct alles in de else moeten zetten.
underscore is iets waaraan ik direkt kan zien of het werkt of niet :-) underscore = under development.

dJeez

Legacy Member
moose-man zei:
Echter, kan je iets meer uitleg geven ivm BOM marker? Hoe kan ik zien of mijn script al dan niet een BOM marker bevat? (de eerste keer dat ik deze term hoor :-) )
Byte order mark - Wikipedia, the free encyclopedia

Vooral op Windows worden die bij simpele editors (Notepad oa) voor UTF-8 bestanden gezet. Als je die dan zou uploaden naar een Linux server, dan werken de redirects in je scripts niet meer omwille van die BOM tekenreeks die als output gestuurd wordt.

Heb mij daar ooit eens rot achter gezocht (ergens begin jaren 2000), en dat is dus blijven hangen :p.

En nu we toch bezig zijn : na een header("Location: ..."); zet je best steeds een exit; om te vermijden dat het script nog verder uitgevoerd wordt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan