Pagina redirect

Status
Niet open voor verdere reacties.

Kligham

Gebruiker
Lid geworden
7 jan 2009
Berichten
389
Hallo,

Als men zich bij mij al geregistreerd heeft, en dan nog eens probeert op de activatielink te klikken, krijgen ze een error ge echoëd. Nu zou ik graag hebben dat hij redirect, Maar die error moet eerst verschijnen en dan mag hij pas na een 5-tal seconden redirecten.

Het 'beoogde' eindresultaat:

userid en/of actcode kon niet gevonden worden in de database. Naar alle waarschijnlijkheid is uw account al geregistreerd en hebt u per ongeluk een tweede maal op de registratie-link geduwd.

U wordt binnen 5 seconden geredirect


=> De 5 ->1 en dan poof :)

Hetgeen mij al was opgevallen bij het lezen is dat er een aantal manieren hiervoor zijn:

1) <meta http-equiv="refresh" content="5; url=http://127.0.0.1/index.php">
2) header("Location: http://127.0.0.1/index.php");
3) Mss. nog andere?

Bij 1 wordt je geredirect na 5 seconden, dat zit goed, alleen bij mij werkt het niet.
Bij 2 wordt je wel geredirect maar direct ipv. bijvoorbeeld 5 seconden.

-> Een bijkomend probleem is dat er voor dat de pagina geredirect wordt, die 'error' eerst moet verschijen. Bij het lezen van enkele van die scripts zei men vaak dat het niet mogelijk was, tot ik dit gevonden had:

PHP:
ob_start();

echo "Test";

header("Location: http://127.0.0.1/index.php");

ob_flush();

Alleen de tekst verschijnt niet + er wordt ook niet geredirect na 5 seconden.

Is er iemand die mij op de juiste weg kan helpen?
 
Als je wilt redirecten nadat de pagina is weergegeven, kun je niets met PHP :)

Die is dan namelijk allang klaar; je moet de browser dat laten doen.

Die Meta Redirect tag zou het gewoon moeten doen, welke browser gebruik je?
 
Mozilla firefox 3.07 -> ik krijg: Parse error: parse error in C:\wamp\www\flippen.php on line 2

PHP:
<?php
<meta http-equiv="refresh" content="5; url=http://127.0.0.1/index.php">
?>

Met IE 8 werkt het ook niet.
 
Laatst bewerkt:
Meta is geen PHP, is gewoon HTML :)

Je moet de <?php ?> tags eromheen weghalen.
 
Damn, beetje lomp van me :(

Kun je me een hint geven hoe je een cijfer van 5 -> 1 laat gaan.

5
4 (vervangt de 5 op zijn plaats)
3 (vervangt de 4 op zijn plaats)
2 (vervangt de 3 op zijn plaats)
1 (vervangt de 2 op zijn plaats)
redirect

K'heb al gezocht op countdown maar meestal gebruiken ze dat alleen voor ... dagen ... minuten ... seconden tot next release.
 
Laatst bewerkt:
Met PHP kun je na het laden van de pagina niets meer, tenzij je iets als AJAX gebruikt. Maar goed, dat is dus ook JavaScript.
 
Je kunt het zo maken dat als ze geen Javascript hebben, dat ze gewoon alleen de 5 zien staan :)

Graceful Javascript heet dat ;)
 
Je kunt het zo maken dat als ze geen Javascript hebben, dat ze gewoon alleen de 5 zien staan :)

Graceful Javascript heet dat ;)

K, dit klinkt wel leuk :p. Hoe gaat dat in zijn werk? Gewoon je javascript maken die laat tellen van 5->1 en moet er dan ergens in je PHP script staan van=

if javascript enabled -> activeer javascript
else display 5

-> Vrij ruimdenkend :( , op deze manier of moet het anders?
 
Hehe, dat kan ook idd ^^ Sorry ik ken de term nog niet zo lang.

Klingham, je kunt niet in PHP controleren of javascript uit staat of niet; wat je moet doen is een pagina aanleveren die helemaal geldig en compleet is, en vervolgens er een javascript opzetten die geactiveerd wordt zodra de pagina ingeladen is, en die vervolgens de pagina gaat wijzigen, ipv dat een deel van de pagina door javascript gemaakt wordt :)

Op die manier is het zo dat als javascript niet geactiveerd wordt, er niets veranderd aan de pagina en hij dus nog steeds geldig en compleet is :)
 
Oke ik heb een countdown timer gevonden die werkt:

HTML:
<html>
  <head>
    <title>
      Countdown Timer
    </title>
    <script type="text/javascript">
      var seconds=10; 
      var int = window.setInterval("countdown()",1000);

      function countdown() 
      { 
         seconds--; 
         var count = document.getElementById("count"); 
         count.innerHTML = seconds; 
         if (seconds == 0) 
         { 
           window.clearInterval(int);
           //do what ever you want here
         } 
      }
    </script>
  </head>
  <body>
    <div id="count"></div>
  </body>
<html>

Nu is de vraag hoe ik er nu voor zorg dat hij die 5 verandert door de output van de countdown teller. Dit is het PHP script functie. Het is een functie die in registratie.fns.php bevindt, die gebruikt wordt door registratie_voltooid.php en men krijgt het volgende te zien als un gegevens van temp_gebruiker weg zijn (en normaal gezien geregistreerd staan in gebruiker)

Hier het script:

PHP:
<?php

} else {

        //Connectie maken met database
        $connection = db_connect();

        //Zoeken naar de juiste gegevens in de database
        $result = $connection->query("SELECT * FROM temp_gebruiker WHERE gebruiker_id = '$userid' and activatiecode = '$actcode'");

        if ($result->num_rows == 0){

            echo 'userid en/of actcode kon niet gevonden worden in de database. Naar alle waarschijnlijkheid is uw account al geregistreerd en hebt u per ongeluk een tweede maal op de registratie-link geduwd <br><br>';
		
			echo 'U wordt binnen 5 seconden terug naar de homepage gebracht <br>';
		
			?> 
        
        	<a href="http://127.0.0.1/index.php"> Klik hier als je brower je niet automatisch doorstuurt ...</a>
        
        	<meta http-equiv="refresh" content="5; url=http://127.0.0.1/index.php">
        
			<?php

        } else {
 
Wat je moet doen is de 5 (alleen de 5) in een eigen div'je zetten met een id.

HTML:
U wordt over <div id="counter">5</div> seconden doorverwezen.

Zo te zien gaat het script die dan automatisch updaten :)
 
Maar in heel mijn script staat er nergens een <html><header><body> gedoe. Hoe los ik dat dan op? Waar ik die timer moet isnteken.
 
Je moet het deel dat binnen de <script> tags(inclusief de <script> dus) staat kopieren ergens in de <head> sectie van de pagina waarop je het wilt gebruiken.
 
De timer komt nu te voorschijn, alleen de opmaak is 'ondermaats':confused: (zie foto1 upload)

Dit is hoe ik het nu gezet heb om het effe uit te proberen:

HTML:
?>
        
        <html>
 		<head>
    	<title>Registratie</title>
    		<script type="text/javascript">
      		var seconds=10; 
      		var int = window.setInterval("countdown()",1000);

      		function countdown(){ 
         		seconds--; 
         		var count = document.getElementById("count"); 
         		count.innerHTML = seconds; 
         		if (seconds == 0){ 
           			window.clearInterval(int);
           			//do what ever you want here
         		} 
      		}
    	</script>
  		</head>
  		<body>
        <p>userid en/of actcode kon niet gevonden worden in de database. Naar alle waarschijnlijkheid is uw account al geregistreerd en hebt u per ongeluk een tweede maal op de registratie-link geduwd <br /></p>
        
        U wordt binnen <div id="count">5</div> seconden terug naar de homepage gebracht<br />
        <a href="http://127.0.0.1/index.php"> Klik hier als je brower je niet automatisch doorstuurt ...</a>
        
        <meta http-equiv="refresh" content="5; url=http://127.0.0.1/index.php">
    	
  		</body>
		<html>
              
		<?php

Hoe los ik dit nu nog op?
 

Bijlagen

  • foto1.png
    foto1.png
    66,3 KB · Weergaven: 78
Tsjah... styling moet je doen met CSS.

Je kunt eens de <div> vervangen door een <span> dan komt het iig in dezelfde regel terecht.

Als je er wat anders mee wilt doen, dan moet je er wat CSS styling aanhangen ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan