Всем привет, я новичок в php, и иногда пытаюсь писать некоторые программки. В этот раз выбрал шифр Цезаря ( это шифр, в котором каждый символ в тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите; например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее). Прога должна была шифровать и дешифровать слова, но возникла проблемка при дешифрации. Например, если взять букву "А" и дешифровать со сдвигом в 1 шаг, т.е. должна появится буква "Z" - всплывает ошибка. Т.е. массив не просматривается заново, а останавливается на букве "А".
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Шифр Цезаря</title>
<link href="Style.css" rel="stylesheet">
</head>
<body>
<div class="body">
<div class="sa">
<form action='fail6.php' method='POST'>
<H1 align="center">Введите слово, для шифрования/дешифрования!</H1>
<div class="1" align="center">
<i>Сообщение может содержать только буквы английского алфавита*</i><br><br>
<input type='text' name='text' size=100>
<H1 align="center">Введите количество шагов, для сдвига!</H1>
<i>Доступны только числа в диапазоне от 1 до 25*</i><br><br>
<input type='number' name='number' min='1' max='25'><br><br>
<input type='Submit' value='Зашифровать' name='but'>
<input type='Submit' value='Расшифровать' name='but2'>
</div>
</div>
</div>
</form>
</body>
</html>
<?php
if(isset($_POST['but']))
{
$name=$_POST['text'];
$num=$_POST['number'];
if(preg_match ('@[A-z]@u',$name) and preg_match ('/[0-9]/',$num))
{
$X=strtoupper($_POST['text']);
$alph=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');
$N=count($alph);
$b="";
$n=strlen($X);
for($i=0;$i<$n;$i++)
for($j=0;$j<$N;$j++)
{
if($X[$i]==$alph[$j])
{
$b= $b . $alph[ ($j+$num) % $N];
}
}
print "Зашифрованное слово:\t". $b ;
}
else {
print "Не правильное слово для кодирования! ";
}
}
if(isset($_POST['but2']))
{
$name=$_POST['text'];
$num=$_POST['number'];
if(preg_match ('@[A-z]@u',$name) and preg_match ('/[0-9]/',$num))
{
$X=strtoupper($_POST['text']);
$alph=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');
$N=count($alph);
$b="";
$n=strlen($X);
for($i=0;$i<$n;$i++)
for($j=0;$j<$N;$j++)
{
if($X[$i]==$alph[$j])
{
$b= $b . $alph[ ($j-$num) % $N];
}
}
print "Расшифрованное слово:\t". $b ;
}
else {
print "Не правильное слово для кодирования! ";
}
}
?>