Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将javascript文件置于用户身份验证之后的最佳实践?_Php_Javascript_Security_Authentication - Fatal编程技术网

Php 将javascript文件置于用户身份验证之后的最佳实践?

Php 将javascript文件置于用户身份验证之后的最佳实践?,php,javascript,security,authentication,Php,Javascript,Security,Authentication,我有一个web应用程序,其中大部分功能都在一个javascript文件中,我将介绍该应用程序的专业版本,在该版本中,注册用户可以访问更多功能 同样,额外的功能只是javascript文件中的额外功能 我计划做的是: -如果用户已登录,请链接pro_script.js, -或者,如果用户未登录,则链接到normal_script.js, 在页面的页眉处,通过使用php进行用户身份验证 我想知道这是否是处理这种情况的最好方法 我担心pro_script.js可以在javascripts文件夹下访问,

我有一个web应用程序,其中大部分功能都在一个javascript文件中,我将介绍该应用程序的专业版本,在该版本中,注册用户可以访问更多功能

同样,额外的功能只是javascript文件中的额外功能

我计划做的是:
-如果用户已登录,请链接pro_script.js,
-或者,如果用户未登录,则链接到normal_script.js,
在页面的页眉处,通过使用php进行用户身份验证

我想知道这是否是处理这种情况的最好方法


我担心pro_script.js可以在javascripts文件夹下访问,并且可以编写一个脚本或插件来加载pro_script.js而不是普通的_script.js。

您可以让HTML调用
my_script.php
而不是my_script.js。此PHP文件将根据用户是否登录的状态简单地输出您的JS。

您可以将pro_script.JS隐藏在PHP脚本后面-它将检查用户的帐户,如果用户是“premium”,则输出pro_script.JS的内容,否则-空字符串。别忘了设置正确的标题(内容类型和缓存)

这确实是@Adnan的想法,但我的回复对于评论来说太复杂了

您的
my_script.php
应该如下所示:

<?php 
session_start();
header("Content-type: application/x-javascript";);

if (!empty($_SESSION['PRO_USER'])) {
    echo file_get_contents("js/pro_script.js");
} else {
    echo file_get_contents("js/normal_script.js");
}

exit;
?>


如何处理经过身份验证的用户?会话、cookie、querystring?好主意,我做了一个快速的研究,发现用php输出JS需要我逐行回显脚本,转义引号并为每一行添加\n。如果是这样的话,我的javascript文件很长一段时间都无法做到这一点,而且如果我做到了,那么将来在javascript代码上工作将非常困难。@fahrio:不一定。PHP可以嵌入到任何基于文本的文件中。PHP解析器将只在
块上启动,因此您可以拥有一个纯.js文件,顶部只有少量PHP用于身份验证。不需要逐行回显,只需在完成代码后退出php模式(
?>
)。