Пропускайте vars от php до js без ajax

Допустим, у меня есть php-страница … Я хочу, чтобы javascript на этой странице обращался к некоторым переменным информации о пользователе (после входа в систему), например, к идентификатору пользователя, электронной почте и т. Д. Если я использую ajax, тогда потребуется дополнительная половина секунды , потому что страница должна загружаться, а затем ждать, когда ajax пойдет, чтобы получить эти переменные, поэтому я предпочел бы вставлять ее на страницу, но это кажется сомнительным для безопасности для встраивания электронной почты в источник.

Вот мои варианты, вы можете придумать лучший способ?

1 – Вставить данные в php по первому запросу

<html> <script> user_email='<?php echo $user_email; ?>'; </script> 

2 – Загружать данные отдельно от файла js / php, чтобы его не было в исходном источнике страницы

 <html> <script src="userdata.js.php"></script> --- userdata.js.php --- user_email='<?php echo $user_email; ?>'; 

3 – Запросить данные через ajax после загрузки страницы (будет медленнее)

 <html> <script> $(function(){ $.post('getuserdata.php',[],function(result){ userdata=result; }); }); </script> 

Другим вариантом, который вы можете рассмотреть, является использование JSONP для асинхронного вызова функции после загрузки AJAX.

HTML

 <script type="text/javascript"> function handle_response(response) { // do whatever you want with the response // you get a json object here that looks like // { id: 1, username: 'jimmy' } } </script> <script type="text/javascript src="/path/to/ajax/script.php"></script> 

script.php

 <?php $arr = array('id' => 1, 'username' => 'jimmy'); $param = json_encode($arr); header("Content-type: text/javascript"); echo "handle_response({$param})"; exit; 

Итак, теперь, когда этот действительный javascript из script.php завершает загрузку, он немедленно вызывает вашу функцию, которую вы определили на стороне клиента. Это позволяет сохранить информацию из исходного HTML-источника, и вы можете даже поставить этот скрипт за https, не делая этого для остальной части сайта.

Я всегда использую первый шаг

 var myvar = <?php echo $myvar; ?>; 

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

Все три жизнеспособны … зависит от того, от кого вы пытаетесь защитить данные. Пользователь, который вызвал страницу, будет иметь доступ к информации так или иначе … поэтому перейдите к более надежной реализации.

Мне не нравится вставлять информацию на страницу по соображениям безопасности. В какой-то момент времени будет слишком легко хранить что-то, чего не должно быть. У вас есть два приличных варианта, которые возникают с моей головы:

  1. Выполните вызов ajax во время загрузки страницы (body onload = ajax call) (более безопасный)

  2. Храните их в файле cookie для сайта (менее безопасно)

Обычно я использую опцию №1.

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

Получение электронной почты с помощью ajax и встраивание его непосредственно в источник страдают от одной и той же проблемы безопасности: кто-то, нюхающий трафик, может получить электронную почту. Чтобы этого избежать, вам нужно будет либо

  1. Выясните способ не отправлять письмо клиенту в первую очередь.
  2. Только отправьте адрес электронной почты клиенту по https

Я предполагаю, что многие веб-сайты просто используют эту проблему и отправляют электронное письмо клиенту незашифрованным.