Avatar billede Skynet Mester
15. januar 2018 - 20:00 Der er 9 kommentarer og
1 løsning

IP / string i condition?

Hej,

Når jeg kører dette afvikler den med andre IP'er når jeg har en AND betingelse om at den ikke skal køre når det er "66.102.9.157" som besøger siden. Hvorfor? den burde jo kun stoppe "66.102.9.157"

<?php
$visitoron = True;
$ipaddress = $_SERVER['REMOTE_ADDR']

If (($DisplayForm == True) and ($visitoron == True) and (!$ipaddress == "66.102.9.157")) {
Avatar billede Skynet Mester
15. januar 2018 - 20:01 #1
afvikler den IKKE med andre IP'er (skulle der stå)
Avatar billede jakobdo Ekspert
15. januar 2018 - 23:30 #2
Avatar billede jakobdo Ekspert
15. januar 2018 - 23:30 #3
Og løsningen er && og ikke and
Avatar billede Rune1983 Ekspert
16. januar 2018 - 08:32 #4
Lidt kringlet beskrevet. Men lige umiddelbart prøv kig nedenfor.

Udfør kode hvis IP er "66.102.9.157"
If (($DisplayForm == True) and ($visitoron == True) and ($ipaddress == "66.102.9.157")) {

Udfør kode hvis IP IKKE er "66.102.9.157"
If (($DisplayForm == True) and ($visitoron == True) and ($ipaddress != "66.102.9.157")) {
Avatar billede jakobdo Ekspert
16. januar 2018 - 09:29 #5
#4 Det ændrer jo ikke på der er forskel på and og &&
Avatar billede michael_stim Ekspert
16. januar 2018 - 10:15 #6
#5

PHP kan vel stadig köre med AND og && samt OR og || ? Eller har de fjernet det? Ikke fordi jeg nogensinde har brudt mig om SQL-syntax i PHP, men har i hvert fald fungeret för.
Avatar billede jakobdo Ekspert
16. januar 2018 - 10:30 #7
Eftersom det åbenbart ikke virker at smide links herind, må jeg jo paste hvad linket ville vise jer:

<?php
// See: http://stackoverflow.com/questions/2803321/and-vs-as-operator
//      http://www.php.net/manual/en/language.operators.precedence.php
$foo = true;
$bar = false;
$truthiness = $foo && $bar;
echo ($truthiness ? 'TRUE' : 'FALSE'); // FALSE
$truthiness = $foo and $bar;
echo ($truthiness ? 'TRUE' : 'FALSE'); // TRUE
$truthiness = $bar || $foo;
echo ($truthiness ? 'TRUE' : 'FALSE'); // TRUE
$truthiness = $bar or $foo;
echo ($truthiness ? 'TRUE' : 'FALSE'); // FALSE

Så AND og && er ikke det samme. (hvis linkene taler sandt)
Avatar billede michael_stim Ekspert
16. januar 2018 - 10:35 #8
#7
Det kan jo forklare hvorfor det ikke virker. Har aldrig brugt AND i PHP og aldrig sat mig ind i AND og &&. For min skyld kunne de fjerne det helt, skaber bare en masse forvirring og ikke mindst fejl.
Avatar billede acore Ekspert
16. januar 2018 - 12:44 #9
Se http://php.net/manual/en/language.operators.logical.php og http://php.net/manual/en/language.operators.precedence.php.

"&&" og "and" er det samme BORTSET fra forskellig "operator precedence". Men da du har sat () rundt om dine == forklarer det ikke forskellen.

Disse parenteser er der ikke i #7, så det forklarer forskellen der.

Prøv at udskrive dine variable. Gætter på, at en af dem ikke er hvad du tror.
Avatar billede Skynet Mester
16. januar 2018 - 12:54 #10
humm, virker ved at skrive ($ipaddress != "66.102.9.157") fremfor (!$ipaddress == "66.102.9.157") så #4 er umiddelbart løsningen..
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