Kontakformular soll Usernamen kontrollieren.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
MyLord
Mitglied
Beiträge: 98
Registriert: 02.09.2003 05:12
Wohnort: Planet ERDE

Kontakformular soll Usernamen kontrollieren.

Beitrag 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?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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()).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
MyLord
Mitglied
Beiträge: 98
Registriert: 02.09.2003 05:12
Wohnort: Planet ERDE

Beitrag von MyLord »

Sorry ich hab vergessen zu erwähnen das ich nicht programmieren kann :oops:
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von gn#36 am 02.08.2007 10:47, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
MyLord
Mitglied
Beiträge: 98
Registriert: 02.09.2003 05:12
Wohnort: Planet ERDE

Beitrag 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 :-?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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...
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
MyLord
Mitglied
Beiträge: 98
Registriert: 02.09.2003 05:12
Wohnort: Planet ERDE

Beitrag 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');
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Verlinke uns mal Deinen bisherigen Code als gesamt Datei ( TXT Format )
Benutzeravatar
MyLord
Mitglied
Beiträge: 98
Registriert: 02.09.2003 05:12
Wohnort: Planet ERDE

Beitrag von MyLord »

so hier ist nun der Inhalt von der kontakt.php als Txt-Datei: kontakt.txt
Antworten

Zurück zu „Coding & Technik“