dedlfix: Counter mit MySQL

Beitrag lesen

echo $begrüßung;

Du solltest dir unbedingt einige Dinge zum sicheren Programmieren zu Herzen nehmen.

Habe jetzt:

$userv = "SELECT Clicks FROM nacms_news WHERE id = '$id'";
    $userv2 = mysql_query($userv);

Eine Datenbankabfrage mit mysql_query() kann fehlschlagen. In dem Fall liefert diese Funktion ein false. Dies will aber die nachfolgende Funktion

$userv3 = mysql_fetch_assoc($userv2);

nicht als Argument haben und beschwert sich dann mit einer Fehlermeldung. Es ist deshalb wichtig, Fehlerfälle zu berücksichtigen und darauf zu reagieren, statt einfach zu versuchen weiterzuarbeiten.
(Das oft gesehene "or die(...)" ist zwar schnell eigefügt, aber keinesfalls benutzerfreundlich.)

Im Ausgangsposting war noch dieses Konstrukt zu sehen:

$sql = "select * from nacms_news where id='".$_GET['id']."'";

So etwas ist grundsätzlich eine Sicherheitslücke. Du lässt Benutzereingaben ungeprüft und unbehandelt in eine Datenbankabfrage einfließen bzw. verlässt dich auf PHPs rudimentäre aber nicht ausreichend sicher arbeitene Sicherheitskonzepte wie Magic Quotes. Nimm einmal an, jemand übergibt als Wert für id etwas mit einem ' drin. Dieser Fall ist zwar nicht von dir vorgesehen und tritt sicher bei normaler Bedienung auch nicht auf, aber trotzdem lässt er sich ausnutzen.
SELECT ... WHERE id='4'2' ist nur ein Syntaxfehler.
SELECT ... WHERE id='' OR 1 --' ist eine Manipulation. Bei datenverändernden SQL-Statements kann sich das negativ auf deinen restlichen Datenbestand auswirken.

Deswegen bekamst du den Hinweis auf mysql_real_escape_string(), den du aber anscheinend nicht berücksichtigt hast. Anwendungsbeispiele findest du auf der verlinkten Handbuch-Seite und in Massen, wenn du eine Suchmaschine (z.B. die dieses Forums) dazu befragst.

echo "$verabschiedung $name";