Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Синтаксическая ошибка
Форумы портала PHP.SU » » Вопросы новичков » Синтаксическая ошибка

Страниц (1): [1]
 

1. zeratul - 02 Августа, 2016 - 11:51:25 - перейти к сообщению
Здравствуйте! Написал GET Запрос, при нажатии на него идет нападение на бота.
Ошибки вроде и нет.
Но когда добавил
ini_set('display_errors',1);
error_reporting(E_ALL);

То показывает следующее
Notice: Undefined index: mass in E:\OpenServer\domains\test.local\loc\map.php on line 791
Notice: Undefined index: mass in E:\OpenServer\domains\test.local\loc\map.php on line 792
Notice: Undefined index: mass in E:\OpenServer\domains\test.local\loc\map.php on line 793
Notice: Undefined index: mass in E:\OpenServer\domains\test.local\loc\map.php on line 794

А вот сам код
if ($_GET['mass']==111){Attack($pers,array(111));}
if ($_GET['mass']==112){Attack($pers,array(112));}
if ($_GET['mass']==113){Attack($pers,array(113));}
if ($_GET['mass']==114){Attack($pers,array(114));}

Само нападение работает, все работает, но при включении вывода ошибок почему то показывает то что я выше писал

Помогите решить проблему пожалуйста.
2. Viper - 02 Августа, 2016 - 13:58:31 - перейти к сообщению
Проверки забыли.
isset(), array_key_exists(), empty()
3. zeratul - 02 Августа, 2016 - 14:04:51 - перейти к сообщению
Viper пишет:
Проверки забыли.
isset(), array_key_exists(), empty()


напишите пожалуйста как надо написать на моем примере
4. DarkLan - 02 Августа, 2016 - 17:31:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['mass']==111)){
  2. Attack($pers,array(111));
  3. }
  4. или
  5. if (empty($_GET['mass']==111)){
  6. Attack($pers,array(111));
  7. }

и вообще, эти все написано через if else в самов вреймворке? или оно как то проходит через цикл?
5. Sail - 03 Августа, 2016 - 09:13:13 - перейти к сообщению
DarkLan, не учите плохому! Проверять ведь надо до сравнения...
zeratul, например, так:
PHP:
скопировать код в буфер обмена
  1. $var = isset($_GET['mass']) ? $_GET['mass'] : FALSE;
  2. switch($var) {
  3.     case 111:
  4.     case 112:
  5.     case 113:
  6.     case 114:
  7.         Attack($pers,array($var));
  8.         break;
  9.     default:
  10.         $message = ($var === FALSE) ? 'Нет данных' : 'Данные не входят в требуемый диапазон';
  11.         exit($message);
  12. }
6. DarkLan - 03 Августа, 2016 - 11:14:23 - перейти к сообщению
Sail пишет:
...


Возможно проверка в этом случае идет на условия, не знаю, например на наличие ключа, или оплаты за бота. Например так:
PHP:
скопировать код в буфер обмена
  1. (isset($_GET['mass'] == `payOk`)) ? $_GET['mass'] : `У вас нет средств на это действие`;


или в контексте задающего вопрос:
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['submit']) && !empty($_GET['submit'])) {
  2. $key = '111';
  3. foreach ($_GET as $value) {
  4.    if ($_GET['mass'] == $key){
  5.       Attack($pers,$value);
  6.       break;
  7. }
  8. }


В цикл заходит весь ассоциативный массив GET, в нем можно манипулировать его ключами.
7. Fart - 03 Августа, 2016 - 11:17:13 - перейти к сообщению
только добавлю по поводу $_GET['mass']
помимо isset необходимо применить empty... далее экранировать символы

 

Powered by ExBB FM 1.0 RC1