Seite 1 von 2

Kontakformular soll Usernamen kontrollieren.

Verfasst: 01.08.2007 22:17
von MyLord
Hallo zusammen,

ich habe ein Kontaktformular (kontakt.php) worüber sich User für ein bestimmtes Bereich im Forum ein Antrag schicken können. Es kommt leider sehr häufig vor das User den Antrag ausfüllen und zuschicken obwohl sie sich noch gar nicht im Forum registriert sind.

Im Kontaktformular muss der User auch seinen Usernamen im Forum angeben. Ich möchte nun dass die Daten vor dem Absenden mit der Datenbank verglichen werden um festzustellen ob der angegebene Username überhaupt im Forum registriert und aktiviert ist.

Ist so was überhaupt realisierbar?

Verfasst: 01.08.2007 22:33
von gn#36
Klar.
Daten zum User befinden sich in der Tabelle prefix_users.
Die für dich interessanten Spalten dürften username und user_active (0 = nein). Wenn du das per SELECT Abfragst dann passe aber auf SQL Injection auf, also immer schön alles mit Fluchtzeichen versehen (bei mysql: mysql_real_escape_string() ansonsten auch addslashes()).

Verfasst: 01.08.2007 22:45
von MyLord
Sorry ich hab vergessen zu erwähnen das ich nicht programmieren kann :oops:

Verfasst: 01.08.2007 22:57
von gn#36
Du kannst ja mal einen Versuch wagen und dann hinterher deine Versuche begutachten lassen. Das ist vermutlich gar nicht viel, hier vielleicht ein paar generelle Tipps dazu:
Das ganze wird vermutlich so in der Art aussehen:

Code: Alles auswählen

$username = mysql_real_escape_string($_POST['username']);
$sql = "SELECT user_id FROM prefix_users WHERE username = '$username' AND user_active = 1";
$result = $db->sql_query($sql) or die('Konnte User nicht herausfinden');
if(!$db->sql_num_rows($result))
{
//Es gibt keinen solchen User, oder er ist nicht aktiviert
echo "Du musst im Forum registriert sein um das Formular zu verwenden!";
}
Besser wäre es allerdings wenn du nicht nur die Kenntnis eines vorhandenen Usernamens verlangst, sondern auch überprufst, ob der User auch der ist den er Vorgibt zu sein, indem du einfach die KB:phpbb_seite verwendest. Das geht ziemlich einfach und macht das ganze auch noch ein wenig sicherer.

Verfasst: 02.08.2007 00:11
von MyLord
Habe den Code jetzt angepasst jedoch lässt sich das Kontaktformular nicht mehr aufrufen.

Fehlermeldung: Parse error: parse error, unexpected T_STRING in kontakt.php on line 48

In der Zeile 48 kommt dieser bereich vor

Code: Alles auswählen

echo "Du musst im Forum registriert sein um das Formular zu verwenden!";
Hmmmm :-?

Verfasst: 02.08.2007 10:32
von Xwitz
Der Fehler liegt vermutlich irgendwo davor, fehlendes Semikolon oder Klammer.

Wie verhinderst Du eigentlich, daß jemand den Namen von jemand anderem benutzt? Das einfachste wäre, wenn man sich für das Kontaktformular anmelden muß.
http://www.phpbb.de/doku/kb/phpbb_seite
Dann hast Du auch gleich die userdaten.

Verfasst: 02.08.2007 10:48
von gn#36
Kleiner Tippfehler bei den Anführungszeichen, ist korrigiert...
Besser wäre es allerdings wenn du nicht nur die Kenntnis eines vorhandenen Usernamens verlangst, sondern auch überprufst, ob der User auch der ist den er Vorgibt zu sein, indem du einfach die KB:phpbb_seite verwendest. Das geht ziemlich einfach und macht das ganze auch noch ein wenig sicherer.
Dieser Meinung bin ich auch weiterhin...

Verfasst: 03.08.2007 05:37
von MyLord
Die Vorlage für in phpBB eingebundene Seiten habe ich schon eingebaut. (Es funktioniert)

Korrigierter Code ist auch eingebaut. Wenn ich jetzt das Formular ausgefüllt absenden möchte kommt folgende Fehlermeldung:
  • Fatal error: Call to a member function sql_query() on a non-object in kontakt.php on line 50
Line 50 ist:

Code: Alles auswählen

$result = $db->sql_query($sql) or die('Konnte User nicht herausfinden');

Verfasst: 03.08.2007 08:52
von Dr.Death
Verlinke uns mal Deinen bisherigen Code als gesamt Datei ( TXT Format )

Verfasst: 04.08.2007 05:25
von MyLord
so hier ist nun der Inhalt von der kontakt.php als Txt-Datei: kontakt.txt