如何将包含JS脚本的PHP变量传入move_uploaded_file函数?
问题解答
这种操作完全不可行,原因如下:
PHP是服务器端执行的语言,JS是客户端浏览器执行的语言,两者执行顺序是:PHP先跑完所有代码,生成HTML/JS内容发送到浏览器后,浏览器才会执行JS。所以你的
$ext变量在PHP中只是一个普通字符串:<script>document.writeln(fp);</script>,根本不会执行JS去获取fp的值。最终拼接出来的目标路径会变成类似uploads/文件名.<script>document.writeln(fp);</script>的格式,这不仅是非法的文件名,move_uploaded_file函数也会因为路径无效而执行失败。如果你想获取客户端JS变量
fp的值并传给PHP,正确的做法是通过表单提交或AJAX把fp的值发送到服务器:
比如在前端表单里加一个隐藏字段:<input type="hidden" name="fp" id="fp-input"> <script> // 假设fp是已定义的变量 document.getElementById('fp-input').value = fp; </script>然后在PHP中接收这个值:
$ext = $_POST['fp'];额外提醒:直接使用用户提交的
$nam和$ext拼接文件名存在安全风险,可能被利用进行路径遍历或恶意文件上传。建议对这些变量做过滤处理,比如:// 过滤文件名,只保留合法字符 $nam = basename($_POST['subject']); // 限制允许的扩展名 $allowed_exts = ['jpg', 'png', 'txt']; if (!in_array($ext, $allowed_exts)) { die('不允许的文件扩展名'); } $x = 'uploads/' . $nam . "." . $ext;
内容的提问来源于stack exchange,提问作者httpanand
相关产品推荐
相关产品推荐

