PHP: Jedem User ohne Anmeldung eine ID zuweisen und eigenen Counter

Hallo Leute,
folgendes Problem: Ich will jedem Besucher meiner Seite einen Counter zuweisen, der pro Klicks auf einen Link den der User bekommt, der eine ID enthält, um eins verringert wird. Das ganze lässt sich jedoch meinerseits nur schwer realisieren, ich komm einfach nicht drauf, wie ich das Problem angehen soll. Momentan habe ich diesen Code:

PHP:
<?
    include 'config.php';

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    
    $ip=$_GET['id'];
    $date=date("d.m.Y - H:i:s");
    
    $sql = "SELECT IP,ClickCount FROM ".IDTable." WHERE IP='".$ip."';";
    $resulta = mysql_query($sql) OR die(mysql_error());
    while($row = mysql_fetch_assoc($resulta))
        {
            $ccnt = $row['ClickCount'];
            echo "Dir fehlen noch ".$ccnt." Klicks!<p>";
            echo $ccnt." Klicks<p>";
            echo $ip."<p>";
        }
    $ccnt=$ccnt-1;
    
    $sql = "SELECT IP,ClickCount FROM ".IDTable." WHERE IP='".$ip."';";
    $resulta = mysql_query($sql) OR die(mysql_error());
    
    if (resulta=="Resource id #6")
    {
        $realip=getenv("REMOTE_ADDR");
        $sql="INSERT INTO ".IDTable." (IP,Datum,ClickCount) VALUES ('$realip','$date','$ccnt')";
        $resultb = @mysql_query($sql);
    }
    else
    {
        $sql="UPDATE ".IDTable." SET ClickCount=".$ccnt." WHERE IP='".$ip."';";
        $resultc = @mysql_query($sql);
    }
?>

Die if-Anweisung klappt komischerweise auch nicht.
Meine grundsätzliche Frage ist: Wie kann ich das beschriebene realisieren?

mfg soul
 
mal abgesehen davon, dass dir das $-Zeichen in der if-abfrage fehlt, prüft man eine sql-ergebnis-menge im normalfall nicht mit "resource id #6" ab. Besser wäre da zb. mysql_num_rows() zu verwenden.

Nachtrag:
Desweiteren macht es wenig Sinn bei unregistrierten Usern die IP-Adresse zu verwenden, weil dadurch Ergebnisse verfälscht werden können, wenn sich mehrere User in einem Netzwerk auf deiner Seite bewegen, aber alle dann die gleiche IP-Adresse haben.
 
Code:
    $ip=$_GET['id'];
    $date=date("d.m.Y - H:i:s");
    
    $sql = "SELECT IP,ClickCount FROM ".IDTable." WHERE IP='".$ip."';";


Code:
        $sql="UPDATE ".IDTable." SET ClickCount=".$ccnt." WHERE IP='".$ip."';";
        $resultc = @mysql_query($sql);


Ich würde mal sagen, dass sind 2 sehr einfach ausnutzbare sql-injections
So wie es scheint, kann man gezielt bei einem selbst oder bei anderen countern die klickanzahl beliebig editieren...

Ist zwar jetzt keine antwort auf diene Frage, aber wenn du einen richtigen service bieten willst, solltest genauso auf die sicherheit achten.


mfg
 
Wie ich das aus dem Code sehen kann, hast du in der Variable "$ip" die ID gespeichert...

Mal davon abgesehen der HTML Code ist daraus so wie ich es sehen kann auch net ganz richtig^^

PHP:
     while($row = mysql_fetch_assoc($resulta))         {
            $ccnt = $row['ClickCount'];
            echo "Dir fehlen noch ".$ccnt." Klicks!<p>";
            echo $ccnt." Klicks<p>";
            echo $ip."<p>";
        }
Hast du da etwa 3 mal einen P Tag geöffnet?Funktioniert der Code jetzt eigentlich? sonst würde ich eigentlich auch nur noch das Finden was schon gesagt wurde^^mfgHenni
 
Musst du eigentlich unbedingt MySQL verwenden? Mit Sessions würde es nämlich viel einfacher funktionieren:
PHP:
<?php
session_start();
define("CLICKS_REQUIRED", 10);

if (!isset($_SESSION["clicksLeft"]))
{
    $_SESSION["clicksLeft"] = CLICKS_REQUIRED;
}
else
{
    --$_SESSION["clicksLeft"];
}
?>
<p>Dir fehlen noch <?=$_SESSION["clicksLeft"]?> Klicks.</p>
 
Zurück
Oben