Цезарь Шифр PHP

0

Я получаю 2 ошибки из своего кода. Или 1 ошибка и 1 уведомление.

Heres Уведомление и проблема

Примечание: неопределенное смещение: 0 в F:\Xampp\htdocs\Encryption\result.php в строке 19

Предупреждение: in_array() ожидает, что параметр 2 будет массивом, строка, указанная в F:\Xampp\htdocs\Encryption\result.php в строке 19

И вот мой код

Index.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="encrypt" style="position:absolute; left:20%; top:25%;">
    <form method="post" action="result.php">
    <textarea rows="4" cols="50" name="toEncrypt">Enter message to encrypt</textarea>
    <br/>
    <input type="submit" name="encrypt" value="Encrypt">
    </form>
    </div>
    <div id="decrypt" style="position:absolute; right:20%; top:25%;">
    <form method="post" action="result.php">
    <textarea rows="4" cols="50" name="toDecrypt">Enter message to decrypt</textarea>
    <br/>
    <input type="submit" name="decrypt" value="Decrypt">
    </form>
    </div>
</body>

И это мой PHP файл.

<?php
$toEncrypt = $_POST['toEncrypt'];
//$toDecrypt = $_POST['toDecrypt'];
$key = array(
"A" => "B", "B" => "C","C" => "D", "D" => "E","E" => "F","F" => "G",
"G" => "H", "H" => "I", "I" => "J", "J" => "K","K" => "L",
"L" => "M","M" => "N", "N" => "O", "O" => "P", 
"P" => "Q","Q" => "R", "R" => "S","S" => "T","T" => "U", 
"U" => "V", "V" => "W", "W" => "X", "X" => "Y",
"Y" => "Z", "Z" => "Å", "Å" => "Ä", "Ä" => "Ö", "Ö" => "A"
);

//$text2 = $toDecrypt;

$length=strlen($toEncrypt);
$newstr='';
for ($i = 0; $i < $length; $i++) 
{
if (is_array($key) && in_array($toEncrypt[$i], $key[$i]))
{
$newstr=$key[$i];
}
}

echo $newstr;

Я не могу понять, что случилось, я думаю, что это слишком очевидно для меня, и я считаю, спасибо заранее.

  • 0
    Если вы еще этого не видели, вы можете совершить экскурсию здесь: stackoverflow.com/tour и посмотреть, как работает этот сайт! (Кстати: вы можете принять ответ, как вам больше всего помогли и решили вашу проблему ( meta.stackexchange.com/q/5234 ))
Теги:
encryption

1 ответ

0
Лучший ответ

Вы должны изменить 2 строки:

if (is_array($key) && in_array($toEncrypt[$i], $key[$i]))
//...
$newstr=$key[$i];

к этому:

if (is_array($key) && in_array(strtoupper($toEncrypt[$i]), array_flip($key)))
                             //^^^^^^^^^^                  ^^^^^^^^^^ To search trough the keys and not the values
                             //|Because your array is in upper case
//...
$newstr .= $key[strtoupper($toEncrypt[$i])];
      //^^      ^^^^^^^^^^So you get the right key
      //|So you append the string
  • 0
    Хм, да, это делает, но теперь вместо этого добавляет два раза, так что A => C вместо B
  • 0
    Я чертовски люблю тебя <3
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню