Имеется поррос по php

vorona
На сайте с 31.01.2010
Offline
91
1042


<?php


class Viginer {

var $A1 = array ('А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я','#','0','1','2','3','4','5','6','7','8','9');

var $message="";
var $key="";
var $table=array();
var $code="";
var $decoding="";


function Viginer($mes, $k) {
$message = $mes;
$key = $k;
$table = array(array(),array());
}


function tablele() {
echo "Constructing Viginer table:<br>";
for ($i = 0; $i < count($A1); $i++) {
for ($j = 0; $j < count($A1); $j++) {
$table[$i][$j] = $A1[($j+$i)%count($A1)];
echo $table[$i][$j];
}
echo '<br>';
}
}

function searchFunction($sym, $ch) {
for ($i = 0; $i < count($sym); $i++) {
if ($sym[$i] == $ch)
return $i;
}
return -1;
}

function searchFunctionTwo($sym, $n, $ch) {
for ($i = 0; $i < count($sym); $i++) {
if ($sym[$n][$i] == $ch)
return $i;
}
return -1;
}

function encoding() {
for ($i = 0; $i < count($message); $i++) {
$code += $table[searchFunction($A1, substr(strlen($i%$key), 1, $key))][searchFunction($A1, substr($i, 1, $message))];
}
echo "Encrypting message: ".$code;
}

function decodingo() {
for ($i = 0; $i < count($code); $i++) {
$decoding += $A1[searchFunctionTwo($table, searchFunction($A1, substr(strlen($i%$key), 1, $key)), substr($i, 1, $code))];
}
echo "Decoded message: ".$decoding;
}

function alpha()
{
echo "Alphabet:";
foreach($A1 as $alpha)
{
echo $alpha;
}
}
}



$mes="Сообщенийо";
$key="Ключ";


$vig = new Viginer($mes, $key);
$vig->tablele();
$vig->encoding();
$vig->decodingo();
$vig->alpha();






?>

Ошибки:

Constructing Viginer table:

Notice: Undefined variable: A1 in T:\home\virtual\site.ru\_vig.php on line 24

Notice: Undefined variable: message in T:\home\virtual\site.ru\_vig.php on line 50

Notice: Undefined variable: code in T:\home\virtual\site.ru\_vig.php on line 53

Encrypting message:

Notice: Undefined variable: code in T:\home\virtual\site.ru\_vig.php on line 57

Notice: Undefined variable: decoding in T:\home\virtual\site.ru\_vig.php on line 60

Decoded message: Alphabet:

Notice: Undefined variable: A1 in T:\home\virtual\site.ru\_vig.php on line 66

Warning: Invalid argument supplied for foreach() in T:\home\virtual\site.ru\_vig.php on line 66

Почему не работает массив A1 (Notice: Undefined variable: A1 in T:\home\virtual\site.ru\_vig.php on line 24) ?

AGIVEO (http://agiveo.net/) - бесплатная браузерная многопользовательская онлайн игра в жанре футбольного менеджера =)
B
На сайте с 21.12.2009
Offline
28
#1

А что за *** постоянно в коде , у меня пхп прям таки изругался матом?

А по вопросу, так перед $A1 в классе надо использовать $this->

То есть типа

for ($i = 0; $i < count($this->$A1); $i++) {

Адский Кодер Разработка и аудит безопасности сайтов/скриптов(PHP+MySQL) (/ru/forum/530575)
vorona
На сайте с 31.01.2010
Offline
91
#2
boodda:
А что за *** постоянно в коде , у меня пхп прям таки изругался матом?

А по вопросу, так перед $A1 в классе надо использовать $this->
То есть типа
for ($i = 0; $i < count($this->$A1); $i++) {

*** - это форум меняет что-то.

vorona добавил 03.11.2011 в 16:08

<?php

class Viginer {

var $A1 = array ("А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","#","0","1","2","3","4","5","6","7","8","9");

var $message="";

var $key="";

var $table = array(array(),array());

var $code="";

var $decoding="";

function Viginer($mes, $k) {

$message = $mes;

$key = $k;

}

function tablele() {

echo "Constructing Viginer table:<br>";

for ($i = 0; $i < count($A1); $i++) {

for ($j = 0; $j < count($A1); $j++) {

$table[$i][$j] = $A1[($j+$i)%count($A1)];

echo $table[$i][$j];

}

echo '<br>';

}

}

function searchFunction($sym, $ch) {

for ($i = 0; $i < count($sym); $i++) {

if ($sym[$i] == $ch)

return $i;

}

return -1;

}

function searchFunctionTwo($sym, $n, $ch) {

for ($i = 0; $i < count($sym); $i++) {

if ($sym[$n][$i] == $ch)

return $i;

}

return -1;

}

function encoding() {

for ($i = 0; $i < count($message); $i++) {

$code += $table[searchFunction($A1, substr(strlen($i%$key), 1, $key))][searchFunction($A1, substr($i, 1, $message))];

}

echo "Encrypting message: ".$code;

}

function decodingo() {

for ($i = 0; $i < count($code); $i++) {

$decoding += $A1[searchFunctionTwo($table, searchFunction($A1, substr(strlen($i%$key), 1, $key)), substr($i, 1, $code))];

}

echo "Decoded message: ".$decoding;

}

function alpha()

{

echo "Alphabet:";

foreach($A1 as $alpha)

{

echo $alpha;

}

}

}

$mes="Сообщенийо";

$key="Ключ";

$vig = new Viginer($mes, $key);

$vig->tablele();

$vig->encoding();

$vig->decodingo();

$vig->alpha();

?>

vorona добавил 03.11.2011 в 16:10

boodda, спасибо за своет.

Теперь такие ошибки:

Notice: Undefined variable: A1 in T:\home\virtual\site.ru\_vig.php on line 23

Fatal error: Cannot access empty property in T:\home\virtual\site.ru\_vig.php on line 23

B
На сайте с 21.12.2009
Offline
28
#3

меняй везде в классе(файле) $A1 на $this->A1

и заметь A1 уже без знака доллара

ДП
На сайте с 23.11.2009
Offline
203
#4

Для форматирования кода используйте теги [СODE] на этом форуме, а то [РНР] режет скобки квадратные.

vorona
На сайте с 31.01.2010
Offline
91
#5
boodda:
меняй везде в классе(файле) $A1 на $this->A1
и заметь A1 уже без знака доллара

Спасибо за помошь.

Сделал так:

<?php

class Viginer {

var $A1 = array ("А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","#","0","1","2","3","4","5","6","7","8","9");

var $message="";

var $key="";

var $table = array(array(),array());

var $code="";

var $decoding="";

function Viginer($mes, $k) {

$message = $mes;

$key = $k;

}

function tablele() {

echo "Constructing Viginer table:<br>";

for ($i = 0; $i < count($this->A1); $i++) {

for ($j = 0; $j < count($this->A1); $j++) {

$table[$i][$j] = $this->A1[($j+$i)%count($this->A1)];

echo $table[$i][$j];

}

echo '<br>';

}

}

function searchFunction($sym, $ch) {

for ($i = 0; $i < count($sym); $i++) {

if ($sym[$i] == $ch)

return $i;

}

return -1;

}

function searchFunctionTwo($sym, $n, $ch) {

for ($i = 0; $i < count($this->sym); $i++) {

if ($this->sym[$n][$i] == $this->ch)

return $i;

}

return -1;

}

function encoding() {

for ($i = 0; $i < strlen($this->message); $i++) {

$this->code += $this->table[searchFunction($this->A1, substr(strlen($i%$this->key), 1, $this->key))][searchFunction($this->A1, substr($i, 1, $this->message))];

}

echo "Encrypting message: ".$this->code;

}

function decodingo() {

for ($i = 0; $i < count($this->code); $i++) {

$this->decoding += $this->A1[searchFunctionTwo($this->table, searchFunction($this->A1, substr(strlen($i%$this->key), 1, $this->key)), substr($i, 1, $this->code))];

}

echo "Decoded message: ".$this->decoding;

}

function alpha()

{

echo "Alphabet:";

foreach($this->A1 as $alpha)

{

echo $alpha;

}

}

}

$mes="Сообщенийо";

$key="Ключ";

$vig = new Viginer($mes, $key);

$vig->tablele();

$vig->encoding();

$vig->decodingo();

$vig->alpha();

?>

Fatal error: Call to undefined function searchFunctionTwo() in T:\home\virtual\site.ru\_vig.php on line 57 😡

B
На сайте с 21.12.2009
Offline
28
#6

Вы не внимательны

25 строка

$table[$i][$j] = $this->A1[($j+$i)%count($this->A1)];

и так далее ко всем переменным объявленным в начале класса надо обращаться через $this-> , то есть и к code и decoding и остальным

PR
На сайте с 30.12.2007
Offline
93
#7

К методам класса необходимо так обращаться: $this->methodName()

vorona
На сайте с 31.01.2010
Offline
91
#8
boodda:
Вы не внимательны

25 строка
$table[$i][$j] = $this->A1[($j+$i)%count($this->A1)];

и так далее ко всем переменным объявленным в начале класса надо обращаться через $this-> , то есть и к code и decoding и остальным

boodda, спасибо, я это понял :) Код выше уже измененный.

B
На сайте с 21.12.2009
Offline
28
#9

еще раз, PROGRAMMATOR вам сказал, что к функциям класса в данном случае тоже надо обращатся через This-> если вы делаете вызов внутри класса

vorona
На сайте с 31.01.2010
Offline
91
#10

Ага, понял, $this->searchFunction, СПАСИБО.

vorona добавил 03.11.2011 в 16:51

Сколько просидел и не работает :(

Constructing Viginer table:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789

БВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789А

ВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБ

ГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВ

ДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГ

ЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГД

ЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕ

ЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖ

ИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗ

ЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИ

КЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙ

ЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙК

МНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛ

НОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМ

ОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМН

ПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНО

РСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОП

СТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПР

ТУФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРС

УФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТ

ФХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУ

ХЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФ

ЦЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХ

ЧШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦ

ШЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧ

ЩЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ

ЪЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩ

ЫЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪ

ЬЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫ

ЭЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬ

ЮЯ#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭ

Я#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮ

#0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#

123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0

23456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#01

3456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#012

456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123

56789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#01234

6789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#012345

789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456

89АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#01234567

9АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#012345678

Encrypting message:

Notice: Undefined offset: 33 in T:\home\virtual\site.ru\_vig.php on line 42

Decoded message: 0

Alphabet:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#0123456789

vorona добавил 03.11.2011 в 16:52

Конечный код:

<?php

class Viginer {

var $A1 = array ("А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","#","0","1","2","3","4","5","6","7","8","9");

var $message="";

var $key="";

var $table = array(array(),array());

var $code="";

var $decoding="";

function Viginer($mes, $k) {

$message = $mes;

$key = $k;

}

function tablele() {

echo "<b>Constructing Viginer table:</b><br>";

for ($i = 0; $i < count($this->A1); $i++) {

for ($j = 0; $j < count($this->A1); $j++) {

$table[$i][$j] = $this->A1[($j+$i)%count($this->A1)];

echo $table[$i][$j];

}

echo '<br>';

}

}

function searchFunction($sym, $ch) {

for ($i = 0; $i < count($sym); $i++) {

if ($sym[$i] == $ch)

return $i;

}

return -1;

}

function searchFunctionTwo($sym, $n, $ch) {

for ($i = 0; $i < count($sym); $i++) {

if ($sym[$n][$i] == $ch)

return $i;

}

return -1;

}

function encoding() {

for ($i = 0; $i < strlen($this->message); $i++) {

$this->code += $this->table[$this->searchFunction($this->A1, substr(strlen($i%$this->key), 1, $this->key))][$this->searchFunction($this->A1, substr($i, 1, $this->message))];

}

echo "<br><b>Encrypting message:</b> ".$this->code."<br>";

}

function decodingo() {

for ($i = 0; $i < count($this->code); $i++) {

$this->decoding += $this->A1[$this->searchFunctionTwo($this->table, $this->searchFunction($this->A1, substr(strlen($i%$this->key), 1, $this->key)), substr($i, 1, $this->code))];

}

echo "<br><b>Decoded message:</b> ".$this->decoding;

}

function alpha()

{

echo "<br><b>Alphabet:</b><br>";

foreach($this->A1 as $alpha)

{

echo $alpha;

}

}

}

$mes="Сообщенийо";

$key="Ключ";

$vig = new Viginer($mes, $key);

$vig->tablele();

$vig->encoding();

$vig->decodingo();

$vig->alpha();

?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий