За последние 24 часа нас посетили 115886 программистов и 6569 роботов. Сейчас ищет 1561 программист ...

Как запустить php скрипт, находящийся в <script>...</script> в php файле?

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

  1. Glebiys

    Glebiys Новичок

    С нами с:
    11 май 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Los-Angeles CA
    Доброго времени суток! Прошу прощения за запутанное название.
    У меня есть php файл (session.php), в котором есть небольшой js скрипт, отвечающий за websocket подключение:
    Код (Text):
    1. <?php if($auth == 1) { ?>
    2.        <script type="text/javascript">
    3.        var socket = new WebSocket("ws://xx.xx.xx.xx:xxxx");
    4.        socket.onopen = function() {
    5.          // Сюда нужно передать ключ, который мы вводили при входе
    6.          var protect = '<?php echo $authcode ?>';
    7.          socket.send("New connect: " + protect);
    8.        };
    9.        socket.onmessage = function(event) {
    10.         var mauth = 'Auth Ok';
    11.         if(event.data == mauth) {
    12.           // Авторизация пройдена, шлем сообщение
    13.           var msg = '<?php echo $msg_snd ?>';
    14.           socket.send(msg);
    15.           <?php // php ответ успешной отправки, сюда я хочу вставить php код, который будет выполняться по условию с JS выше ?>
    16.         }
    17.        };
    18.        </script>
    19. <?php } ?>
    У меня возникает следующая проблема: я не могу выполнить php код по условию, находящемуся в js:
    Код (Text):
    1. if(event.data == mauth) {
    2.           // Авторизация пройдена, шлем сообщение
    3.           var msg = '<?php echo $msg_snd ?>';
    4.           socket.send(msg);
    5.           <?php // php ответ успешной отправки, сюда я хочу вставить php код, который будет выполняться по условию с JS выше ?>
    6.         }
    Этот php кусок кода выполняется в любом случае, независимо от условия в js, что не есть хорошо. Как сделать так, чтобы по условию в js коде я смог запустить php код?
     
  2. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Могу предположить, что ПХП просто игнорирует твои JS условия, ему это не понятно и не видно и он обрабатывает только свои куски кода.
    Могу ошибаться, но предполагаю, что тут нужно смотреть в сторону AJAX

    Либо js содержимое запускать через echo или

    PHP:
    1. echo <<<EOT
    2. .............
    3. .............
    4. .............
    5. EOT;
     
    #2 AlexandrS, 7 июл 2018
    Последнее редактирование: 7 июл 2018
    Glebiys нравится это.
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    @Glebiys, http://phpfaq.ru/newbie/na_tanke. JS выполняется на клиенте, php на сервере. Для php твой js - просто кусок текста,который надо вывести.
     
    Glebiys нравится это.
  4. Ondottr

    Ondottr Новичок

    С нами с:
    24 ноя 2017
    Сообщения:
    46
    Симпатии:
    5
    PHP:
    1. <?php
    2. if($auth == 1) {
    3.        echo '<script type="text/javascript">
    4.       var socket = new WebSocket("ws://xx.xx.xx.xx:xxxx");
    5.       socket.onopen = function() {
    6.         // Сюда нужно передать ключ, который мы вводили при входе
    7.         var protect = ', $authcode, ';
    8.         socket.send("New connect: " + protect);
    9.       };
    10.       socket.onmessage = function(event) {
    11.        var mauth = 'Auth Ok';
    12.        if(event.data == mauth) {
    13.          // Авторизация пройдена, шлем сообщение
    14.          var msg = ', $msg_snd, ';
    15.          socket.send(msg);';
    16.            // пишешь сюда на php ответ успешной отправки
    17.         echo '}
    18.       };
    19.       </script>';
    20. }
    21. ?>
     
    Glebiys нравится это.
  5. yanuzay

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

    С нами с:
    28 мар 2018
    Сообщения:
    503
    Симпатии:
    58
    что это? почему запятые, а не точки?

    Код (Text):
    1. echo '}
    Что здесь происходит?
     
    Glebiys нравится это.
  6. Ondottr

    Ondottr Новичок

    С нами с:
    24 ноя 2017
    Сообщения:
    46
    Симпатии:
    5
    ошибся, нужны точки

    Короче выводишь js-код с помощью php через echo
    вот так:
    PHP:
    1. <?php
    2. $num = 77;
    3. echo '<script>
    4.    var num = '. $num. ';
    5.    document.write (num);
    6.    </script>';
    7. ?>
     
    Glebiys нравится это.
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    @yanuzay, там все путем было написано кроме непроэкранированных кавычкек у 'Auth Ok'.
    --- Добавлено ---
    Также можно не экранировать, а использовать дв. кавычки, как двумя строками выше.
     
    Glebiys нравится это.
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну ты лучше отдели PHP от JavaScript, вынеси JS в отдельные файлы, информацию передавай через веб-сокет.
     
    Glebiys нравится это.
  9. Glebiys

    Glebiys Новичок

    С нами с:
    11 май 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Los-Angeles CA
    Получилось через echo, всем большое спасибо за помощь!