Passwort über externes Skript ändern - Sonderzeichen-Problem

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
CMCMCM
Mitglied
Beiträge: 6
Registriert: 11.03.2014 01:59

Passwort über externes Skript ändern - Sonderzeichen-Problem

Beitrag von CMCMCM »

Hallo,
ich würde gerne über ein externes Skript das Passwort von bereits registrierten phpBB-Usern direkt in der Datenbank ändern. Hierfür lese ich das neue Passwort über ein Eingabefeld ein, generiere den Hash-Wert über die Funktion "phpbb_hash" und schreibe es dann in der "phpBB_users" Tabelle der Datenbank in das Feld "user_password" des entsprechenden Forenusers. Für die Generierung des Hash-Wertes nutze ich den folgenden Code:

Code: Alles auswählen

$phpbb_root_path = 'forum/';
if (!defined('IN_PHPBB')) // phpBB not already included, than include required files
{
    define('IN_PHPBB', true); // must be set to include phpbb-files
    $phpEx = substr(strrchr(__FILE__, '.'), 1);

    include $phpbb_root_path . 'common.' . $phpEx;
    include $phpbb_root_path . 'includes/functions_display.' . $phpEx;
}


require $phpbb_root_path . 'config.php'; // include config for database-data  

$passwort = $_POST["neuesPasswort"];
$passwortHash = phpbb_hash($passwort);
Das ganze funktioniert auch soweit. Probleme gibt es allerdings, wenn im neuen Passwort Anführungszeichen (") auftauchen. Dann kann ich mich danach mit dem verwendeten Passwort nicht in den Forenaccount einloggen. Es scheint ein spezifisches Problem der phpbb_hash Funktion zu sein, denn im selben Skript erstelle ich vom neuen Passwort für einen anderen Login einen normalen sha1-Hash und hier funktioniert das Einloggen auch mit Anführungszeichen im Passwort.

Hat jemand eine Idee, wie ich das Problem lösen kann. Also wie ich aus einem Passwort, das Anführungszeichen enthält, einen gültigen phpBB-Hash erzeugen kann?

Bin für jeden Lösungsansatz dankbar.

Viele Grüße
Christian
Verschoben von phpBB 3.0: Administration und Benutzung nach phpBB 3.0: Mod-Bastelstube am 11.03.2014 08:40 durch Metzle

godmod23
Mitglied
Beiträge: 174
Registriert: 30.04.2008 22:20

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von godmod23 »

Das externe Skript, hast du es auch in UTF8 ohne Bom gespeichert? Kannst du z.B. mit Notepad++ einstellen.
Sind nämlich die Kodierungen der Skripte unterschiedlich, gibt es Probleme mit Sonderzeichen. Deswegen alle Skripte auf die gleiche Kodierung einstellen.
Greetings, godmod
CMCMCM
Mitglied
Beiträge: 6
Registriert: 11.03.2014 01:59

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von CMCMCM »

Danke für den Tip!
Ich habe die Datei im Mac Texteditor in UTF-8 gespeichert. Im header steht

Code: Alles auswählen

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Leider funktioniert es trotzdem nicht.
Folgendes funktioniert z.B. nicht als Passwort: hallo"$
Das hier aber schon: hallo$$

Ich denke es liegt daran, dass die Anführungszeichen in PHP escaped werden?

So klappt es aber leider auch nicht:

Code: Alles auswählen

$passwortHash = phpbb_hash(stripslashes($passwort));
posaunen
Mitglied
Beiträge: 402
Registriert: 21.04.2004 20:05

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von posaunen »

[quote="CMCMCM"]
$passwort = $_POST["neuesPasswort"];
[/code]
Zu viele Anführungszeichen.

Versuch mal so: $passwort = $_POST[neuesPasswort]; oder: $passwort = $_POST[neuesPasswort];

Vielleicht ist auch die php-Funktion addslashes() für dich interessant.
CMCMCM
Mitglied
Beiträge: 6
Registriert: 11.03.2014 01:59

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von CMCMCM »

posaunen hat geschrieben:
CMCMCM hat geschrieben: $passwort = $_POST["neuesPasswort"];
[/code]
Zu viele Anführungszeichen.

Versuch mal so: $passwort = $_POST[neuesPasswort]; oder: $passwort = $_POST[neuesPasswort];

Vielleicht ist auch die php-Funktion addslashes() für dich interessant.
Danke für die Tips!
Habe alles ausprobiert:
$passwort = $_POST[neuesPasswort]; und $passwort = $_POST['neuesPasswort']; ändert beides nichts am Problem.
Und mit $passwortHash = phpbb_hash(addslashes($passwort)); funktioniert es auch nicht :-(
posaunen
Mitglied
Beiträge: 402
Registriert: 21.04.2004 20:05

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von posaunen »

Hast du dir den Inhalt von $passwort mal ausgeben lassen?
CMCMCM
Mitglied
Beiträge: 6
Registriert: 11.03.2014 01:59

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von CMCMCM »

hier stand unsinn
Zuletzt geändert von CMCMCM am 11.03.2014 14:01, insgesamt 1-mal geändert.
posaunen
Mitglied
Beiträge: 402
Registriert: 21.04.2004 20:05

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von posaunen »

???
Du hast das:
$passwort = $_POST["neuesPasswort"]; als Teil deines codes gepostet. - Wo soll da der Hashcode herkommen? Räum vielleicht erstmal auf.

Es gibt auch die Funktion stripslashes() .
CMCMCM
Mitglied
Beiträge: 6
Registriert: 11.03.2014 01:59

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von CMCMCM »

Ja du hast recht, sorry, bin grade völlig durcheinandergekommen.

Folgende Ausgaben erhalte ich für $passwort:
Eingabe: hallo$$
Ausgabe: hallo$$

Eingabe: hallo"$
Ausgabe: hallo\"$


Für $passwortHash erhalte ich wie erwartet einen Hashcode.
posaunen
Mitglied
Beiträge: 402
Registriert: 21.04.2004 20:05

Re: Passwort über externes Skript ändern - Sonderzeichen-Pro

Beitrag von posaunen »

posaunen hat geschrieben: Es gibt auch die Funktion stripslashes() .
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“