Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z IP
dasko
post 29.11.2004, 18:32:34
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


chciałem napisać skrypt sondy tak, aby z jednego adresu IP móc oddać tylko jeden głos(ip są zapisywane w pliku). niestety z tego samego ip mozna głosować kilka razy. nie wiem w czym tkwi problem...

Macie kawałek kodu:
  1. <?php
  2. $answs = array(&#092;"Tak\", \"Nie\", \"Nie wiem\");
  3. $fp = fopen(&#092;"ips.dat\", \"r\");
  4. $ips = fgets($fp, 10000);
  5. fclose($fp);
  6. $takips = explode(&#092;"|\", $ips);
  7. foreach($takips As $ip) {
  8. if($ip != $_SERVER['REMOTE_ADDR'] && $ip != &#092;"END\") {
  9. continue;
  10. }
  11. ...........kilka linijek niewaznego kodu wykonywanego gdy dojdzie do END............
  12.  
  13. if($ip == $_SERVER['REMOTE_ADDR']) {
  14. $fp = fopen(&#092;"ile.dat\", \"r\");
  15. $value = fgets($fp, 16);
  16. fclose($fp);
  17. $taken = explode(&#092;",\", $value);
  18. $suma = $taken[0] + $taken[1] + $taken[2];
  19. $vot0 = round($taken[0] / $suma * 100);
  20. $vot1 = round($taken[1] / $suma * 100);
  21. $vot2 = round($taken[2] / $suma * 100);
  22. echo &#092;"<table width=147 height=131 cellpadding=0  cellspacing=0 background=9.gif class=sonda><tr><td width=100% class=lightbut colspan=2>Wyniki>/td></tr>
  23.  <tr><td class=lightbut width=75%>&#092;" . $answs[0] . \"</td><td class=lightbut width=25%>\" . $vot0 . \"%</td></tr>
  24.  <tr><td class=lightbut width=75%>&#092;" . $answs[1] . \"</td><td class=lightbut width=25%>\" . $vot1 . \"%</td></tr>
  25.  <tr><td class=lightbut width=75%>&#092;" . $answs[2] . \"</td><td class=lightbut width=25%>\" . $vot2 . \"%</td></tr></table>\"; 
  26.  }
  27. }
  28.  
  29. ?>


a tu macie plik ips.dat, z ktorego odczytywane sa IP...

Kod
82.160.49.131|82.160.49.131|END


Chodzi o to, ze warunek $ip == $_SERVER['REMOTE_ADDR'] nie chce się spełnić i skrypt wyświetla ponownie formularz głosowania.....

Z góry dzięki za pomoc....

Ten post edytował dasko 29.11.2004, 18:34:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
eS...
post 29.11.2004, 18:36:43
Post #2





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


nie lepiej zastosować COOKIE zamiast tego ifa??


--------------------
Go to the top of the page
+Quote Post
dasko
post 29.11.2004, 18:39:35
Post #3





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


tak, mozna, ale cookie mozna usunac biggrin.gif

ale chciałbym jednak wiedziec, czemu to nie działa, moze komus sie kiedys przyda...
Go to the top of the page
+Quote Post
eS...
post 29.11.2004, 18:43:09
Post #4





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


no tak można smile.gif ale sa jeszcze sesje, a co do twojego problemu to :)nei wiem co nawala


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 29.11.2004, 19:05:31
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Anie prosciej w ten sposob:
ips.txt
Kod
82.160.49.131
82.160.49.132
123.23.44.5


  1. <?php
  2. // potem wczytujesz te ip do tablicy:
  3. $ips = file( 'ips.txt' );
  4. // usuniecie znakow konca linii z kazdego z wierszy
  5. foreach ( $ips as $ii => $vv )
  6. {
  7. $ips[ $ii ] = str_replace( &#092;"n\", '', $vv ); // jesli nie dziala \"n\" to sproboj \"rn\" itd.
  8. }
  9.  
  10. // teraz $ips zawiera tylko adresy IP
  11.  
  12. // sprawdzasz czy IP glosujacego jest w tablicy $ips:
  13.  
  14. if ( in_array( $_SERVER[ 'REMOTE_ADDR' ], $ips ) === TRUE )
  15. {
  16. // adres w pliku ips.txt == user juz glosowal
  17. }
  18. ...
  19. ?>


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
dasko
post 29.11.2004, 19:18:47
Post #6





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


ok dzieki biggrin.gif

zmienilem tylko na in_array i od razu poszło biggrin.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 01:53