Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Народ помогите в реализации... новичок в php, запутался... 
V
    Опции темы
iPlay
Дата 11.10.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: 1
Всего: 1



Ребят вообщем пишу простой скрипт для шифрования по Цезарю:
Код html:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cesar Code</title>
</head>
<form action="cesar.php" method="post">
Ввод текста для щифрования: <input type="text" name="uncryptTxt"><br>
Смещение: <input type="text" value="3" name="shift"><br> 
Зашифрованный текст: <input type="text" name="cryptTxt"><br>
<input type="submit" name="crypt" value="Зашифровать">
</form>
<body>

</body>
</html>

Код PHP-скрипта:
Код

<?
    $cryptedTxt = "";
    $alphabet = "abcdefghijklmnopqrstuvwxyz";
    echo "$uncryptTxt\n";
    echo "$shift\n";
    for ($i=0; $i<strlen($uncryptTxt); $i++){
      for ($j=0; $j<strlen($alphabet); $j++)
        $newPos = ($j + $shift) % 25;
        if ($uncryptTxt[$i] == $alphabet[$j]) $cryptedTxt=$cryptedTxt+$alphabet[$newPos]; // скорее всего ошибка тут
    }
    echo "$cryptedTxt";
?>


В принципе смотрел что возвращает каждая строчка, всё норм только неправильно помоему выполняется условие.
На паскале выглядит примерно вот так:
Код

program job1_caesar; 
uses crt;
var a,b,c:string;
i,j,k,d:integer;
begin
clrscr;
writeln(‘Enter text for coding');
readln(a);
writeln('Enter key');
readln(d);
c:='';
b:=' abcdefghijklmnopqrstuvwxyz';
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
k:=(j+d) mod 25;
if a[i]=b[j] then c:=c+b[k];
end;
writeln(c);
readkey;
end.

PM MAIL   Вверх
NNaarreekk
Дата 11.10.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



не вникал, но кажется проблема в том что в PHP не $cryptedTxt=$cryptedTxt+$alphabet[$newPos], а $cryptedTxt=$cryptedTxt.$alphabet[$newPos]
PM MAIL WWW   Вверх
iPlay
Дата 11.10.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: 1
Всего: 1



Да эту ошибку исправил. И даже вот так пробывал  $cryptedTxt.=$alphabet[$newPos]; всё равно эхо не срабатывает ну реузльтат не получаю.
PM MAIL   Вверх
NewDima
Дата 11.10.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



var_dump
PM ICQ   Вверх
Ипатьев
Дата 11.10.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Для начала стоит вывести на экран $uncryptTxt
и если ничего не введется, то вместо него писать $_POST['uncryptTxt']
и то же самое для остальных переменных из формы

а чтобы такие ошибки были сразу видны, писать перед началом работы кода
error_reporting(E_ALL);
PM MAIL   Вверх
iPlay
Дата 11.10.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: 1
Всего: 1



Ващето он выведен, длина строки тоже берется правильно, пишет вот что Notice: Uninitialized string offset: 26 in c:\web5\www\cesar.php on line 11 странно, может я строку неправильно объявил?
PM MAIL   Вверх
iPlay
Дата 11.10.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: 1
Всего: 1



И сейчас поглядел неправильно считает $newPos.

Добавлено через 4 минуты и 6 секунд
ВСЁ разобрался!!! Вложенный for не сработал нужно вот так:
Код

<?
    error_reporting(E_ALL);
    $cryptedTxt = "";
    $alphabet = "abcdefghijklmnopqrstuvwxyz";
    echo "$uncryptTxt\n";
    echo "$shift\n";
    for ($i=0; $i<strlen($uncryptTxt); $i++){ 
      for ($j=0; $j<strlen($alphabet); $j++){ 
        $newPos = ($j + $shift)%25;
        if ($uncryptTxt[$i] == $alphabet[$j]) $cryptedTxt=$cryptedTxt.$alphabet[$newPos];
    }
    }
    echo "$cryptedTxt";    
?>


PM MAIL   Вверх
iPlay
Дата 11.10.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: 1
Всего: 1



SPS
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.