我可以这样做吗?
<script src="/js/custom-user.php" type="text/javascript"></script>
背后的原因是当用户未登录时我想要.php文件die(),以便其他访问者(未经过身份验证)无法看到javascript的样子。这样做是否可行/安全?
答案 0 :(得分:8)
是的,但我确实有两条建议。首先,在您的情况下,最好只在用户登录时输出<script>
。严重的是,您不希望输出您的东西真正知道或关心用户是否是登录。
如果你在PHP中输出js,那么你应该包含适当的标题:
header("Content-type: text/javascript");
// either readFile or custom stuff here.
echo "alert('i canz have data!')";
// or, if you're less silly
readFile('/path/to/super-secret.js');
实际上,我曾经有过PHP的CSS输出(哦,你也可以这样做),它基于get变量完全改变了。我真的可以:
rel="stylesheet" type="text/css" href="css.php?v=#FF0000">
它将使用#FF0000
作为基色来完全重新定义网站中的配色方案。我甚至把它挂在了imagemagick并重新着色了网站徽标。它看起来很可怕,因为我不是设计师,但它非常整洁。
答案 1 :(得分:3)
当然,只要引用的php文件在下载时发送相应的content-type
标题。
答案 2 :(得分:2)
是的,你可以这样做,而且是安全的。
在custom-user.php中,您必须设置正确的Content-Type标头:
header('Content-Type: text/javascript');
然后输出javascript:
readfile('script.js');
答案 3 :(得分:1)
是的,但是......你最好这样做:
<?php
if ($loggedIn) { echo '<script src="/js/custom-user.js" type="text/javascript"></script>'; }
?>
这会阻止加载空文件。所有函数都应放在外部文件中,如果你想要一些特定的javascript更改,请在HEAD SCRIPT中创建代码
答案 4 :(得分:0)
是的,那会有效。
这就是JavaScript minifiers能够动态地为缩小的脚本提供服务的方式。 (例如http://code.google.com/p/minify/)
答案 5 :(得分:0)
你可以,但它会减慢你的页面,因为每次有人访问你的页面modphp将不得不运行你的php / javascript脚本。