Как вызвать php функцию в js
Перейти к содержимому

Как вызвать php функцию в js

  • автор:

Как в php сделать вызов функции js?

Чтобы вызвать JavaScript функцию из PHP, можно использовать функцию echo и передать ей строку с вызовом функции.

Пример вызова JavaScript функции из PHP:

 echo ''; ?> 

В данном примере мы вызываем функцию myFunction() из JavaScript с помощью тега . Этот код будет выполнен на стороне клиента, когда браузер загрузит страницу.

Обратите внимание, что для того, чтобы вызвать JavaScript функцию из PHP, необходимо, чтобы эта функция была определена в загруженном на страницу скрипте. Если функция определена в отдельном файле, то этот файл должен быть подключен к странице перед вызовом функции.

Как вызвать php функцию в js

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Помог: 3 раз(а)

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Цитата:

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Как вызвать php функцию в js

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Помог: 3 раз(а)

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Цитата:

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Вызов собственной функции php в js

Помогите, пожалуйста, разобраться с вопросом. Как можно написать функцию в модуле, а потом вызвать ее в js?
Например, есть функция перевода t(..), которая в js используется вызовом Drupal.t(..).

P.S. Знаю, что можно вызывать код php через ajax, но метод мне не подходит.

  • Drupal8
  • Есть вопрос
  • FAQ
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

bumble 23 апреля 2017 в 22:16
pingvin156 wrote:

P.S. Знаю, что можно вызывать код php через ajax, но метод мне не подходит.

Жаль, другого выхода нет — php в js не выполняется.
Можете написать аналог ф-ции в JS-файле, и к ней уже обращаться.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

pingvin156 24 апреля 2017 в 12:55

Проблема в том, что как раз реализацию и параметры функции надо скрыть в целях безопасности. Если писать через ajax, то придется передавать ид пользователя, то явная дырка в безопасности. А так функция должна вносить правки в БД.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

bumble 24 апреля 2017 в 13:17
pingvin156 wrote:

ид пользователя, то явная дырка в безопасности

pingvin156 wrote:

А так функция должна вносить правки в БД.

Как Вы представляете себе соединение с БД сервера из клиента?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

pingvin156 24 апреля 2017 в 13:58
bumble wrote:
pingvin156 написал:

ид пользователя, то явная дырка в безопасности

pingvin156 написал:

А так функция должна вносить правки в БД.

Как Вы представляете себе соединение с БД сервера из клиента?
Если бы в ajax можно было бы вычислить ид юзера, то все было бы хорошо, но он выполняется в иной сессии, то есть вычислить ИД юзера не представляется возможным, поэтому выходом является передача параметров. Всегда можно подставить параметр в js ИД другого юзера, что приведет к правке данных не у текущего. Вот такая лазейка.

Представляю правку бд через функцию в php, которую и хочу вызывать (по аналогии с функцией Drupal.t). Она-то выполняется всегда в сессии пользователя.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

pingvin156 24 апреля 2017 в 14:22

Возможно, я чего-то еще сам не понимаю, т.к. всего 2 месяца в этом варюсь и это мой первый сайт. Как эти хедеры получить в вызываемом php-файле.

Я вот чего смог наварить:

use Drupal \ Core \ DrupalKernel ;
use Drupal \ Core \ Database \ Connection ;
use Symfony \ Component \ HttpFoundation \ Request ;

use Drupal \ Core \ Session \ AccountInterface ;

$autoloader = require_once ‘autoload.php’ ;

$kernel = DrupalKernel :: createFromRequest ( Request :: createFromGlobals (), $autoloader , ‘prod’ );
$kernel -> boot ();

$useruid = \ Drupal :: currentUser ()-> id (); /* тупо всегда = 0, т.к. новая сессия и неавторизированный юзер!*/
if (!empty( $_GET [ ‘uid’ ])) $useruid = $_GET [ ‘uid’ ];
>

/* бла-бла-бла.. формируем массив данных $arr по $useruid ! */

echo json_encode ( $arr );
?>

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Вот решил попробовать найти сессию:

$request = Request :: createFromGlobals ();
$session = $request -> getSession (); ?>

$session всегда NULL

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

bumble 24 апреля 2017 в 14:24
pingvin156 wrote:

Всегда можно подставить параметр в js ИД другого юзера, что приведет к правке данных не у текущего. Вот такая лазейка.

Только если бездумно писать в базу.

Посмотрите аякс-команды, на них все можно реализовать, а о безопасности будет беспокоится движок.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

pingvin156 24 апреля 2017 в 14:43

Попробую разобраться, что такое токен и с чем его едят.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Сложно всё как и запутанно. Есть какой-нибудь пример кода проверки.
Наверняка, эта задача часто встречается

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

multpix 24 апреля 2017 в 14:54

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *