Avatar billede gil-galad Nybegynder
11. juni 2004 - 12:53 Der er 17 kommentarer og
1 løsning

Problem med simpel if sætning

Hej jeg har dette script:

<?php
$reload = $_GET["reload"];
if ($reload == 0){echo bla;}
else{
?>
<script type="text/javascript">
if(screen.availWidth<=1023){
if(document.cookie&&document.cookie.indexOf('800')==-1) {document.cookie="sitesize=800;expires=Fri, Dec 31 2004 23:59:59 GMT;";
window.location.replace("<?php echo $_SERVER["PHP_SELF"]; ?>?reload=0")
}}
</script>
<?php } ?>

Det skal, hvis reload=0 skrive "bla" og eller skrive javascriptet ud, men af en eller anden spooky grund skriver den altid "bla", og aldrig javascriptet?!
Avatar billede gil-galad Nybegynder
11. juni 2004 - 12:55 #1
Det skal, hvis reload=0 skrive "bla" og ellers skrive javascriptet ud, men af en eller anden spooky grund skriver den altid "bla", og aldrig javascriptet?!
Avatar billede technodance.dk Nybegynder
11. juni 2004 - 13:00 #2
<?php
$reload = $_GET["reload"];
if ($reload == 0){
?>
<script type="text/javascript">
if(screen.availWidth<=1023){
if(document.cookie&&document.cookie.indexOf('800')==-1) {document.cookie="sitesize=800;expires=Fri, Dec 31 2004 23:59:59 GMT;";
window.location.replace("<?php echo $_SERVER["PHP_SELF"]; ?>?reload=0")
}}
</script>
<?php
}else{
echo 'bla';
}
?>
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:06 #3
Prøv at kalde filen med: fil.php?reload=1

Så får du javascriptet frem. Husk at hvis ikke $_GET["reload"] bliver sat, så er den lig med 0 (false)
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:07 #4
og så ret lige til:
if ($reload == 0){echo "bla";}
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:18 #5
tskmgr> jeg kan ikke kalde den med reload=1(jo, det kan, jeg men vil ikke)

technodance > det virker ik' den skriver scriptet ud selvom jeg kalder den med index.php?reload=0

i kan selv se i kigge i kilden her:
http://spiff.users.whitehat.dk/index.php?reload=0 og her:
http://spiff.users.whitehat.dk/index.php
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:19 #6
$reload vil altså både være lig med 0 når du kalder filen med:

fil.php
og
fil.php?reload=0
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:22 #7
ok nu virker det men reload=nej istedet...
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:23 #8
og nu virker det efter hensigten.. smid et svar taskmgr
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:24 #9
Du skal lige forstå hvad jeg skriver her:

Din if-sætning vil aldrig nå til "else" hvis du kun kalder index.php med 'index.php' og 'index.php?reload=0'

Når du kalder filen sådan:
http://spiff.users.whitehat.dk/index.php?reload=0
Så er $reload jo lig med nul, idet du sætter den til det i din URL (reload=0)

Når du kalder filen med:
http://spiff.users.whitehat.dk/index.php
Så vil $reload STADIGVÆK være lig med nul, fordi at variablen ikke er sat og dermed er lig med nul (FALSE)
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:24 #10
Fik du fat i min pointe? :)
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:25 #11
ja, vidste bare ikke at 0 ikke kunne gælde som tallet 0, men = ingenting 

med det ved jeg nu

TAK!
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:26 #12
Velbekomme :)
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:29 #13
Du kan sådan set ændre det til:
"if (!$reload){"

Fordi en if tjekker jo om udtrykket i parantesen er sandt.

Når en variabel ikke er sat, så er den FALSE (altså lig med 0)
Når en variabel er sat, så er den TRUE og lig med det den er sat til.
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:34 #14
hvad gør !  -tegnet så her? true eller false
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:40 #15
!-tegnet er en såkaldt logisk operator og betyder "NOT", dvs.:

"if(!$reload)"
Er sand hvis variablen ikke er sand (pga. !-tegnet)

og

"if($reload)"
Er sand hvis variablen er sand.

http://dk.php.net/manual/en/language.operators.logical.php
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:44 #16
ok, vil du sige at hele scriptet er rimeligt sikkert nu? Jeg mener det kan da ikke komme til at stå og reloade siden pga. en eller anden fejl vel?(at window.location.replace("<?php echo $_SERVER["PHP_SELF"]; ?>?reload=0")  går amok?)

det var nemlig defor jeg startede dette, da min server gik ned, fordi en eller anden dør reloadede min side 3200 gange på 30min.....
Avatar billede taskmgr Nybegynder
11. juni 2004 - 13:47 #17
Det skulle være sikkert ja. Jeg har ikke den store erfaring med JS, men det ser fint nok ud.

Du ka' evt. læse min artikel om kontrol-strukturer i PHP (især afsnittet om if-sætninger)
Der har jeg lavet nogle abstraktioner, som måske kan gøre det mere klart for dig :)
http://www.eksperten.dk/artikler/267
Avatar billede gil-galad Nybegynder
11. juni 2004 - 13:48 #18
ok takker ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester