За последние 24 часа нас посетили 31660 программистов и 1364 робота. Сейчас ищут 947 программистов ...

PHP в JS

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

  1. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Как парсить PHP код в Js файлах?
    Прописал в .htaccess:
    Код (Text):
    1. AddType application/x-httpd-php .js
    2. AddHandler x-httpd-php5 .js
    3.  
    4. <FilesMatch "\.(js|php)$">
    5. SetHandler application/x-httpd-php
    6. </FilesMatch>
    И ничего не происходит.
     
  2. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Откуда парсить php код?
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Чего? Опиши, что хочешь сделать, а не как.
     
    Михаил Запаленов нравится это.
  4. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Впрочем мне нужно в обычном .js скрипте использовать php. Например:
    Код (Javascript):
    1. $("[data-action='test']").on('click', function() {
    2.     alert(<?='test'?>);
    3. })
     
  5. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    JSON
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    @Михаил Запаленов, видишь? Это вот то, о чем я говорил по части JQuery-коммьюнити.

    @Danil005, а каким образом PHP, серверная платформа, должен работать на клиенте в яваскрипте?
     
    Михаил Запаленов нравится это.
  7. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    @Fell-x27 Слушай можешь кинуть пример гитхаба хороший реализации модели запроса к БД, защищенной и т.д чтобы понять все
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    опять камни в огороды полетели...
     
  9. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    А вот не знаю, тут показывают, что можно.
     
  10. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Это костыль 2012 года, дату посмотри брат.
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    НУ а при чем тут выполнение php в javascript? Это богомерзкий костыль, из-за которого часть статики будет идти через php-машину ради полутора значений.

    Но выполняться он будет все равно на сервере, чтобы затем быть оданным клиенту. Хз, накой и кому это понадобилось, но клиентский код, если ему нужны данные с сервера, может запросить их напрямую, без этих огородов.

    И да, статья слита в минуса. Заслуженно.
    Это оффтоп для данного треда, в общем-то. Если интересует работа с БД, просто курни про плейсхолдеры(они есть не только у PDO, но и у MySQLi) и про экранирование строк. Это все есть в доке php.
     
  12. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Есть другие способы передать скриптам данные, считанные php. data-атрибуты например. И браузер, конечно, php не выполняет в любом случае, просто идёт отдельных запуск для того, чтобы сгенерить такой скрипт.
     
    askanim, Михаил Запаленов и Fell-x27 нравится это.
  13. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @mkramer, понимаешь, тут и встает проблема с защитой, нужно тогда придумывать как шифровать данные, чтобы их нельзя было подменить, приходиться делать проверку еще раз уже в Ajax-обработчике, потому что я передаю данные через Data...
     
  14. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Danil005, кто полезет в твой html что-то там менять? Никому нормальному это нафиг не надо. А в AJAX-обработчике по-любому должно быть куча проверок, поскольку всё, что пришло на сервер, всё от хакера.
    --- Добавлено ---
    Понятно, что там не должно быть данных, которые критически могут повлиять, типа цены за товар, поменял data-атрибут в браузере и купил MacBook за 1 рубль. Но id товара к примеру - да ради бога. Поменяет - получит другой товар. Или вообще ничего не получит
     
    askanim и Fell-x27 нравится это.
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    кто подменит данные ? Пушкин с гробу выскочит и подменит? или Лермонтов ? А мож сам Лев Толстой ?
    Это называется аутентификация
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    С защитой чего конкретно? И как это связано с тем, что ты предложил? Или ты думаешь, что мне большой проблемой будет воткнуть брейкпоинт на онлоад, перезагрузить страницу, дойти до строки, где ты считаваешь супер-защищенные данные, после чего подменить их через браузерную консоль? Защитил так защитил.

    Всегда исходи из того, что клиент априори скомпрометирован.
     
  17. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    нет, просто я думал так, что он будет передавать данные PHP в клинскую часть (js) по мере необходимости. По сути согласен, связать сервер и клиента наверно может Node.Js, поэтому я так и сделаю.
     
  18. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    не стоит делать из мухи слона с клинским пивом
     
  19. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну node оправдан, если надо что-то типа веб-сокетов использовать, а так и просто к php можно обратиться
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Все смешалось, люди, кони, клиент, сервер, пых, JS...
    Но так и не стало понятнее, зачем?
    А, главное, такое чувство, что ты сам не до конца понимаешь, что хочешь получить, ибо все в кашу, бро.
     
  21. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Впрочем, я хотел сделать класс, которые будет создать Ajax-запрос.
    А именно, например:
    PHP:
    1. namespace Base\App;
    2.  
    3. class Ajax ..(интерфейс, наследование, бла-бла) {
    4.         public static function CreateAjaxRequest($url, $button, $action, $form) {
    5.           echo '<a data-action='test'>'.$button.'</a>';
    6.           //И передать в конец файла script.js функцию с ajax($action, $url, $form, $button)
    7.         }
    8.    
    9. }
    script.js
    Код (Javascript):
    1. function ajax($action, $url, $form, $NAMEbutton, $header, $dataType='json', $typeOn='click', $typeSend='POST') {
    2.  
    3.   $("[data-action='"+$action+"']").on( $typeOn, function( e ) {
    4.  
    5.     $("[data-action='"+$action+"']").attr('disabled', true);
    6.     $("[data-action='"+$action+"']").html(load_icon);
    7.                 jQuery.ajax({
    8.                     url:      $url,
    9.                     type:     $typeSend,
    10.                     dataType: $dataType,
    11.                     data: jQuery($form).serialize(),
    12.                     success: function(response) {
    13.                     if( $dataType == 'json' ) {
    14.                       if( response.type === 'error' ) {notification(response.info, response.type, 5000);} else {
    15.                           notification(response.info, response.type, 5000);
    16.  
    17.                           if( $header != '') {
    18.                               $(location).attr("href", $header);
    19.                           }
    20.                       }
    21.                     } else {
    22.                       notification(response, 'info', 1500000);
    23.                       console.log(JSON.parse(response));
    24.                     }
    25.  
    26.                     var ti=setInterval(function() {
    27.                     $("[data-action='"+$action+"']").text($NAMEbutton);
    28.                     $("[data-action='"+$action+"']").removeAttr('disabled', true);
    29.                     clearInterval(ti);
    30.                     }, 3000);
    31.                
    32.                 },
    33.                 error: function(response) {
    34.                    notification('Внутренняя ошибка. (Reason: '+response+')', 'error', 5000);
    35.                 }
    36.              });
    37.       e.preventDefault()
    38.   });
    39. }
    А потом где-то в PHP коде, просто вставлять:
    Base\App\Ajax::CreateAjaxRequest('/test/ajax.php/', 'title', 'action', 'form');
     
  22. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Так выведи скрипт в документ через echo or print и внизу скрипта вызове его и все, при обращении к классу он будет распечатывать скрипт в документы echo "<script>... myscript(){} myscript();</script>"; и вызывать его после распечатки автоматом ПоняЛ?
     
  23. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Што, почему а главное зачем ? Удали нафиг. Забудь. Что ты делаешь ?Напиши Что ты хочешь получить в итоге. Каклва сия цель крестового похода? не надо кода. Просто напиши не то что ты пытаешься сделать и не то что ты хочешь. А напиши зачем ты это хочешь сделать.
    --- Добавлено ---
    Потому что вот это:
    Полное ж какое то.
    --- Добавлено ---
    Хватит советовать всякую хрень. Зачем ? Какой смысл?
    ТС слушай внимательно и запоминай первое правило разработки в вебе. Во время исполнения серверного скрипта никакого вывода не должно быть и в помине. Или если же он идёт используется ob_start для того чтобы предотвратить вывод перед отправлением заголовков.
     
  25. alexpride1993

    alexpride1993 Новичок

    С нами с:
    28 мар 2016
    Сообщения:
    56
    Симпатии:
    20
    Я вот кстати тоже так и не понял какую цель преследует аффтар, но догадываюсь что он хочет передать на клиент некие данные из PHP для дальнейшей обработки яваскриптом.
    Я в таких случаях либо делал input type=hidden, в value которого выводил нужные для передачи значения, а в скрипте подцеплял их через id, либо если данных много формировал на клиенте в отдельном блоке script переменную-объект, содержащий необходимые параметры.