redirection ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niels

Niels

12/12/2005 17:34:00
Quote Anchor link
Ok ik heb een redirection script geschreven maar hij werkt niet helemaal hier staat mijn script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

    function _sRedirect($u, $s, $m){
        // $u = the url to the file where the user gonna be redirected to.
        // $s = the number of seconds elapsed before redirecting ;
        // $m = the message shown before redirecting ;
        
        // print the message ;

        echo($m);
        
        // check if the redirect should notified too the user ;
        if(!($s <= 0)){
            // try to catch the time ;
            $t = $this->_sGetTime();
            // make loop to count the seconds ;
            do{
                // renew the seconds
                $i = $this->_sGetTime();
            }
while($i < ($t+10));
        }

        // finally ridirect the user ;
        header("location: ".$f);
    }

?>


zo roep ik hem aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->_sRedirect('install/index.php', 10, 'config is missing');
?>


Ik krijg config is missing op het scherm, maar dat duurt cker 10 seconden. Maar wat ik daarna krijg snap ik niet want het aller eerst waar ik mijn pagina mee begin is het starte van de session_start() en de output buffering.
Maar toch krijg ik:

Warning: Cannot modify header information - headers already sent by (output started at D:\Webserver\Apache\htdocs\sulfCms\SulfCms V1.0.0\include\system.php:56) in D:\Webserver\Apache\htdocs\sulfCms\SulfCms V1.0.0\include\system.php on line 66

Lijn 56 was eerst de echo, maar is nu:

// check if the redirect should notified too the user ;

Kan iemand me hier uit helpen ?

P.S: $this->_sGetTime haalt de tijd op van dit moment, maar dan wel met microtime, maar dat heeft er 99% zeker niets mee temaken :)
Gewijzigd op 12/12/2005 17:36:00 door Niels
 
PHP hulp

PHP hulp

21/11/2024 20:15:50
 

12/12/2005 17:38:00
Quote Anchor link
Je hebt ergens een echo vóórdat je de functie hebt aangeroepen (of je hebt het php blok niet aan de begin van de pagina gezet). Deze vraag is al heel vaak gesteld.
 
Niels

Niels

12/12/2005 17:39:00
Quote Anchor link
De fout is nu veranderd, heb niks veranderd maar de chache geleegd, nu word hij wel redirected maar waarom laat hij niet mijn message zien, eerst deed hij dat wel ?
terwijl ik toch wel zeg dat hij hem moet laten zien ..
 
Niels

Niels

12/12/2005 17:42:00
Quote Anchor link
Nee, sebastiaan die fouten maak ik niet meer :)
Die tijd heb ik al ver achter me en daar heb ik otch al op gezocht.
Kan het kloppen dat FF niet redirect als de pagina niet te vinden is, want IE redirect hem nu wel maar FF niet.
het bericht is nog niet getoond :(.
ik ga het met een for of een gewone while lus proberen :)
 
Jelmer -

Jelmer -

12/12/2005 17:42:00
Quote Anchor link
echo($m);
staat voor header(), en dat wil niet. Dus of echo weglaten, of header(), want header() stuurt de bezoeker meteen weg, dus er wordt dan niets ge-echo'd.
 
Willem Jan Z

Willem Jan Z

12/12/2005 17:45:00
Quote Anchor link
En het is in functies toch beter om te werken met return? ipv echo...
 

12/12/2005 17:50:00
Quote Anchor link
Ligt eraan waar je een functie voor gebruikt.
Meestal douw ik alles wat ik normaal zou echo'en in een variabele die ik dan aan het eind van mijn script output.


if(!($s <= 0)){
Dit kan anders:
if($s > 0){
 
Niels

Niels

12/12/2005 17:53:00
Quote Anchor link
@Jelmer: als je je output bufferd mag dat toch wel, ik heb namelijk al eerder zon functie geschreven maar die deed het perfect, ook met het bericht
Dus daarom dat ik het niet snap, trouwens die scripts ben ik helaas kwijt :(.

@Willlem-Jan: Nee want dit is een script dat de user doorstuurt en word zonder $blaat = aangeroepen dus heeft dat in dit geval niet veel zin

Jelmer misschien dat je dan toch gelijk hebt ik zou iig geen oplossing vinden voor het toch weergeven van berichten tijdens het redirecten, wat ik vaak genoeg met php heb gezien.

Maar mss kan het ook met de header refresh functie en dan doorsturen naar een interne url, extern werkt dan niet volgens mij :)
Maar ik zal wel weer zien
 
Niels

Niels

12/12/2005 17:55:00
Quote Anchor link
@Sebastiaan: Klopt ik weet dat het extra kan, maar ik ben het nu eenmaal gewend zo te doen, en ik heb altijd het gevoel dat het een extra controle geeft. Iig Bedankt voor de tip ;)
 
Willem Jan Z

Willem Jan Z

12/12/2005 17:59:00
Quote Anchor link
Ik gebruik meestal gewoon een meta refresh
 
Niels

Niels

12/12/2005 18:04:00
Quote Anchor link
Ik denk dat ik er al achter ben, het verschil is dat de pagina pas word getoond asl de while loop klaar is, dus daar moet ik effe wat op verzinnen.
bijvoorbeeld de for, maar dat ga ik nu uitzoeken :)
 
Niels

Niels

12/12/2005 21:40:00
Quote Anchor link
De oplossing gevonden, ik ging gewoon in de prullebak zoeken, en ja hoor hij was er nog (A) :P
lol, ik zal hem effe bij scripts posten want hij is wel handig denk ik :)
 
Marien xD

Marien xD

12/12/2005 22:44:00
Quote Anchor link
Ten eerste word er een boodschap geechoed. Daarna doe je een (verkeerde) (header) redirect. Een redirect via de header (eventueel met pause). Doe gewoon het volgende:

Javascript met timeout ipv wachten en header via php. Dit is in jou geval een typisch javascript klusje...
 

12/12/2005 23:06:00
Quote Anchor link
Meta met vertraging kan ook in php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$url
= 'http://www.php.net';
header("Refresh: 2; URL={$url}");
echo "U wordt geredirect naar {$url}";
exit();
?>
 



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.