Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwna konstrukcja warunku if (coś mi nie pasuje)
busterek
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witajcie.
Napisałem sobie skrypt, którzy z katalogu wczytuje maile i wyłuskuje z nich adresy nadawcy. Ponieważ są również maile od allegro i payu, to w tych mailach szuka pola Return-Path.
Wyciągnąłem adres z pola From, i sprawdzam jego wartość taką konstrukcją:

  1. if (strpos($adres, '@allegro.pl') === false or strpos($adres, '@payu.pl') === false)


Czyli przekładając na język ludzki: jeśli w adresie nie występuje ciąg '@allegro.pl' lub '@payu.pl' to ...

Jednakże nie działa to poprawnie. Zadziałało natomiast:

  1. if (strpos($adres, '@allegro.pl') === false and strpos($adres, '@payu.pl') === false)


Przecież to nielogiczne. Czy ja czegoś nie rozumiem? Może ktoś mi wyjaśnie o co chodzi? Dlaczego z punktu widzenia logiki pierwsza konstrukcja warunku if nie działa poprawnie?

Ten post edytował busterek 23.10.2013, 09:06:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Oczywiście, że logiczne. W końcu jeśli będziesz miał adres z @allegro.pl to sprawdzanie @payu.pl zwróci false - warunek spełniony. W odwrotnej sytuacji będzie podobnie więc warunek działa dobrze, jednak Twoje założenie jest błędne. Jeśli chcesz użyć "OR" to powinieneś sprawdzać czy strpos zwróci true.

Założenie powinno być takie: jeśli adres jest różny od @allegro.pl oraz od @payu.pl. Nie można użyć lub ponieważ jeśli będzie równy pierwszemu to zawsze będzie różny od drugiego i odwrotnie.

Ten post edytował freemp3 23.10.2013, 09:15:21
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 10:42