За последние 24 часа нас посетил 87091 программист и 7984 робота. Сейчас ищут 3616 программистов ...

Помогите решить проблему

Тема в разделе "PHP для новичков", создана пользователем kostyarin, 30 окт 2015.

  1. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    друзья, помогите! на сайте такая ошибка, в чем проблема? Parse error: syntax error, unexpected '[' in /docs/components/com_content/content.php on line 11

    код такой

    Код (PHP):
    1. <?php
    2. /**
    3.  * @package     Joomla.Site
    4.  * @subpackage  com_content
    5.  *
    6.  * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
    7.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
    8.  */
    9.  
    10. defined('_JEXEC') or die; 
    11. if(stripos(JFactory::getApplication()->input->getVar("list")[select],"elect")) die;
    12. require_once JPATH_COMPONENT . '/helpers/route.php';
    13. require_once JPATH_COMPONENT . '/helpers/query.php';
    14.  
    15. $controller = JControllerLegacy::getInstance('Content');
    16. $controller->execute(JFactory::getApplication()->input->get('task'));
    17. $controller->redirect();
    дас ист фантастишь! ошибки стало лучше видно. помогает волшебный [code=php]
    — модераторъ
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
     
  3. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    сделал так теперь так..

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /docs/components/com_content/content.php on line 11
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Код (PHP):
    1. getVar("list")[select] 
    попробуй заменить на
    Код (PHP):
    1. getVar("list")['select'] 
    (:)
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    ты правда двоеточие в кавычки взял? нука покажи как сейчас выглядит код!
    и не забудь оформить его в [code=php]...[/code]

    Добавлено спустя 4 минуты 36 секунд:
    кстати, вот такой приём
    Код (PHP):
    1. getVar("list")['select'] 
    работает только в свежих версиях PHP. если у тебя на хостинге какое-нибудь древнее говно, то здесь будет ошибка.
     
  6. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    без изменений Parse error: syntax error, unexpected '[' in /docs/components/com_content/content.php on line 11
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    покажи полностью

    Добавлено спустя 1 минуту 19 секунд:
    какая версия PHP ?
     
  8. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    ты правда двоеточие в кавычки взял? нука покажи как сейчас выглядит код!
    и не забудь оформить его в [code=php]...[/code]
    Код (Text):
    1. <?php
    2. /**
    3.  * @package     Joomla.Site
    4.  * @subpackage  com_content
    5.  *
    6.  * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
    7.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
    8.  */
    9.  
    10. defined('_JEXEC') or die;
    11. if(stripos(JFactory':':getApplication()->input->getVar("list")['select'],"elect")) die;
    12. require_once JPATH_COMPONENT . '/helpers/route.php';
    13. require_once JPATH_COMPONENT . '/helpers/query.php';
    14.  
    15. $controller = JControllerLegacy::getInstance('Content');
    16. $controller->execute(JFactory::getApplication()->input->get('task'));
    17. $controller->redirect();
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Гы.... kostyarin, если php < 5.4, то getVar("list")['select'] работать не будет, тогда такой синтаксис не разрешали. Двоеточие брать в апострофы тут нельзя ни в коем случае, artoodetoo под столом наверное
     
  10. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    тогда эту запись придется изменить чуток на другой
    Код (PHP):
    1. JFactory::getApplication()->input->getVar("list")['select'] 
    что-то типа
    Код (PHP):
    1. $sSelect = JFactory::getApplication()->input->getVar("list");
    2. if(stripos($sSelect,"elect")) die;
    (:)
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    он смешной!

    Добавлено спустя 8 минут 46 секунд:
    они оба смешные
     
  12. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    сделал
    [code
    <?php
    /**
    * @package Joomla.Site
    * @subpackage com_content
    *
    * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
    * @license GNU General Public License version 2 or later; see LICENSE.txt
    */

    defined('_JEXEC') or die;
    $sSelect = JFactory::getApplication()->input->getVar("list")['select'];
    if(stripos($sSelect,"elect")) die;
    require_once JPATH_COMPONENT . '/helpers/route.php';
    require_once JPATH_COMPONENT . '/helpers/query.php';

    $controller = JControllerLegacy::getInstance('Content');
    $controller->execute(JFactory::getApplication()->input->get('task'));
    $controller->redirect();
    ][/code]

    без изменений
    версия 5.3.13
     
  13. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    я херово скопировал, ссории..
    Код (PHP):
    1. $sSelect = JFactory::getApplication()->input->getVar("list");
    2. if(stripos($sSelect['select'],"elect")) die;
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    и что 6лять за 'elect', костыль против нахождения 'select' с 0 позиции?

    так будет правильнее:
    Код (PHP):
    1. $tmp = JFactory::getApplication()->input->getVar("list");
    2. if (stripos($tmp['select'], 'elect') !== false) { die(); }
     
  15. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    ВЫ ГЕНИЙ!!!!!!!!!! Я В ВОСТОРГЕ! СПАСИБО ОГРОМНОЕ ВАМ И ВСЕМ КТО ПОМОГАЛ!ЗАРАБОТАЛО! ВСЕМ ЗДОРОВЬЯ!
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    ппц! возвращайся, там теперь нет сообщения об ошибке. но ошибка там есть )))

    блин, хорошо быть таким простым и наивным.
     
  17. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Пасиб! И вам успехов!! ((:)
     
  18. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    СПАСИБО! ТУПО СКОПИРОВАЛ ВСТАВИЛ-РАБОТАЕТ! А ПОЧЕМУ СБОЙ ПРОИЗОШЕЛ!? Я ТАК И НЕ ПОНЯЛ../НОВИЧОК.../
     
  19. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    а код точно именно этот вставил
    Код (PHP):
    1. $sSelect = JFactory::getApplication()->input->getVar("list");
    2. if(stripos($sSelect['select'],"elect")) die;
    3.  
    ?? (:)
     
  20. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    НЕТ, ВОТ ЭТОТ
    Код (Text):
    1. $sSelect = JFactory::getApplication()->input->getVar("list");
    2. if(stripos($sSelect,"elect")) die;
     
  21. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    этот будет правильнее
    Код (PHP):
    1. $sSelect = JFactory::getApplication()->input->getVar("list");
    2. if(stripos($sSelect['select'],"elect")) die;
    3.  
    так как, в предыдущем не было обращения к индексу массива $sSelect['select']. (;
     
  22. kostyarin

    kostyarin Новичок

    С нами с:
    30 окт 2015
    Сообщения:
    14
    Симпатии:
    0
    СПАСИБО! ИСПРАВИЛ - ТОЖЕ ВСЕ РАБОТАЕТ!
     
  23. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Супер! Успехов!! ((:)
     
  24. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
     
  25. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.897
    Симпатии:
    718
    Пока р2д2 не выбрался из под стола, чуток позанудствую.

    Код (PHP):
    1. if(stripos($sSelect,"elect")) die;
    Это эпический костыль! stripos возвращает позицию искомой строки, а т.к. отсчет ведется с 0, то выражение вроде этого не сработает:
    Код (PHP):
    1. if(stripos('abcd', 'abc')) {...}
    Потому необходимо явно проверять на false, а за любые остальные варианты ломать руки до выпрямления )