str_replace Cryptographie

Uli_87

Erfahrenes Mitglied
Guten Morgen,

Ich will mit der str_replace Funktion einen kleinen Cryptographie Tool machen, folgendes Script habe ich gemacht:
PHP:
<?PHP
$action = $_GET['action'];
$codearray = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " ", ".", ",", "?", "!", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "ä", "ö", "ü");
$decodearray = array("f", "g", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "a", "b", "c", "d", "e", "ö", "ä", "ü", "%", "&", "*", "/", "+", "-", "ç", ".", ",", "_", "2", "!", "8", "?", "3", "4");
if ($action == "encode") {
$text1 = $_POST['text1'];
$text2 = str_replace($codearray, $decodearray, $text1);
}
if ($action == "decode") {
$text2 = $_POST['text2'];
$text1 = str_replace($decodearray, $codearray, $text2);
}
if (empty($action)) {
$text1 = "";
$text2 = "";
}
?>

Aber beim verschlüsseln oder entschlüsseln funktioniert etwas nicht richtig, hier das Beispiel!
http://www.uliweb.ch/kryptographie/index.php

Vielen Dank
mfg
Daniel
 
Kommt der irgendeine Fehlermeldung?
Setze mal den error_reporting auf E_ALL (php4) oder E_STRICT (php5) und schau, ob er eine Fehlermeldung ausgibt
PHP:
if ( substr(phpversion(),0,1) == 4 ) {
// Für php Version 4
error_reporting(E_ALL);
}
else if ( substr(phpversion(),0,1) == 5 ) {
// Für php Version Version 5
error_reporting(E_STRICT);
}
 
Hast du eine PHP Version vor 4.3.3
Warnung
Die PHP-Versionen vor PHP 4.3.3 enthalten einen Bug, der bei der Verwendung von Arrays für search und replace dazu führt, dass leeren search-Indexe übersprungen werden, ohne dabei den internen Zeiger innerhalb des replace-Arrays ebenfalls weiter zu bewegen. Dies wurde in PHP 4.3.3 korrigiert. Alle Skripte, die sich auf diesen Bug verlassen, sollten leere Suchwerte entfernen, bevor diese Funktion aufgerufen wird, um die ursprüngliche Verhalten zu imitieren.
 
Hallo,

Ja ich habe eine ältere Version. Nun habe ich das
PHP:
" "
vom such-Array entfernt. Es funktioniert trotzdem nicht!

Danke
 
Funktioniert es denn so?:
PHP:
<?PHP
$action = $_GET['action'];
$codearray = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " ", ".", ",", "?", "!", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "ä", "ö", "ü");
$decodearray = array("f", "g", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "a", "b", "c", "d", "e", "ö", "ä", "ü", "%", "&", "*", "/", "+", "-", "ç", ".", ",", "_", "2", "!", "8", "?", "3", "4");
if ($action == "encode") {
$text1 = $_POST['text1'];
  for ( $i = 0; $i < count ( $codearray ); $i++ ) {
    $text2 = str_replace($codearray[$i], $decodearray[$i], $text1);
  }
}
if ($action == "decode") {
$text2 = $_POST['text2'];
  for ( $i = 0; $i < count ( $decodearray ); $i++ ) {
    $text1 = str_replace($decodearray[$i], $codearray[$i], $text2);
  }
}
if (empty($action)) {
$text1 = "";
$text2 = "";
}
?>
 
Zuletzt bearbeitet:
Zurück