Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: (php) przeklęty IF!
Forum PHP.pl > Forum > Przedszkole
simperium
PHP:

mam taką funkcję
  1. <?php
  2. if ($HTTP_REFERER=="$zmienna") {$dzialanie="123";} else {$dzialanie="321";}
  3. ?>


niestety cokolwiek wpiszę do $zmienna zawsze $dzialanie=123. Czy ktoś mógłby napisać, gdzie robię jakiś błąd?
Dziękuję ! smile.gif

aha, próbowałem też opcji bez cytatów, czyli:

  1. <?php
  2. if ($HTTP_REFERER=="$zmienna") {$dzialanie=123;} else {$dzialanie=321;}
  3. ?>

ale efekt był wciąż ten sam sadsmiley02.gif
Nattfarinn
Sprawdź sobie zawartość tych zmiennych, np:
  1. <?php
  2. $dzialanie = $_SERVER["HTTP_REFERRER"] == $zmienna ? 123 : 321 ;
  3. echo "$dzialanie | $zmienna | ".$_SERVER["HTTP_REFERRER"];
  4. die();
  5. ?>

I zobacz co skrypt wypluł. Wtedy ewentualnie nie będziesz narzekał na IF a na coś innego smile.gif
MMX3
tak jak kolega napisał.
czasami zmienne serwera $_HTTP nie działają z powodu konfiguracji php. $_SERVER zawsze powinien chodizć.

Pozdro
simperium
wypluł coś takiego:

123 | |

zatem co to może znaczyć ?
Nattfarinn
To znaczy, że nie przypisałeś nawet wartości do zmiennej ($zmienna jest pusta) więc nie wiem jak ty chcesz cokolwiek z czymś porównywać. Rzecz druga, jak testujesz ten skrypt? Bo $_SERVER["HTTP_REFERRER"] przechowuje informacje z skąd trafiłeś na stronę. Będzie puste jeśli od tak wywołujesz stronę. Będzie też puste jeśli odnosisz się do niego z tego samego serwera.
simperium
w całości wygląda skrypt tak:

  1. <?php
  2. b=0;
  3. $ajpi=fopen("ip.txt", "r"); 
  4. while($b<500)
  5. {
  6. $dan=fgetcsv($ajpi, 100);
  7. if ($HTTP_REFERER=="$dan[0]") {$dzialanie="123";} else {$dzialanie="321";}
  8. $b++;
  9. if($dan=="")
  10. break;
  11. }
  12. flock($ajpi, 3);
  13. fclose($ajpi);
  14. ?>


zaś plik ip.txt zawiera adres ip ujęty w cytacie (powiedzmy: "127.0.0.1")
w przypadku jeśli $HTTP_REFERER równa się 0, to przecież $dzialanie powinno dać wynik 321
( else {$dzialanie="321";} ) prawda?
Nattfarinn
Wywal cudzysłów z lini 7, ale nie z przypisywanych wartości jak w pierwszym poście bo to nie ma sensu, tylko z argumentu warunku IF, tak by było:
  1. <?php
  2. if ($HTTP_REFERER==$dan[0])
  3. ?>

Dalej. Raczej korzystaj z $_SERVER["HTTP_REFERER"].
Zamiast takiej formy pętli używaj:
  1. <?php
  2. while(($dan = fgetcsv($handle, 100)) !== false)
  3. {
  4. ...
  5. }
  6. ?>

Wtedy zobacz co się dzieje.
simperium
aach... nie mam siły się z tym męczyć winksmiley.jpg
ugryzę to inaczej, ale ten IF jest głupi ;PPPPP

ale dzianks smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.