login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Query Strings: probleem

Offline DjNoiz - 18/10/2006 01:06 (laatste wijziging 18/10/2006 01:07)
Avatar van DjNoizNieuw lid Hallo Sitemasters,

Ik heb volgende code geschreven om een website-structuur met pagina's van de vorm index.php?pagina=naamvaneenpagina te verkrijgen:

  1. <?php
  2. if(IsSet($_GET['pagina'])) {
  3. if($pagina == "index") {
  4. // blablablabla
  5. } elseif($pagina == "error_nietgevonden") {
  6. // error
  7. } else {
  8. header ('Location: http://***/index.php?pagina=nietgevonden');
  9. }
  10. } else {
  11. header ('Location: http://***/index.php?pagina=index');
  12. }
  13. ?>

Nu, het probleem is dat hij steeds naar de pagina nietgevonden gaat (ongeacht of je een pagina invult, geen pagina invult, etc.) en geen inhoud weergeeft ..
Ik heb het op andere hosting geprobeerd en daar werkt het perfect!  
Iemand die kan helpen?
TNX!

7 antwoorden

Gesponsorde links
Offline Ultimatum - 18/10/2006 07:36 (laatste wijziging 18/10/2006 07:37)
Avatar van Ultimatum PHP expert Je zou je controle ook even anders moeten doen want als je een niet bestaande pagina zou aanroepen pakt hij je eerste else omdat de pagina niet gelijk is aan index en niet gelijk is aan error_nietgevevonden. Dus waarom niet:

  1. <?php
  2. if(1)
  3. {
  4. include 'home.php';
  5. }
  6. elseif(2)
  7. {
  8. include $pagina;
  9. }
  10. else
  11. {
  12. 3
  13. }
  14. ?>


1. Je home pagina en je moet ook even doen als $pagina leeg is, dus if(empty($pagina)) is beter denk ik
2. controleer met file_exists of de $pagina wel bestaat en met isset of $pagina überhaupt wel gezet is
3. Mocht bovenstaande 2 dingen niet van toepassing zijn dan scheep je de gebruiker af met een error pagina of error tekst
Offline Webtijn - 18/10/2006 07:59 (laatste wijziging 18/10/2006 08:01)
Avatar van Webtijn PHP interesse Zo'n scriptje zou beter zijn, omdat je hier d.m.v. een functie (file_exists) kijkt of de pagina bestaat. Dit scheelt weer wat code.

  1. <?php
  2.  
  3. if ( isset( $_GET['page'] ) )
  4. {
  5. if ( file_exists($_GET['page'] ) )
  6. {
  7. include( $_GET['page'] );
  8. }
  9.  
  10. else
  11. {
  12. include( '404.php' );
  13. }
  14. }
  15.  
  16. else
  17. {
  18. include( 'home.php' );
  19. }
  20.  
  21. ?>


Als dit ook niet werkt, ben ik beniewd wat de inhoud van de $_GET is, voeg dan even boven de include van 404.php toe:

  1. echo print_r( $_GET['page'] );


Maar opzich zou dit scriptje gewoon moeten werken.
Dit heeft trouwens niks met query's te maken volgens mij.
Offline Thomas - 18/10/2006 10:56
Avatar van Thomas Moderator Dat is niet vreemd trouwens, dat je telkens naar de 404-pagina gaat; eerst controleer je op het bestaan van $_GET['pagina'], en dan schakel je ineens over naar $pagina. Waar komt $pagina vandaan?
Offline RickBouman - 18/10/2006 11:42
Avatar van RickBouman Nieuw lid Try this:
  1. <?php
  2. switch($id) {
  3. default:
  4. include('home.php');
  5. break; case "home":
  6. include('homeee.php');
  7. break; case "adverteren":
  8. include('adverteren.php');
  9. break; case "befree":
  10. include('befree.php');
  11. break; case "downloads":
  12. include('downloads.php');
  13. break; case "interviews":
  14. include('interviews.php');
  15. break; case "previews":
  16. include('previews.php');
  17. break; case "hardware":
  18. include('hardware.php');
  19. break; case "software":
  20. include('software.php');
  21. break; case "articles":
  22. include('articles.php');
  23. break; case "staff":
  24. include('staff.php');
  25. break; case "contact":
  26. include('contact.php');
  27. break; case "resume":
  28. include('resume.php');
  29. break; case "membersarea":
  30. include('membersarea.php');
  31. break; case "webhosting":
  32. include('webhosting.php');
  33. break; case "gamehosting":
  34. include('gamehosting.php');
  35. break; case "luister":
  36. include('luisteren.php');
  37. break; case "programering":
  38. include('programering.php');
  39. }
  40. ?>

Maak van case wat je van index.php?id=DITISDECASE
En include het PHP Bestand
Standaard Include hij home.php, dat kan je gewoon wijzigen 
Offline Thomas - 18/10/2006 12:32
Avatar van Thomas Moderator De default-case staat bij mijn weten altijd achteraan in het switch-statement.
Offline DjNoiz - 18/10/2006 13:53
Avatar van DjNoiz Nieuw lid Tnx voor de replies!!
Het was zoals FangorN aanhaalde:
Citaat:
Dat is niet vreemd trouwens, dat je telkens naar de 404-pagina gaat; eerst controleer je op het bestaan van $_GET['pagina'], en dan schakel je ineens over naar $pagina. Waar komt $pagina vandaan?

Ik was dus blijkbaar $pagina = $_GET['pagina'] vergeten te schrijven..
Wel heel eigenaardig dat het op die andere hosting wel perfect werktte ..  
Offline Thomas - 18/10/2006 14:06 (laatste wijziging 18/10/2006 14:07)
Avatar van Thomas Moderator Daar stond waarschijnlijk register_globals aan. Dit is een serverinstelling die al vanaf PHP versie 4.2.0 default uit zou moeten staan.

Waarschijnlijk stond / staat dit nog aan op je andere host om(dat):
- je PHP-versie daaro prehistorisch is
- support te leveren aan brakke scripts, die niet van superglobals ($_POST, $_GET etc.) gebruik maken
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.235s