PM Encryption - ein Backslash zuviel nach entschlüsseln

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

PM Encryption - ein Backslash zuviel nach entschlüsseln

Beitrag von Dungeonwatcher »

Hi! 8)

Ich habe den "Private Message Encryption and Decryption" Mod im Einsatz, welcher nach diversen Fehlerkorrekturen nun auch fast perfekt funktioniert. Zwei Dinge sind noch nicht ganz so wie ich es gerne hätte. Ein Problem ist, das nach dem Entschlüsseln vor den Hochkommas etc. immer ein Backslash gesetzt wird. D.h. aus den " bzw. dem ' wird \" bzw. dem \'. Wie bekomme ich diese weg?

Der entsprechende PHP Code dazu sieht aktuell so aus:

Code: Alles auswählen

	if ( $decrypt )
		{
			$cipher_alg = MCRYPT_RIJNDAEL_256;
			$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
			$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
			$key = "This is a very secret key";
			$decrypted_message = str_replace("<b>Um diese verschl&uuml;sselte Nachricht zu lesen, gebe das Passwort unten rechts ein und klicke dann auf den Button \"Nachricht entschl&uuml;sseln\":</b>\n\n", "", $private_message);
			$decrypted_message = str_replace("<br />", "", $decrypted_message);
			$decrypted_message = trim(mcrypt_decrypt($cipher_alg, $encryption_key, pack("H*", $decrypted_message), MCRYPT_MODE_CFB, "$iv"));
			$private_message = str_replace("\r\n", "<br />", $decrypted_message);
			$decrypted_message = str_replace("\"", "\"", $decrypted_message);
		}
Bye/2
Benutzeravatar
metty84
Mitglied
Beiträge: 159
Registriert: 08.03.2007 13:13
Wohnort: Marienberg
Kontaktdaten:

Beitrag von metty84 »

das sollte dir weiterhelfen

Code: Alles auswählen

$decrypted_message = stripsplashes($decrypted_message); 
mfg metty
Nichts auf der welt ist so gerecht verteilt wie der Verstand.Denn jederman ist überzeugt das er genug davon habe.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Moin! 8)

Wenn ich dies in den o.g. Code mit einbaue, gibt es diese Fehlermeldung:

PHP Fatal error: Call to undefined function stripsplashes() in ...\privmsg.php on line 691
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Splish splash! I was taking a bath..

Er meinte sicher die Funktion stripslashes(), PHP ist aber auch kleinlich :/ easy
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Hi! 8)

Oha, ich hab's korrigiert und so eingetragen:

Code: Alles auswählen

[...]
			$decrypted_message = str_replace("\"", "\"", $decrypted_message);
			$decrypted_message = stripslashes($decrypted_message);
[...]
Nun gibt es zwar keine Fehlermeldung mehr, aber die Backslashes sind auch noch da?
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Dann enthält $decrypted_message höchstwahrscheinlich doppelte Backslashes (Rückstriche)
und mit stripslashes() entfernst du halt immer nur einen davon. Heißt, einer bleibt stehn.

Btw: Was soll die Zeile eigentlich bewirken?
Dungeonwatcher hat geschrieben:

Code: Alles auswählen

			$decrypted_message = str_replace(""", """, $decrypted_message);
Ersetz die mal probehalber durch

Code: Alles auswählen

$decrypted_message = str_replace("\"", """, $decrypted_message);
Lass aber die Zeile mit stripslashes() drunter stehn und dann schau, was passiert. easy
Zuletzt geändert von easygo am 30.06.2007 12:57, insgesamt 1-mal geändert.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

easygo hat geschrieben:Dann enthält $decrypted_message höchstwahrscheinlich doppelte Backslashes (Rückstriche)
und mit stripslashes() entfernst du halt immer nur einen davon. Heißt, einer bleibt stehn.
Hmmm, und wie bekomme ich ihn weg? :roll:
Btw: Was soll die Zeile eigentlich bewirken?
Dungeonwatcher hat geschrieben:

Code: Alles auswählen

			$decrypted_message = str_replace(""", """, $decrypted_message);
Wenn ich mir das so ansehe, ist das natürlich blödsinn. :oops:

Im Original sah diese Zeile so aus:

Code: Alles auswählen

$decrypted_message = str_replace(""", "& #34;", $decrypted_message);
Ich habe es wieder so eingetragen, nur ändern tut sich da nichts.
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Schau an die Edit hat wieder mal zugeschlagen (s.o.)
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

easygo hat geschrieben:

Code: Alles auswählen

$decrypted_message = str_replace("\"", """, $decrypted_message);
Lass aber die Zeile mit stripslashes() drunter stehn und dann schau, was passiert. easy
Das ergibt einen PHP Fehler:

PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in ...\privmsg.php on line 690
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

So besser?

Code: Alles auswählen

$decrypted_message = str_replace("\\", "\", $decrypted_message);
Oder Variante 1 nochmal mit dem maskierten " ausprobieren..

Wenn nicht, dann fort damit und mal was anderes: hast du zufällig ne .htaccess
im Root angelegt und dort das php_flag magic_quotes_gpc auf ON stehn?

Ich mein, das könnte hier den Unterschied (an|aus)machen / easy
Antworten

Zurück zu „phpBB 2.0: Mod Support“