Перейти к содержимому


Фотография

php 5.4 problems помогите


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 16

#1 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 20 Август 2016 - 21:50

Добрый вечер! Есть скриптеры по php, кто-нибудь может решить проблему одну.

Есть один скрипт, работает он корректно, но к сожалению, на веб-хостинге арены стоит версия php 5.4 и этот скрип выдает ошибку Warning: Illegal string offset 'authid' in и дальше идет строчка, где собственно эта ошибка и появилась, на php 5.3 либо php 5.5 такой проблемы нет, читал на форумах нужно ввести массив, но я в этом мало понимаю, кто-нибудь сможет исправить или хотя бы толково объяснить?

Могу часть кода скинуть, если нужно


Сообщение отредактировал ку3: 20 Август 2016 - 22:01

  • Lesdure это нравится

#2 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 027 сообщений

Отправлено 20 Август 2016 - 22:33

Вот бы код еще посмотреть.



#3 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 20 Август 2016 - 22:43

Вот бы код еще посмотреть.

первая ошибка Warning: Illegal string offset 'authid' in /mnt/iscsi/www/***/data/www/bans.imperia-tf2.ru/pages/page.adminlist.php on line 217

 

Часть кода

Скрытый текст



#4 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 027 сообщений

Отправлено 20 Август 2016 - 23:49

первая ошибка Warning: Illegal string offset 'authid' in /mnt/iscsi/www/***/data/www/bans.imperia-tf2.ru/pages/page.adminlist.php on line 217

 

Часть кода

Скрытый текст

Очевидно, значение элемента массива $admin['authid'] и $admin['user'] не является строкой.

Перед этим кодом добавь:

exit(var_dump($admin));

И увидишь что там лежит.

Проще говоря, ты пытаешься не строковый тип данных сравнить со строкой.



#5 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 21 Август 2016 - 0:23

Очевидно, значение элемента массива $admin['authid'] и $admin['user'] не является строкой.

Перед этим кодом добавь:

exit(var_dump($admin));

И увидишь что там лежит.

Проще говоря, ты пытаешься не строковый тип данных сравнить со строкой.

В версиях php 5.3 и 5.5 скрипт выводи корректно, знач прокатывает, попробую позже


Очевидно, значение элемента массива $admin['authid'] и $admin['user'] не является строкой.

Перед этим кодом добавь:

exit(var_dump($admin));

И увидишь что там лежит.

Проще говоря, ты пытаешься не строковый тип данных сравнить со строкой.

А как исправить? я вставил, теперь вообще пишет string(1) "�" или я что-то не то сделал?



#6 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 027 сообщений

Отправлено 21 Август 2016 - 0:32

В версиях php 5.3 и 5.5 скрипт выводи корректно, знач прокатывает, попробую позже


А как исправить? я вставил, теперь вообще пишет string(1) "�" или я что-то не то сделал?

Ты пытаешься строку как массив использовать, на других версиях у тебя это предупреждение просто не отображалось. Это не значит, что там работало все нормально.



#7 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 21 Август 2016 - 0:41

Ты пытаешься строку как массив использовать, на других версиях у тебя это предупреждение просто не отображалось. Это не значит, что там работало все нормально.

Так из-за этого предупреждение у меня вообще данные из таблицы не отображаются, на других версия админы в таблице есть и все работало кул

P.S. Дай какие-нибудь контактные данные, так проще будет


Сообщение отредактировал ку3: 21 Август 2016 - 0:43


#8 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 21 Август 2016 - 9:20

Укроп, не знаешь не говори

Сравнивать строку можно с чем угодно, хоть с объектом.

У него же там мультибайтовый символ, который не может быть индексом массива



#9 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 21 Август 2016 - 12:01

Укроп, не знаешь не говори

Сравнивать строку можно с чем угодно, хоть с объектом.

У него же там мультибайтовый символ, который не может быть индексом массива

Подскажи тогда, как правильно нужно эту строку было написать?



#10 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 027 сообщений

Отправлено 21 Август 2016 - 12:38

Укроп, не знаешь не говори

Сравнивать строку можно с чем угодно, хоть с объектом.

У него же там мультибайтовый символ, который не может быть индексом массива

Таки у него там вообще в результате не массив же.



#11 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 21 Август 2016 - 17:18

Таки у него там вообще в результате не массив же.

ага, точно

#12 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 21 Август 2016 - 17:22

То есть никто не подскажет как правильно строчку написать



#13 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 21 Август 2016 - 18:18

То есть никто не подскажет как правильно строчку написать

в $admin у тебя строка, а проверяет ты ее как массив. Версия пхп тут вообще не при чем. Видимо на тех версиях, где нет ошибки, отключено отображение ошибок

#14 ку3

ку3

    Новичок

  • Пользователь
  • Pip
  • 49 сообщений

Отправлено 21 Август 2016 - 20:23

в $admin у тебя строка, а проверяет ты ее как массив. Версия пхп тут вообще не при чем. Видимо на тех версиях, где нет ошибки, отключено отображение ошибок

То есть нужно проверить ее как строку, а как, не подскажете?



#15 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 027 сообщений

Отправлено 21 Август 2016 - 20:29

То есть нужно проверить ее как строку, а как, не подскажете?

Перестать обращаться к ней по индексу ['authid'] или ['user'].



#16 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 21 Август 2016 - 22:33

Перестать обращаться к ней по индексу ['authid'] или ['user'].

Немного неверное решение. Если он ждет от переменной массива, то изначально переменная должна быть массивом.

 

LzQATgthzHg.jpg



#17 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 027 сообщений

Отправлено 21 Август 2016 - 22:38

Немного неверное решение. Если он ждет от переменной массива, то изначально переменная должна быть массивом.

 

LzQATgthzHg.jpg

Да нет же, в коде сравнение:

$admin['authid'] != ''

Но $admin - это не массив, соответственно и результат такой. 

Ну тут да, либо в переменную совать массив либо прекращать пытаться использовать ее как массив )))




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных