login  Naam:   Wachtwoord: 
Registreer je!
 Forum

php doet raar met if

Offline kokx - 11/02/2006 19:24 (laatste wijziging 11/02/2006 19:24)
Avatar van kokxOnbekend Ik ben hier een script aan het maken voor mijn site. Dan probeerde ik het volgende scriptje te includen in de index.php en toch bleef hij refreshen.
  1. <?php
  2. if($_SERVER['SCRIPT_NAME'] != "/pieter/index.php" OR $_SERVER['SCRIPT_NAME'] != "/index.php"){
  3. echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL=http://localhost/pieter/\" /></head></html>";
  4. exit();
  5. }
  6. ?>

Maar ik kwam er achter dat dit wel werkt:
  1. <?php
  2. if($_SERVER['SCRIPT_NAME'] == "/pieter/index.php" OR $_SERVER['SCRIPT_NAME'] == "/index.php"){
  3. }else{
  4. echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL=http://localhost/pieter/\" /></head></html>";
  5. exit();
  6. }
  7. ?>

Iemand een idee hoe dit komt?

8 antwoorden

Gesponsorde links
Offline MechaVore - 11/02/2006 19:30 (laatste wijziging 11/02/2006 19:31)
Avatar van MechaVore Gouden medaille

PHP gevorderde
ja, het is waarschijnlijk een van de 2. je moet gewoon 2 ifs maken, dan werkt het wel..
  1. <?
  2. if($_SERVER['SCRIPT_NAME'] != "/pieter/index.php")
  3. {
  4.  
  5. }
  6. if($_SERVER['SCRIPT_NAME'] != "/index.php")
  7. {
  8.  
  9. }
  10. ?>
Zal waarschijnlijk ook niet gaan, waar dient het eigenlijk voor?
Offline kokx - 11/02/2006 19:32 (laatste wijziging 11/02/2006 19:40)
Avatar van kokx Onbekend @mechavore: Om te controleren of een bepaald script geinclude is. Ik zal ook even testen of jouw idee werkt.
Edit: Het werkt ook.

Edit2: Ik had iets fout gedaan. Die OR moet AND zijn. (daarom werkt het waarschijnlijk niet) Het idee van mechavore werkt toch niet (had fout overgetypt)
Offline Dolfje - 11/02/2006 20:34
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
omdat als je refreshed naar http://localhost/pieter/, $_SERVER['SCRIPT_NAME'] niet gelijk is aan /index.php

zoiets moet wel werken
  1. <?php
  2. if($_SERVER['SCRIPT_NAME'] != "/pieter/index.php" OR $_SERVER['SCRIPT_NAME'] != "/index.php"){
  3. echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL=http://localhost/pieter/index.php\" /></head></html>";
  4. exit();
  5. }
  6. ?>

Offline kokx - 11/02/2006 20:54
Avatar van kokx Onbekend @Dolfje: Je doet nu precies hetzelfde fout als ik deed.
Offline ikkedikke - 12/02/2006 01:38 (laatste wijziging 12/02/2006 01:39)
Avatar van ikkedikke PHP expert die OR moet gewoon AND zijn
en ik zou PHP_SELF nemen ipv SCRIPT_NAME. van PHP_SELF weet ik zeker dat dat het script is wat door de gebruiker aangeroepen wordt, ook als er geinclude wordt.. van SCRIPT_NAME weet ik dat niet zeker
Offline Richard - 12/02/2006 07:41
Avatar van Richard Crew algemeen die OR (||) zou natuurlijk heel onlogisch zijn, je kunt natuurlijk niet op beide pagina's tegelijk zijn, waardoor de if dus altijd true is. AND (&&) gebruiken bied hier inderdaad de oplossing.
Offline kokx - 12/02/2006 10:03
Avatar van kokx Onbekend @JeXuS & ikkedikke: Die OR moet idd AND zijn. (had ik al lang opgemerkt)

@ikkedikke: Met SCRIPT_NAME is dat net zo als met PHP_SELF. Dat is overigens altijd als je een server var in een geinclude bestand aanroept (ze worden al in het parent bestand gedefinieerd).
Offline MechaVore - 12/02/2006 11:09
Avatar van MechaVore Gouden medaille

PHP gevorderde
dat dat && moest zijn bedoelde ik eigenlijk ook, want je kan op die manier gewoon geen || doen, alleen ik begreep niet precies waar het voor nodig was, nog steeds niet eigenlijk maarja..
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s