Нужна помощь PHP
1.
3DwEp 27.01.2012 / 16:12
Вообщем на денвере скрипт работает нормально, но на хосте выдаёт такую ошибку:
Notice: Uninitialized string offset: 21 и.т.д.
Сам скрипт это генератор специального хэша. Получает из одного кода другой.
Погуглил и нашёл похожую проблему.
И тут уже мне помог великий Google, оказывается что на 64 битной системе функция
работает не корректно, так как используются битовые операции которые завязаны на 32х битные процессоры, и лечиться беда эта изменением функции на следующую.
Ссылка:
http://php-mysql-life.blogspot.com/2011/10/xls-spreadsheetexcelreader-olereadinc.html
Вообщем нужно переписать в генераторе какую-то ф-цию.
Кто поможет? Цена ваша.
2.
Андрей 27.01.2012 / 16:25
Предназначение функции?
3.
KOZZ 27.01.2012 / 16:38
в массиве нет элемента с ключом 21, и так далее, а ты пытаешься к ним обратиться
4.
3DwEp 27.01.2012 / 16:39
2.
Фанат, хз, хз, я вообще не понимаю, алгоритм не я писал, но код понять можно)
eGo Где Мой Кэш7, на локалке же работает
5.
KOZZ 27.01.2012 / 16:45
Notice: Uninitialized string offset:
я не читал пост полностью к сожалению, прочитал только сам notice.
на локалке может быть просто отключено отображение ошибок.
6.
3DwEp 27.01.2012 / 16:46
Notice: Uninitialized string offset: 21 in /var/www/***/***/www/file.php on line 56
56 строка:
if ($str[$i] == $c)
пфф..
5.
eGo Где Мой Кэш7, включено, никаких ошибок нет
7.
KOZZ 27.01.2012 / 16:47
6, значит на момент ошибки переменная $i содержит значение 21, а ключа 21 не существует в массиве $str
8.
3DwEp 27.01.2012 / 16:51
7.
eGo Где Мой Кэш7, ну на локале же работает, а на хосте нет, и мне говарили подобное что на 64 битных может не работать, блин.. хз.. Не посмотриш?
9.
KOZZ 27.01.2012 / 17:06
8.
nickname, насколько я знаю php никаким образом не зависит от того, скольки битная система
10.
3DwEp 27.01.2012 / 17:07
9.
eGo Где Мой Кэш7,
http://php-mysql-life.blogspot.com/2011/10/xls-spreadsheetexcelreader-olereadinc.html
9.
eGo Где Мой Кэш7, ну так что, посмотриш? если будет работать пару соток дам)
11.
Вантуз-мен 27.01.2012 / 17:07
вообще всегда надо включать ошибку в данном случае у тебя предупреждение о необъявленной переменной
или нет такого ключа в массиве $str или не существует переменной $c
напиши какой там выше у тебя код
12.
3DwEp 27.01.2012 / 17:09
<?php
class HashGenerator
{
var $SYMB_COUNT = 62;
var $ARRAY_0 = array(0, 1, 2, 3, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16, 16, 17, 18, 19, 20, 21, 22, 23, 40, 41, 42, 45);
var $ARRAY_1 = array(-2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, -5, -5, 0, -3, 0, 0, 0, 0, 0, -7, -1, 0, -8, -8, -4, -11, -6, 0, 0, -3, 0, -5, 0, 0, -3, 0, 0, 0, 0);
var $Key;
var $field_606; // Errors count (if more than 2 midlet ask restart the chat)
var $Symb;
var $field_31;
var $field_1282;
var $field_1280;
var $field_378_length;
var $field_427;
var $field_542;
var $field_1122;
var $field_425; // just must be greater than field_1122
var $field_660;
var $field_379;
var $field_431; // Press/Release keys count
var $field_1281;
var $field_11 = array();
var $field_511 = array();
public function __construct($GotKey) {
$this->Key = $GotKey;
$this->field_606 = -1;
$this->Symb = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$this->field_31 = 123;
$this->field_1282 = '0';
$this->field_1280 = '0';
$this->field_378_length = 222;
$this->field_427 = 55;
$this->field_542 = 0;
$this->field_1122 = 6;
$this->field_425 = 323;
$this->field_660 = 97;
$this->field_379 = 0;
$this->field_431 = 0;
$this->field_1281 = 755;
for ($i=0;$i<=33;$i++) $this->field_11[$i] = $this->ARRAY_0[$i];
for ($i=0;$i<=46;$i++) $this->field_511[$i] = $this->ARRAY_1[$i];
return true;
}
function SetGotKey($GotKey) {
$this->Key = $GotKey;
}
function IndexOf($str, $c) {
$rtn = 0;
for ($i=0;$i<=strlen($str);$i++)
if ($str[$i] == $c)
всё до 56 строки
13.
Вантуз-мен 27.01.2012 / 17:14
напиши код метода indexOf здесь
сделай так if (isset($str[$i]) && $str[$i] == $c)
14.
3DwEp 27.01.2012 / 17:20
function IndexOf($str, $c) {
$rtn = 0;
for ($i=0;$i<=strlen($str);$i++)
if ($str[$i] == $c)
{
$rtn = $i + 1; break;
}
return $rtn;
}
15.
Андрей 27.01.2012 / 17:32
<?php
function IndexOf($str, $c)
{
$rtn = 0;
$a = mb_strlen($str, 'UTF-8');
for ($i = 0; $i <= $a; $i++) {
if (isset($str[$i]) and $str[$i] == $c) {
$rtn = $i + 1;
break;
}
}
return $rtn;
}
?>
16.
3DwEp 27.01.2012 / 17:40
15.
Фанат, теперь ошибку не выдаёт, но и сам скрипт не работает. Вообщем должно выводить
999 :AUTH OK
на локалке - работает. на хосте - нет.
Вот сам скрипт:
http://cms.ailep.ru/hash.zip
17.
ramzes 27.01.2012 / 18:47
for ($i = 0; $i < $a; $i++)
Это вместо вот этого
for ($i = 0; $i <= $a; $i++)
18.
3DwEp 28.01.2012 / 17:31
17.
ramzes, не помогло, на хосте скрипт не пашет
это из за 32 битных ф-ций каких-то..
19.
Станислав 28.01.2012 / 17:35
12.
nickname, блиииин, а чего так кустарно? Чего-то у меня даже в голове не представляется, чего ты там делаешь.
20.
3DwEp 28.01.2012 / 17:35
19.
SNELS, алгоритм писал не я, его переписывали с дельфи на пых.. ну очень нужен он рабочий на хосте
21.
Станислав 29.01.2012 / 17:39
20.
Чак Норис, ну так ты напиши, что ты хочешь сделать. Вот мне лень даже многобукав читать =)
22.
3DwEp 30.01.2012 / 22:00
21.
SNELS, там специальный алгоритм получения из одного кода - другого (читает ответ от сервера, и для того чтобы авторизоватся нужно сгенерировать полученый хэш через данный алгоритм)
23.
Санёк 31.01.2012 / 05:48
архив перезалей.
URL:
https://visavi.net/topics/28859