header prob
Ik heb een klein probleempje.
Mijn script is als volgt.
Je klikt op een link (een php_self) met een waarde in de url. adhv die waarde wordt dan een cookie geïnstalleerd.
Dan wil ik direct terug naar de pagina waar die link op was. zodat de cookie goed geïnstalleerd is en de veranderingen zijn doorgebracht.
Dat doe ik dan met een header, dat lukt op gewone pagina's. maar op een pagina uit een db met een ID dus niet.
Nu is mijn vraag hoe krijg ik die header naar de correcte pagina met dat ID, en is dat mogelijk eigenlijk :/
ik heb al wat zitten proberen maar zonder resultaat.
dit is de code v
($php is de php_self ;) )
Sander
Mijn script is als volgt.
Je klikt op een link (een php_self) met een waarde in de url. adhv die waarde wordt dan een cookie geïnstalleerd.
Dan wil ik direct terug naar de pagina waar die link op was. zodat de cookie goed geïnstalleerd is en de veranderingen zijn doorgebracht.
Dat doe ik dan met een header, dat lukt op gewone pagina's. maar op een pagina uit een db met een ID dus niet.
Nu is mijn vraag hoe krijg ik die header naar de correcte pagina met dat ID, en is dat mogelijk eigenlijk :/
ik heb al wat zitten proberen maar zonder resultaat.
dit is de code v
Code (php)
1
2
3
4
2
3
4
if ($_GET['waarde'] == '0') {
setcookie('cookie', '0', time()+86400);
header("Location: $php");
setcookie('cookie', '0', time()+86400);
header("Location: $php");
($php is de php_self ;) )
Sander
Je hebt al output dus je kan de header niet meer plaatsen.
Je kan voor een javascript oplossing kiezen:
Of je kan ob_start() gebruiken om eerst je output in de buffer op te bouwen.
Je kan voor een javascript oplossing kiezen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// Send the browser to the error page.
echo '<script language=\'javascript\'>
window.location = "http://'.$_SERVER['HTTP_HOST'].'/?page=error"</script>';
?>
// Send the browser to the error page.
echo '<script language=\'javascript\'>
window.location = "http://'.$_SERVER['HTTP_HOST'].'/?page=error"</script>';
?>
Of je kan ob_start() gebruiken om eerst je output in de buffer op te bouwen.
Of je doet een header refresh van 1 seconde waarna je de cookie set? (weet eigenlijk niet zeker of dat werkt, maar normale code na een header refresh wordt nog wel gewoon uitgevoerd..
'Danny:
Dat klopt helemaal, maar beide oplossingen die je daarvoor geeft zou ik niet gebruiken...Je hebt al output dus je kan de header niet meer plaatsen.
Zorg er gewoon voor dat de volgorde in je PHP scripts in orde is. Dus handel eerst alle PHP logica (waaronder setcookie en headers) af en verstuur dan pas output naar de browser. Dan kom je nooit in de problemen.
Oplossingen als javascript redirects of output buffering wil je echt niet gebruiken. De eerste zal niet werken als javascript uitgeschakeld is en de tweede is helemaal niet bedoeld om dit soort fouten op te lossen.
'Blanche:
Zorg er gewoon voor dat de volgorde in je PHP scripts in orde is. Dus handel eerst alle PHP logica (waaronder setcookie en headers) af en verstuur dan pas output naar de browser. Dan kom je nooit in de problemen.
Oplossingen als javascript redirects of output buffering wil je echt niet gebruiken. De eerste zal niet werken als javascript uitgeschakeld is en de tweede is helemaal niet bedoeld om dit soort fouten op te lossen.
'Danny:
Dat klopt helemaal, maar beide oplossingen die je daarvoor geeft zou ik niet gebruiken...Je hebt al output dus je kan de header niet meer plaatsen.
Zorg er gewoon voor dat de volgorde in je PHP scripts in orde is. Dus handel eerst alle PHP logica (waaronder setcookie en headers) af en verstuur dan pas output naar de browser. Dan kom je nooit in de problemen.
Oplossingen als javascript redirects of output buffering wil je echt niet gebruiken. De eerste zal niet werken als javascript uitgeschakeld is en de tweede is helemaal niet bedoeld om dit soort fouten op te lossen.
Toch zijn er situaties waarbij je de volgorde niet kan aanhouden. Denk aan bijvoorbeeld het gebruik van includes. Hierdoor is er al output geweest, en kan je in de afhandeling toch een redirect nodig hebben.
Wat is dan slimmer, ob_start gebruiken, welke er niet voor bedoeld is, maar wel zijn doel bereikt. Of alle output in een variabele gaan save (Eigenlijk zelfde effect van ob_start), en op het allerlaatste headers, en output eruit gooien naar de webbrowser.
maar hoe komt het dan dat mijn header wel werkt bij normale pagina's ?
Ik wil eigenlijk terug gaan naar de vorige pagina maar gerefreshed dan :)
ik weet niet of het echt mogelijk is maar ja :/
Ik wil eigenlijk terug gaan naar de vorige pagina maar gerefreshed dan :)
ik weet niet of het echt mogelijk is maar ja :/
Quote:
Onzin! Zoals je zelf al aangeeft kun je alle output die je tijdens je PHP logica genereert opslaan in een variabele. Pas als je alle logica hebt afgehandeld ga je deze output naar de browser versturen.Toch zijn er situaties waarbij je de volgorde niet kan aanhouden.
Kijk bijvoorbeeld maar eens naar de werking van een template engine als smarty, daar wordt werkelijk op de allerlaatste regel de output pas naar de browser verzonden:
@Sander: als je een headers already sent foutmelding krijgt, staat daar ook een bestand en regelnummer waar de output al begonnen is. Die kun je dus opzoeken en zien waarom daar output verzonden wordt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche eigenlijk krijg ik helemaal niet zo een boodschap, de enige foutmeldingen die ik krijg zijn de volgende: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
en dat omdat mijn header terug keert naar de opgegeven php_self maar het ID van de DB zit er niet meer bij :/ daarom krijg ik deze.
Ik probeer dus om dat ID wel in de header te krijgen maar het probleem is dat er niet alleen ID's zijn en ik dus iets auto nodig zou hebben :/
die setcookie is toch geen echte outpt (ofwel?) dus die header werkt correct
en dat omdat mijn header terug keert naar de opgegeven php_self maar het ID van de DB zit er niet meer bij :/ daarom krijg ik deze.
Ik probeer dus om dat ID wel in de header te krijgen maar het probleem is dat er niet alleen ID's zijn en ik dus iets auto nodig zou hebben :/
die setcookie is toch geen echte outpt (ofwel?) dus die header werkt correct
Gewijzigd op 01/01/1970 01:00:00 door Sander
Dan zit je probleem dus helemaal niet in de header, het is je mysql query die waarschijnlijk mislukt is. Controleer je dat wel ergens?
Zo nee, ga dat dan eerst eens doen en geef een foutmelding mbv mysql_error() als je query mislukt...
Zo nee, ga dat dan eerst eens doen en geef een foutmelding mbv mysql_error() als je query mislukt...
Ik denk dat ik het een beetje fout uitleg, mijn mysql is correct, die foutmelding komt omdat hij het ID uit de url haalt maar die header, na de cookie zend de bezoeker naar de php-self, zonder een ID of zoiets, dus kan er geen GET plaatsvinden en mislukt de mysql querry.
Ik wil dus eigenlijk het volgende
van pagina - index.php?waarde=x
daar klikt men op de link die de cookie instelt.
en daarna gaat de header naar index.php
maar wat ik wil is dat hij weer naar index.php?waarde=x gaat :)
Is dat mogelijk ?
Ik wil dus eigenlijk het volgende
van pagina - index.php?waarde=x
daar klikt men op de link die de cookie instelt.
en daarna gaat de header naar index.php
maar wat ik wil is dat hij weer naar index.php?waarde=x gaat :)
Is dat mogelijk ?
Dan zul je die GET variabele ook weer in je header() mee moeten geven, alleen zul je hem dan waarschijnlijk ook eerst mee moeten geven aan de link waarmee je de cookie zet.
Is het daarom niet veel verstandiger om die GET variabele te vervangen door een sessievariabele. Die is immers beschikbaar op elke pagina die je met session_start() begint...
Is het daarom niet veel verstandiger om die GET variabele te vervangen door een sessievariabele. Die is immers beschikbaar op elke pagina die je met session_start() begint...
ik kan niet volgen, ik wist niet dat dat kon, dus je kan met sessie vars ook uit de db outputten, wist ik niet.
Het prob is dat die get var soms anders is, zoals hier op phphulp, je hebt cat & id ik heb dat ook en ik kan ze moeilijk manueel instellen :)
Ik zal eens kijken naar die sessionvars, dat is het eerste dat ik ervan hoor ;)
Het prob is dat die get var soms anders is, zoals hier op phphulp, je hebt cat & id ik heb dat ook en ik kan ze moeilijk manueel instellen :)
Ik zal eens kijken naar die sessionvars, dat is het eerste dat ik ervan hoor ;)
'Sander:
Je haalt hier nu een aantal dingen door elkaar. GET variabelen, sessie variabelen en database output zijn totaal verschillende dingen en staan los van elkaar, die hebben in beginsel niets met elkaar te maken.ik kan niet volgen, ik wist niet dat dat kon, dus je kan met sessie vars ook uit de db outputten, wist ik niet.
Een GET variabele komt uit de url, een sessievariabele is aangemaakt in een PHP script en database output komt uit de database. Kortom, 3 totaal verschillende dingen...
Wat jij wilt is wellicht met een combinatie van die 3 te bereiken, maar ik krijg hete gevoel dat je zelf niet helemaal door hebt waar je nu mee bezig bent. Misschien dat het handig is om eerst eens deze PHP Beginnershandleiding door te lezen?
ik begrijp niet goed vanwaar jij met die sessie vars komt, die hebben toch niets met mijn get vars voor mijn db output te maken ?
Nee, maar je kunt ze wel gebruiken om variabelen op meerdere paginas te gebruiken zonder dat je die variabelen telkens als GET variabele mee moet geven. En dat is precies waar ze in jouw geval een uitkomst zouden kunnen bieden...
Eerst logica, dan output. Ik programmeer al een hele tijd en heb het nog nooit anders op hoeven lossen.
Misschien is het handig als je even het achterliggende idee vertelt. Het enige dat we nu weten is dat je script niet werkt, maar vertel eens wat het precies moet doen? Het kan misschien handiger dan je nu hebt.
Misschien is het handig als je even het achterliggende idee vertelt. Het enige dat we nu weten is dat je script niet werkt, maar vertel eens wat het precies moet doen? Het kan misschien handiger dan je nu hebt.
ik wil eigenlijk simpel wel een automatische refresh van de pagina ervoor, du terugkeren naar de vorige pagina automatisch.
Ik zit op een pagina en dan wil ik een cookie instellen door een get waarde, dus gaat de bezoeker naar die pagina waar de cookie wordt ingesteld; en dan wil ik direct terug naar de pagina waar de bezoeker van kwam.
Het probleem zit hem in het terug keren door dat er pagina's uit de db komen en dus een ID hebben in de url, de bezoeker gaat dan naar de correcte pagina maar zonder het correcte ID in de url en krijgt dus niet de gewenste pagina
Ik kan het niet anders uitleggen :/
@blanche, ik begrijp niet hoe die sessie vars in mijn geval een oplossing kunnen bieden :s
Ik zit op een pagina en dan wil ik een cookie instellen door een get waarde, dus gaat de bezoeker naar die pagina waar de cookie wordt ingesteld; en dan wil ik direct terug naar de pagina waar de bezoeker van kwam.
Het probleem zit hem in het terug keren door dat er pagina's uit de db komen en dus een ID hebben in de url, de bezoeker gaat dan naar de correcte pagina maar zonder het correcte ID in de url en krijgt dus niet de gewenste pagina
Ik kan het niet anders uitleggen :/
@blanche, ik begrijp niet hoe die sessie vars in mijn geval een oplossing kunnen bieden :s
wat voor soort url gaat het nou om. www.website.nl/view/id/3
zoiets? Staat het id in de url. (waar je naar terug wilt keren)
zoiets? Staat het id in de url. (waar je naar terug wilt keren)
het gaat eigenlijk om 2 verschillende, een gewone
index.php en daar is geen probleem.
maar bij de pagina's uit mijn DB , pagina.php?ID=4 vb. wel, omdat hij terug keert naar pagina.php en net naar pagina.php?ID=4
Neen, het ID staat niet in de url omdat er 2 verschillende url's zijn, eentje met GET waarden en eentje zonder.
Hij neemt van php_self en voegt dan ?waarde_cookie=ja een toe :/
index.php en daar is geen probleem.
maar bij de pagina's uit mijn DB , pagina.php?ID=4 vb. wel, omdat hij terug keert naar pagina.php en net naar pagina.php?ID=4
Neen, het ID staat niet in de url omdat er 2 verschillende url's zijn, eentje met GET waarden en eentje zonder.
Hij neemt van php_self en voegt dan ?waarde_cookie=ja een toe :/




