PHP生成动态的临时JS文件

去圣西罗-为尤文喝彩 2010-07-19 02:26:38
我想用PHP写2个页面,第一个页面有一个文本框,在里面输入文字后,输出到第二个页面

<form action ="1.php" method ="post">
<input type="text" name="name" />
<input type ="submit" value="ok" />

第二个页面生成动态的JS临时文件(每次生成的JS文件名不同,生成的JS自动加载到"1.php" 里面,脚本<script type="text/javascript" src="http://localhost/slidetest/xxx.js"></script>写在源码的最底部进行加载

<?
$js ='……
';
file_put_contents("xxx.js", $js);
?>

2个问题:
1:<?php echo $_POST["name"]?>的文本框变量怎么传递到 $js ='…… ,PHP写JS的代码里面?是不是PHP变量要转换成JS变量?
2:file_put_contents("xxx.js", $js);如何生成不重复名字的JS文件,并且加载到1.php的页面里,当关闭1.php后自动擦除该JS文件。
...全文
884 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomonday 2010-07-19
  • 打赏
  • 举报
回复
都好厉害啊,呵呵
xuzuning 2010-07-19
  • 打赏
  • 举报
回复
<script src=mkjs.php></script>
由 mkjs.php 产生的 js 脚本将不被缓存,当然也就看不见了


<script src="http://localhost/slidetest/xxx.js"></script>
虽然 xxx.js 在服务器端被删除了,但在用户的浏览器缓冲区还是可以找到的
amani11 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 changjay 的回复:]

我试过,比如输入:gone with the wind
1.php可以打开,只是缺失特效,并没有报错。
我用DW打开生成后的JS文件看过,显示为:
"http://localhost/$_POST['name']+comic.php"
而不是"http://localhost/gone with the wind+comic.php"
[/Quote]

看10楼解答
  • 打赏
  • 举报
回复
我试过,比如输入:gone with the wind
1.php可以打开,只是缺失特效,并没有报错。
我用DW打开生成后的JS文件看过,显示为:
"http://localhost/$_POST['name']+comic.php"
而不是"http://localhost/gone with the wind+comic.php"


LuciferStar 2010-07-19
  • 打赏
  • 举报
回复
应该不是失效,而是出错。
"http://localhost/'.$_POST['name'].'+comic.php"
  • 打赏
  • 举报
回复
呵呵,果然是传说罢了……
我想做一个书名查找,然后加一些JS效果。

$js='(function() {
... ...
"http://localhost/$_POST[\'name\']+comic.php"
... ...
}';
file_put_contents("xxx.js", $js);


是不是加了function后,$_POST['name']就失效了?
LuciferStar 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 changjay 的回复:]
引用 5 楼 luciferstar 的回复:
只不过,不能用POST,而是GET。

传说,GET只能传递100个字节……
[/Quote]
好像不止。
为什么要把需要的数据由用户输入呢?很不安全。
amani11 2010-07-19
  • 打赏
  • 举报
回复
get方式提交数据的大小,http协议并没有限制;而是与浏览器及服务器、操作系统有关

通常,不要超过2k+35个字节。。。你30多k,get肯定不行。。。。。


js如果每一次变化,就是上面说的动态,POST方式传参,直接页面输出是比较好的方案了,省却了写文件,读文件,删文件
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luciferstar 的回复:]
只不过,不能用POST,而是GET。
[/Quote]
传说,GET只能传递100个字节……
LuciferStar 2010-07-19
  • 打赏
  • 举报
回复
<?
$js ="<script>alert('".$_POST["name"]."');</script>";
file_put_contents($_POST["name"].".js", $js);
?>

这个方法,这个js是永远存在的。如果你要生成后删除,则访问者会无法正常访问。
如果你要访问者访问的时候正确执行,又不想让这个js占用磁盘空间,则直接调用是最好的方案,只不过,不能用POST,而是GET。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferstar 的回复:]
如果你的js足够动态(随时更改,不需要静态保存),则你完全可以这样使用:
<script src=myjs.php?id=123&act=456></script>
[/Quote]
高手陆续起床啦~~
我的JS代码很长,大小有30K,所以不想用<script></script>,还是想把它生成到外面再加载进来,要不别人看我的原文件,会不会觉得很BT?
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amani11 的回复:]
2、没有很明白你的意思,变量传递不是直接赋值么,$js=$_POST['name'];
[/Quote]


$js='(function() {
... ...
"http://localhost/$_POST[\'name\']+comic.php"
... ...
}';
file_put_contents("xxx.js", $js);


$_POST['name']输出后还是$_POST['name'],并不是传递过来的变量值……

[Quote=引用 1 楼 amani11 的回复:]
3、关闭1.php自动擦除,是删除相应的js文件么?,如果这样,我倒建议你不要生成文件,直接在1.php页面输出js代码。。。。如果生成文件,关闭1.php,立刻删除js文件,是比较困难的;
[/Quote]

如果我生成的JS就以 $_POST['name'].js 命名,怎样在关闭1.php后自动删除?
或者生成的JS直接下载到客户电脑C盘下的临时文件夹里,从临时文件夹里加载……
谢谢。
LuciferStar 2010-07-19
  • 打赏
  • 举报
回复
如果你的js足够动态(随时更改,不需要静态保存),则你完全可以这样使用:
<script src=myjs.php?id=123&act=456></script>
amani11 2010-07-19
  • 打赏
  • 举报
回复
1、传递的js代码量大的话,用<textarea>可能更方便些

2、没有很明白你的意思,变量传递不是直接赋值么,$js=$_POST['name'];

3、关闭1.php自动擦除,是删除相应的js文件么?,如果这样,我倒建议你不要生成文件,直接在1.php页面输出js代码。。。。如果生成文件,关闭1.php,立刻删除js文件,是比较困难的

4、如果一定要不重复文件名,可以有个制造随机字符串函数,判断下具体目录是否存在字符串.js,没有就是不重复了
  • 打赏
  • 举报
回复
解决了,反义斜杠要画两道杠 \\
感谢楼上N位大侠。
关于临时建立JS文件,关闭页面后删除的问题,另开主题啦。
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 luciferstar 的回复:]
需要完整代码。肯定是双引号和单引号的问题。
[/Quote]
的确是引号问题。现在改成

$js=“(function() {
... ...
\"http://localhost/".$_POST["name"]."+comic.php\";
... ...
}”;
file_put_contents("xxx.js", $js);

可以显示"http://localhost/gone with the wind+comic.php"
但是 其他代码里有一个错误。
比如:源代码是有一个"\n" 用\"替代外面的"的话,输出错误,只有""。里面的\n没有了……
Alfredknox 2010-07-19
  • 打赏
  • 举报
回复
值得关注,帮顶!高手多多帮忙啊
LuciferStar 2010-07-19
  • 打赏
  • 举报
回复
需要完整代码。肯定是双引号和单引号的问题。
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 luciferstar 的回复:]
你的代码漏了很多。
'http://localhost/'.$_POST['name'].'+comic.php';
[/Quote]


$js='(function() {
... ...
"http://localhost/\'.$_POST[\'name\'].\'+comic.php"
... ...
}';
file_put_contents("xxx.js", $js);

改成:

$js=“(function() {
... ...
'http://localhost/'.$_POST['name'].'+comic.php';
... ...
}'”;
file_put_contents("xxx.js", $js);

报错 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\www\gmap\4.php on line 45

45行就是 'http://localhost/'.$_POST['name'].'+comic.php';
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 natici 的回复:]
lz基本功不扎实,请把php代码贴出来,肯定是你的引号使用问题
[/Quote]
呵呵,这也被你看出来啦~~
加载更多回复(3)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧