Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Ref link
Forum PHP.pl > Forum > Przedszkole
jahonen
Chciałbym napisać skrypt, który:
-nie działa gdy sam kliknę w link (tylko gdy osoba z innego komputera go kliknie)
-jedna osoba może kliknąć w link tylko jeden raz

Prosiłbym o pomoc. Z proxy sobie poradziłem teraz tylko to. Z góry dzięki wink.gif

Oto fragment mojego kodu
Kod
db_connect();


if($_GET['ref'])
{
    $query1 = mysql_query("UPDATE users SET zdolnosc=zdolnosc+1 WHERE ref = '$_GET[ref]'");
    }
Posio
możesz sprawdzać IP lub tworzyć plik cookie. Nie idzie się przed tym zabezpieczyć na 100%
jahonen
Jak sprawdzić ip i nie zezwolić na wykonanie skryptu?
dje31
IP:

  1. <?php
  2. echo $_SERVER['REMOTE_ADDR'];
  3. ?>


Przeanalizuj tez:

  1. <?php
  2. $_SERVER['HTTP_CLIENT_IP'];
  3. $_SERVER['HTTP_COMING_FROM'];
  4. $_SERVER['HTTP_FORWARDED'];
  5. $_SERVER['HTTP_FORWARDED_FOR'];
  6. $_SERVER['HTTP_VIA'];
  7. $_SERVER['HTTP_X_COMING_FROM'];
  8. $_SERVER['HTTP_X_FORWARDED'];
  9. $_SERVER['HTTP_X_FORWARDED_FOR'];
  10. ?>

jahonen
Kod
if($_GET['ref'])
{
    db_connect();
$selip = mysql_query("SELECT ip1, ip2, ip3 FROM users WHERE ref = '$_GET[ref]'");
$fetched = mysql_fetch_array($selip);
$ip = $_SERVER["REMOTE_ADDR"];
if($fetched["ip1"] !== $ip || $fetched["ip2"] !== $ip ||$fetched["ip3"] !== $ip)
{
    $query1 = mysql_query("UPDATE users SET zdolnosc=zdolnosc+1 WHERE ref = '$_GET[ref]'");
    if($fetched["ip1"] == 0){
    $query2 = mysql_query("INSTERT INTO users (ip1) VALUES ('$ip')");
    }
    elseif($fetched["ip2"] == 0){
    $query2 = mysql_query("INSTERT INTO users (ip2) VALUES ('$ip')");
    }
    elseif($fetched["ip3"] == 0){
    $query2 = mysql_query("INSTERT INTO users (ip3) VALUES ('$ip')");
    }
}

Zrobiłem to w ten sposób. Czy to będzie działać? Nie mam tego jak sprawdzić bo pracuję na localhost. Domyślna wartość w kulumnach ip1, ip2, ip3 to "0".
Turson
1. Wstawiaj kod w PHP w odpowiedni BBCode, bo dużo lepiej się czyta.
2. Nie, to nie będzie działać m.in. z powodu literówek "INSTERT"
3. Wstawiasz do tabeli users każdemu użytkownikowi do odpowiedniej kolumny ip, a nie konkretnemu.
4. Podatne na SQL Injection jak cholera.
5. Jak włączysz raportowanie błędów, to zobaczysz, że if($_GET['ref']) wypluje ci błąd. Podpowiedź isset
6. Sprawdź różnicę między !== a !=, bo w tym przypadku może spowodować złe działanie.
jahonen
Dzięki stary, już wiem jak się za to zabrać wink.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.