За последние 24 часа нас посетили 17876 программистов и 1651 робот. Сейчас ищут 1424 программиста ...

Добрый день ребяра у меня скрипт под версию php 5.4 помогите!

Тема в разделе "PHP для новичков", создана пользователем lopster, 23 июл 2017.

  1. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    Добрый день ребяра у меня скрипт под версию php 5.4 что нужно сделать и как для его корректной работе не Апаче php 7.0?(((
     
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    включаешь пхп 7.1
    отображаешь все ошибки, чтобы в браузере видно было все нотисы варнинги и т.д.
    и фиксишь, по списку кропотливо фиксишь каждый нюанс твоих дыр в скрипте.
     
    _ne_scaju_ нравится это.
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    Ты так написал твоих дыр :D а если это не он писал :D то чии то дыры исправлять надо будет :)
     
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    У меня всё, что я писал на 5.4 на семёрке запускается. Другое дело, что расширение mysql я не использовал и на 5.4
     
  6. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Ну я бы рекомендовал в любом случае знакомиться с миграциями.Допустим в 7 изменили конструкцию list(). Ошибки ты не получишь,но результат будет другой:
    PHP:
    1. <?php
    2. list($a[], $a[], $a[]) = [1, 2, 3];
    php5.x
    Код (Text):
    1. array(3) {
    2.   [0]=>
    3.   int(3)
    4.   [1]=>
    5.   int(2)
    6.   [2]=>
    7.   int(1)
    8. }
    php7.x
    Код (Text):
    1. array(3) {
    2.   [0]=>
    3.   int(1)
    4.   [1]=>
    5.   int(2)
    6.   [2]=>
    7.   int(3)
    8. }
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ты хоть раз так писал?

    Или вот так:
    PHP:
    1. $$foo['bar']['baz']
    Это какие-то сексуальные извращения :)
     
  8. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Нет,я так не писал :) Просто пример привел того,что некоторые встроенные конструкции,в том числе foreach,list имеют различия между версиями php и желательно всегда быть в курсе всех новых изменений,потому что некоторые из них не бросят ошибок и исключений,но результат будет отличаться от ожидаемого и такие ошибки без чтения тех же миграций отследить будет очень сложно.
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    зачем лишние 4 символа писать ?
    PHP:
    1. [ $A, $B, $C ] = [1, 2, 3];
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Один раз у меня было нечто подобное, когда я подрался с foreach:D а ошибок то не было. Благо, я начал делать отладку и она показала, что foreach в 7-ой версии работает иначе, только потом я решил заглянуть в доку:D
     
    alexblack нравится это.
  11. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    добрый вечер вот ешё столкнулся с проблемой на выполняется код одной страницы( просто белая) прописал
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    ?>
    Выдало такую ерунду в чем косяк(((,
    Код (Text):
    1. require_once "include/include.php"; require_once "../classes/mail_templates.php"; global $db; global $lng; $smarty = new Smarty; $smarty = common($smarty); $mail_templates=new mail_templates(); if(isset($_GET['template'])) { $template_code = escape($_GET['template']); $crt_template=$mail_templates->getRegLang($template_code); } else { $template_code=$mail_templates->getFirst(); $crt_template = $mail_templates->getRegLang($template_code); } $smarty->assign("tab","templates"); $smarty->assign("lng",$lng); $array_templates=$mail_templates->getAll(); $smarty->assign("array_templates",$array_templates); if(isset($_POST['Save'])) { $mail_templates->edit($template_code); $crt_template=$mail_templates->getRegLang($template_code); } $smarty->assign("crt_template",$crt_template); $smarty->assign("template_code",$template_code); $db->close(); if($db->error!='') { $db_error = $db->getError(); $smarty->assign('db_error',$db_error); } $smarty->display('mail_templates.html'); close(); ?>
     
  12. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @lopster покажи весь код
     
  13. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    Давайте так вот ошибка с сервера
    Код (Text):
    1. 6.204442 2017] [cgi:error] [pid 739032] [client 80.84.181.212:44755] AH01215: PHP Notice:  Undefined variable: domain_only in /var/www/nsk/data/www/ukrceny.com.ua/include/form.php on line 764
    а вот сама переменная
    $main_domain = $domain_only[0];
    return $main_domain;
     
  14. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это не "вот сама переменная" это "вот использование той самой неопределенной переменной"
     
  15. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    Изза чнго это может быть?
     
  16. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Из-за того что переменную не определили. Ваш капитан очевидность. Тебя уже просили полный код предоставить. Ты этого еще не осилил. А по представленному фрагменту кода и по представленной записи из журнала ошибок всем понятно что ты пытаешься почитать нулевой индекс из значения необъявленной переменной. Всем да не всем.
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    по самообучению - копируешь PHP Notice: Undefined variable: и идешь в гугл, там 100500 решений - но тебе не дано.
    Нужно учить азбуку пхп все с начала
     
  18. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    джержи
     

    Вложения:

    • form.zip
      Размер файла:
      7,5 КБ
      Просмотров:
      4
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    в том уг переписывать смысл всей функции нужно

    тупо:
    PHP:
    1. $main_domain = $domain_only[0];
    2.     return $main_domain;
    PHP:
    1. return ( $domain_only[0] ?? 'Пусто, выросла капуста' );
     
  20. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    не я писал а вот как исправить хз)
     
  21. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @lopster уууу... я бы на твоем месте выкинул этот треш... например, в той функции которая тебя беспокоит:
    PHP:
    1. $composed_tlds = "co.uk|co.za|com.ua|com.au|com.tw|com.mx|com.br|co.sw|co.nz|com.de|com.ng|com.ph";
    - вот тут каждая точка означает вообще любой символ. com1ua cojuk com1ng - всё попадает под паттерн

    а вот проблемный блок:
    PHP:
    1. if(preg_match($tld_pattern2, $dstr) )
    2.             preg_match ("/([A-Za-z0-9.-]+(\.))?[A-Za-z0-9-]+(\.)(".$composed_tlds.")/", $dstr, $domain_only);
    3.         else if(preg_match($tld_pattern1, $dstr) )
    4.             preg_match ("/([A-Za-z0-9.-]+(\.))?([A-Za-z0-9-])+(\.)[A-Za-z]{2,3}/", $dstr, $domain_only);
    5.     else if(preg_match($ip_pattern, $dstr) )
    6.         preg_match ("/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/", $dstr, $domain_only);
    7.     else if(preg_match($localhost_pattern, $dstr) ) {
    8.         $domain_only = array(0=>"localhost");
    9.     }
    10.  
    11.     $main_domain = $domain_only[0];
    домейн_онли появляется только как переменная, в которую будет поскладирован результат применения регулярки, но где-то что-то идет не так и переменная не объявляется, но используется.
     
  22. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    ой боже, ты просто копипастишь с инета скрипты но нифига не программируешь ?o_O
    --- Добавлено ---
    оставляю помидор
     
  23. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    нет отдали движок вот мучаюсь(
    --- Добавлено ---
    Главное апачи 7 понимает а 5.6 не выводит но на апаче другие не стыковки вылазят
     
  24. lopster

    lopster Новичок

    С нами с:
    15 май 2017
    Сообщения:
    27
    Симпатии:
    0
    хорошо перейду на пхп 7 там страница открывается работает, помогите хотя бы решить проблему в этом же файле строки 757 генерация емейл сообщений реги и востановления пароля что не совместимо с 7 это вылазит только на 7 вместо ссылей приходят тупо пустые письма.((((( в этой переменой не понимает 7.
     
    #24 lopster, 26 июл 2017
    Последнее редактирование: 26 июл 2017
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    найми кодера
     
    Ganzal нравится это.