Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Zabezpieczenie modułu przez "nabijaniem"
fredzio90
post
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

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


mam takówy problem.. robie moduł do systemu CMS podobnego do Programu Partnerskiego na stronach komercyjnych.. i mam problem...
mam 2 tabele do jednej zapisuje się zarejestrowanego usera, do drugiej zapisywane są adresy ip które odwiedziły linki PP ( domyślacie się, linki aby zbierać punkty ) i moj problem polega na zabezpieczeniu przez nabijaniem punktów przez tą samą osobe, przez te same IP.... napisałem taką funkcje:

  1. <?php
  2. function pp_view() {
  3. global $pp_tbl, $pp_conf_tbl, $goto, $PHP_SELF, $REMOTE_ADDR;
  4.  
  5.  
  6. $sql = mysql_query("SELECT * FROM $pp_tbl WHERE pp_nr='{$_GET['url']}'");
  7. while($r = mysql_fetch_array($sql)) {
  8. $points = $r['points'];
  9. $nr_pp = $r['pp_nr'];
  10. $ppnick = $r['ident']; 
  11.  
  12. $check = mysql_query("SELECT * FROM $pp_conf_tbl");
  13. while($ccc = mysql_fetch_array($check)) {
  14. $ip = $ccc['ip'];
  15. }
  16.  
  17. if($ip=='$REMOTE_ADDR') {
  18. header("Location: $PHP_SELF");
  19. } else {
  20. $sqlUp = mysql_query("UPDATE $pp_tbl SET points=points+1 WHERE ident='$ppnick'");
  21. $sqlZab = mysql_query("INSERT INTO $pp_conf_tbl SET ip='$REMOTE_ADDR', data=now()");
  22. header("Location: $PHP_SELF");
  23. }
  24. }
  25. }
  26. ?>



i niewiem jak tą funkcje przekrztałcić aby:

podczas wchodzenia w link, sprawdzane było w tabeli $pp_conf_tbl czy ip usera ktory kliknow w link PP nie znajduje się w tabeli.. jeżeli tak to żeby pokazało $PHP_SELF, a jeżeli nie to żeby dodało jego ip do bazy $pp_conf_tbl i zaaktualizowało tabele $pp_tbl a dokladnie jego pole points+1...

jak kilkam w odnosnik kierujacy do dodania punktów, dodaje się do bazy ip i aktualizuje punkty usera, lecz powinno wykrywać także czy ip usera nie jest w tabeli i uniemożliwić "nalicznie" punnktów...

Ten post edytował fredzio90 28.03.2007, 19:33:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


1. http://pl.php.net/manual/pl/language.types.string.php
Tutaj znajdziesz odpowiedź, dlaczego kod:
  1. <?php
  2. if($ip == '$REMOTE_ADDR')
  3. ?>

nie działa tak jak sobie tego życzysz.


2. Powinno się stosować zapis:
  1. <?php
  2. $_SERVER['PHP_SELF'];
  3. $_SERVER['REMOTE_ADDR'];
  4. ?>

zamiast:
  1. <?php
  2. $PHP_SELF;
  3. $REMOTE_ADDR;
  4. ?>

Jeśli na serwerze, na którym umieścisz swój skrypt register_globals będzie wyłączone, to nic ci nie będzie działać.


3.
  1. <?php
  2. $check = mysql_query("SELECT * FROM $pp_conf_tbl");
  3. while($ccc = mysql_fetch_array($check)) {
  4. $ip = $ccc['ip'];
  5. }
  6. ?>

Ta pętla odczyta ci tylko ostatni adres IP z tabeli $pp_conf_tbl. Na pewno o to ci chodziło? Może przerób zmienną $ip na tablicę, a później sprawdzaj adresy IP funkcją in_array" title="Zobacz w manualu PHP" target="_manual
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: 13.10.2025 - 09:56