Seite 1 von 2

PM Encryption - ein Backslash zuviel nach entschlüsseln

Verfasst: 29.06.2007 20:14
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

Verfasst: 29.06.2007 22:00
von metty84
das sollte dir weiterhelfen

Code: Alles auswählen

$decrypted_message = stripsplashes($decrypted_message); 
mfg metty

Verfasst: 30.06.2007 11:07
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

Verfasst: 30.06.2007 11:27
von easygo
Splish splash! I was taking a bath..

Er meinte sicher die Funktion stripslashes(), PHP ist aber auch kleinlich :/ easy

Verfasst: 30.06.2007 11:41
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?

Verfasst: 30.06.2007 12:36
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

Verfasst: 30.06.2007 12:55
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.

Verfasst: 30.06.2007 13:00
von easygo
Schau an die Edit hat wieder mal zugeschlagen (s.o.)

Verfasst: 30.06.2007 13:07
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

Verfasst: 30.06.2007 13:21
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