Ausführung von Script bei Registrierung

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Hammersjoe
Mitglied
Beiträge: 2
Registriert: 05.03.2015 17:09

Ausführung von Script bei Registrierung

Beitrag von Hammersjoe »

Hallo zusammen,

ich habe ein Forum, auf dem ich ein Registrierungsscript auf der Registrierungsseite hinzufügen möchte.
Dieser Script soll eine Externe Datenbank nach dem eingegebenen Benutzernamen überprüfen, sobald man das Registrierungformular absendet.
Wenn der eingegebene Benutzername mit dem Namen in der Datenbank überein stimmt, soll der Benutzer registriert werden. Ansonsten soll ein Fehler zurückgegeben werden.

Ich habe folgenden Code nach der Zeile "$cp->submit_cp_field('register', $user->get_iso_lang_id(), $cp_data, $error);" in der Datei "ucp_register.php" im Verzeichnis "[Hauptverzeichnis]/includes/ucp" hinzugefügt:

Code: Alles auswählen

$Abfrageserver = "localhost";
$Abfragedbuser = "benutzer";
$Abfragedbpass = "passwort";
$Abfragedbname = "datenbank";
           
$AbfrageDB = mysql_connect($Abfrageserver, $Abfragedbuser, $Abfragedbpass);
mysql_select_db($Abfragedbname);

$Abfrageresult = mysql_query("SELECT * FROM datenbank WHERE Name='" + $data['username'] + "'");

if ($Abfrageresult) {
    while($Abfragerow = mysql_fetch_row($Abfrageresult, 0)){
        
        if(isset( $data['username'] ) ) {
            if ($Abfragerow['Name'] != $data['username']) {
                $error[]= 'Die Registrierung ist nicht möglich...';
            }
        }
        
    }
}
else {
    $error[]= 'Keine Datenbankverbindung Möglich.';
}
Dieser Code funktioniert außerhalb des Forums einwandfrei. Im Forum selber funktioniert dieser Code jedoch nicht. (Ein PHPBB-Debug Error wird nicht ausgegeben)
Kann mir bei diesem Problem jemand weiter helfen? Gibt es irgendwas, was ich nicht beachtet habe? Habe ich den Code vielleicht an der Falschen Stelle eingefügt?

Ich freue mich auf jede Antwort.

mfg.
Hammersjoe
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Ausführung von Script bei Registrierung

Beitrag von gn#36 »

Aktivier' doch mal den Debug Modus (KB:debugmode), eventuell kriegst du dann raus, was schief geht.

Ansonsten wäre es wohl hilfreich, wenn du ein paar mehr Infos springen lässt: Was genau "funktioniert nicht"? Schlägt die registrierung immer fehl, schlägt sie nicht fehl obwohl sie sollte, kommt eine Weiße Seite, ...
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.
Hammersjoe
Mitglied
Beiträge: 2
Registriert: 05.03.2015 17:09

Re: Ausführung von Script bei Registrierung

Beitrag von Hammersjoe »

Hey,

vielen Dank für die Information.
Trotz Debug (und Debug-Extra) Modus habe ich keine Debug Benachrichtigungen auf dieser Seite erhalten.
Die Registrierung schlägt jedes mal fehl, da keine Datenbankverbindung hergestellt werden kann.
(Nachricht "Keine Datenbankverbindung Möglich." im Code.)

Ist es vielleicht möglich, dass durch PhpBB gar keine Datenbankverbindung hergestellt werden kann?


mfg.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Ausführung von Script bei Registrierung

Beitrag von gn#36 »

Ok, nachdem ich noch mal einen Blick auf deinen Code geworfen habe würde ich sagen dass diese Zeile so Käse ist:

Code: Alles auswählen

$Abfrageresult = mysql_query("SELECT * FROM datenbank WHERE Name='" + $data['username'] + "'");
Das + hängt keine Strings aneinander, dafür gibt's in PHP den . Operator.

Code: Alles auswählen

$Abfrageresult = mysql_query("SELECT * FROM datenbank WHERE Name='" . $data['username'] . "'");
Ich nehme mal an so wie das da war kommt da eine ungültige Anfrage bei raus.

Das macht dich übrigens in der Form anfällig für eine SQL Injection.


Ansonsten lass dir einfach mal den Fehler ausgeben:

Code: Alles auswählen

mysql_error();
Außerdem würde ich mir in so einer Situation den Text ausgeben lassen, der tatsächlich in der Anfrage landet, also z.B. erst in einer Variablen speichern.
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.
Antworten

Zurück zu „Extension Bastelstube“