vraagjes over header()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roberto Beer

Roberto Beer

20/03/2007 17:50:00
Quote Anchor link
Hallo,

Om wat gebruikersvriendelijkheid te creeeren voor mijn cms, heb ik hier en daar een redirect nodig.

Eerst deed ik dit met Javascript, maar ik kwam erachter dat dat niet zo handig werkt, omdat er dan altijd iets geprint moet worden, namelijk de aanroep van de Javascript-functie.

Nu weet ik dat er zoiets als header() bestaat die je pagina kan laten redirecten, maar tot nu toe snap ik er nog niet zoveel van. Ik vind de uitleg op php.net (en andere sites) een beetje ingewikkeld.

De gebruiker maakt bijv. een fotoalbum aan. Als dat gelukt is, wordt de gebruiker ge-redirect naar fotoalbums.php?view=x, waarbij x mbv mysql_insert_id() wordt opgevraagd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

if($result) {
header("Location: ");
exit;
}

?>


Zoiets moet het worden. Ook heb ik als allereerste ruimte op mijn beheerpagina in het script: header() staan. Wat erin moet, weet ik niet, maar er mist een argument. Bijkomend probleem is dat ie de session_start() dan weer niet kan gebruiken, omdat de headers-already-sent zijn door header() die er 1 regel boven staat.

Kan iemand me helpen?
 
PHP hulp

PHP hulp

24/11/2024 07:54:03
 
Nick

Nick

20/03/2007 18:09:00
Quote Anchor link
de Headers Already Sent error message krijg je doordat je eerder op de pagina de headers hebt gebruikt. Om dit tegen te gaan, kan je heel simpelweg de code verplaatsen BOVEN de headers die gebruikt zijn.
vervolgens pas je de code aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
//mysql connect e.d hier
//ik neem hierbij aan dat je voor $x een waarde hebt ingesteld al.

if($result) {
header("Location: fotoalbums.php?view=".$x."");
exit;
}

//de rest vd site als $result FALSE is, waaronder de header, bijv include("header.php");
?>



Volgens mij bedoelde je dit toch? Als het niet zo is, zeg t maar!
Gewijzigd op 01/01/1970 01:00:00 door Nick
 
Roberto Beer

Roberto Beer

20/03/2007 18:17:00
Quote Anchor link
Ik heb zeg maar 1 pagina: ysbeerbeheer.php. Deze include alle categorieen en subcategorieen. Dus de gebruiker blijft altijd op het adres ysbeerbeheer.php, en vaak met GET-dingetjes erachter (zoals de categorie dus).

De eerste regel van ysbeerbeheer.php is session_start(). Dat is de functie die dus altijd als eerste komt, onafhankelijk van welke actie je uitvoert.

Als ik het goed begrijp zit daar de fout? Hoe kan ik dit omzeilen?
 
Baarr

Baarr

20/03/2007 18:24:00
Quote Anchor link
De meeste gemaakte fout is dat wanneer je al data naar de browser geduwd hebt je header niet meer kunt gebruiken.

Voorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<html>
 <head>
  <title>asdf</title>
  </head>
<body>
<?php

header('Location : http://www.baarr.nl');

?>


Werkt dus niet

Zelfs een spatie of regel bovenaan je php file kan hiervoor zorgen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
  *spatie*
<?php
header('Location : http://www.baarr.nl');
?>


Werkt dus ook niet.


Gewijzigd op 01/01/1970 01:00:00 door Baarr
 
Roberto Beer

Roberto Beer

20/03/2007 18:54:00
Quote Anchor link
Dat heb ik inderdaad gelezen.

Hoe zorg je er dan voor dat na het invoeren van gegevens in een tabel, toch een redirect kan doen?
 
Baarr

Baarr

20/03/2007 18:57:00
Quote Anchor link
Hoe bedoel je na het invoeren, gewoon na het posten van een formulier ?

Zet dan in ieder geval al je logica bovenaan in het script en de html en je echo's etc pas daaronder.
 
Roberto Beer

Roberto Beer

20/03/2007 19:03:00
Quote Anchor link
Dat is al zo, maar het probleem is dus dat er een verzamelpagina is genaamd ysbeerbeheer.php, die heeft al een aantal regels, waaronder includes en dergelijke.

als dan fotoalbums.php is geinclude, dan kan die redirect toch nooit daarboven staan?
 
Baarr

Baarr

20/03/2007 19:27:00
Quote Anchor link
Nee klopt, en als die file pas later geinclude word, dan kun je header niet gebruiken en moet je een andere oplossing zoeken...

Je kunt javascript gebruiken, dus document.location = blabla (ff googlen).

Of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
die('<html><head><meta content refresh of zoiets></head>blabla')


je snapt het idee wel..

Ik vind deze beiden oplossing allesbehalve netjes , maar ast moet...
 
Roberto Beer

Roberto Beer

20/03/2007 19:35:00
Quote Anchor link
Ja dat zou wel kunnen inderdaad. Weer terug naar Javascript ;) k Had wel verwacht dat dit makkelijker in php zelf zou kunnen, maar om nu mijn hele cms-structuur weer om te bouwen om zo header() bovenaan te krijgen... ook geen zin in.
 
Roberto Beer

Roberto Beer

20/03/2007 20:03:00
Quote Anchor link
Bijna vergeten, maar allemaal bedankt voor de hulp!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.