У меня есть идея для «использования» или «ссылки» на переменные PHP в Javascript. Это будет относиться к веб-странице, которая будет отправлять электронную почту. Упрощенный пример показан ниже. Примечание: это вызывается через AJAX, поэтому я не пытаюсь вызвать переменную PHP из сценария, который уже был выполнен.
Javascript будет содержать строку «$ midSection» в теле письма для отправки, а затем отправлять все тело в сценарий PHP. Скрипт PHP будет хранить эту строку, создавать и присваивать значение $ fmidSection и отправлять строку тела в электронном письме. Если это работает, получающееся электронное письмо будет включать основное тело, отправленное со стороны клиента, со вставленным «midSection» в середине электронного письма (возможно, в зависимости от имени человека и информации, хранящейся в базе данных).
Мне кажется, что это должно работать, учитывая мое понимание PHP. Однако мне также кажется, что это откроет окно для атаки, похожее на SQL-инъекцию (где «возможно, мы можем обмануть скрипт, например, для присвоения другого значения $ midSection). Кто-нибудь воспользовался этим подходом, и если да, можете ли вы проверить, сработает ли это, и открыть ли дыры в безопасности?
Спасибо.
РЕДАКТИРОВАТЬ: приложение для списка рассылки, а не контактная форма. У меня есть панель администратора, которая позволяет мне отправлять электронные письма в список рассылки, и я думаю, что это хороший способ включить переменные из PHP аналогично тому, как я делал бы в сценарии PHP, поместив $ var в сама строка Я понимаю, как работает передача переменных из JS в PHP, я хочу, чтобы JS по существу ссылался на переменную PHP. Я не использую это в целях проверки, я использую это для простого способа вставки информации, вместо того, чтобы выполнять разбор строк вручную. Переменная будет создана и сохранена на стороне сервера в сценарии, который я создал.
Кроме того, JAVASCRIPT будет выполнять вызов AJAX для сценария PHP. Поэтому Javascript будет выполняться первым. По сути, я отправляю шаблон электронной почты в PHP, где PHP будет циклически проходить по списку электронной почты и динамически добавлять информацию, такую как имя, фамилия и т. Д. Вместо того, чтобы выполнять обработку строк, я думаю отправить «Hello». , $ firstName $ lastName ….. «по сути, в надежде, что PHP-скрипт вставит переменную информацию.
Из комментариев выше я вижу, что вы пытаетесь сделать, но это не сработает.
Рассмотрим следующий код:
$(document).ready(function() {
$.ajax({
url: 'ajax.php',
data: {'name' : 'andy'},
method: "POST",
}).done(function (data) {
console.log(data);
});
});
Это ajax.php
:
<?php
echo $_POST['name'];
?>
Все, что вы делаете в javascript, это делает POST-запрос к ajax.php
, Он может дать вам вывод «andy» в вашей консоли, потому что вы передаете эту строку данных, а не ссылку на что-либо. Пока все просто.
Теперь представьте, если вы измените data:
в jquery к следующему:
data: {'name' : '$var'}
В вашей консоли вы получите строку «$ var».
Даже если у вас было это в ajax.php
:
<?php
$var = 'foo';
echo $_POST['name'];
?>
Вы никогда не получите вывод «foo».
Это потому, что PHP и Javascript совершенно разные. Так что если вы пройдете $var
это просто будет восприниматься как строка. Нет никакого способа попросить JavaScript иметь в виду переменную PHP или какую-либо ссылку. Вы должны передать сами данные.
В случае вашего приложения вы обычно передаете в запрос ajax что-то, на что может ссылаться PHP (например, идентификатор первичного ключа для конкретной записи). Затем PHP сгенерирует весь необходимый контент и отправит его обратно в браузер. Если вам нужно сделать что-то с шаблоном, str_replace
твой друг.
Я хочу, чтобы JS ссылался на переменную PHP
Невозможно.
Это разные программы, работающие на разных компьютерах. К тому времени, когда JS начнет работать, программа PHP будет завершена, и ее переменные больше не будут существовать.
Самое близкое, что вы могли бы получить, — это где-то хранить данные (например, базу данных) с идентификатором. Затем отправьте этот идентификатор в JS. Затем, если вы хотите получить данные в JS, используйте Ajax для запроса.