Лучший способ передачи и хранения переменных из PHP в JS / jQuery - PullRequest
1 голос
/ 02 февраля 2011

У меня есть несколько важных переменных, которые мне нужно перенести из PHP в JS при одной и той же загрузке страницы.В настоящее время я храню эти переменные в атрибутах элементов DOM и использую jQuery для их извлечения.

Это прекрасно работает, хотя, поскольку некоторая информация довольно важна, я бы предпочел, чтобы она не была публично видна в DOM и «скрыта от посторонних глаз».

Поэтому мой вопрос:Как перенести переменные в JS или DOM из PHP и скрыть их от глаз?

Приветствую вас, ребята, надеюсь, вы поможете!

Ответы [ 5 ]

2 голосов
/ 02 февраля 2011

Все, что происходит в JS, потенциально является видимым для конечного пользователя.Если это защищенные данные, которые вы пытаетесь скрыть, возможно, вам нужно пересмотреть свой подход.

1 голос
/ 02 февраля 2011

Не очень хорошо предоставлять важную информацию клиентской стороне (HTML / JS).

Но чтобы ответить на ваш вопрос - вы можете использовать AJAX методы jQuery для отправки запроса наPHP и из PHP, вы можете вернуть json_encode () 'ed данные обратно в jQuery.И если вы хотите, чтобы они были скрыты от глаз, или, скажем, «достаточно зашифрованы», вы можете запустить это через канал SSL.Другой вариант - сделать шифрование самостоятельно или использовать некоторые публичные библиотеки для шифрования с использованием открытого и закрытого ключей.

Например, с постом jQuery:

$.post("script.php",
{requestKey : "requestValue"}, // $_POST["requestKey"] == "requestValue"
function(response) {
 // if you receive JSON encoded data
 // you should use JSON decoder for javasript
 // or var obj = eval('(' + response + ')');
},
"json");

В PHP этобудет:

$data = $_POST["requestKey"];
// do something
echo json_encode($result);
1 голос
/ 02 февраля 2011

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

Если вы просто хотите сделать данные доступными для страницы, скрывая грязные детали реализации, есть много вариантов:

  • используйте <input type="hidden" /> поле
  • храните ваши значения непосредственно в JavaScript, выводя что-то вроде var myValue = <?= $serverside_value ?> или используя json_encode
  • запрос значений через AJAX
1 голос
/ 02 февраля 2011

То есть вы хотите, чтобы данные отправлялись пользователю, а не отправлялись пользователю одновременно?

1 голос
/ 02 февраля 2011

использовать ajax-запрос при загрузке страницы. Вот оболочка для jQuery:

$(function()
{
    $.ajax("http://yoursite.com/phpscript.php",
        {
            method: "post",
            dataType: "json",
            success: function(data)
                {
                    // do what you will with the data here
                }
        });
});

вся информация должна быть загружена на компьютер человека в определенный момент. Вы можете держать его «скрытым» в javascript, но конечный пользователь может легко использовать firebug или что-то подобное для просмотра этих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...