Kontakformular soll Usernamen kontrollieren.
Kontakformular soll Usernamen kontrollieren.
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?
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?
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
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()).
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.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
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:
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.
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!";
}
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.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
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
Hmmmm 
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!";

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.
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.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Kleiner Tippfehler bei den Anführungszeichen, ist korrigiert...
Dieser Meinung bin ich auch weiterhin...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.
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.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
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:
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
Code: Alles auswählen
$result = $db->sql_query($sql) or die('Konnte User nicht herausfinden');
so hier ist nun der Inhalt von der kontakt.php als Txt-Datei: kontakt.txt