Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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
Javascript 当用户单击链接时插入MySQL数据库_Javascript_Php_Mysql - Fatal编程技术网

Javascript 当用户单击链接时插入MySQL数据库

Javascript 当用户单击链接时插入MySQL数据库,javascript,php,mysql,Javascript,Php,Mysql,我正在创建一个网站,让用户登录并选择他们想要下载的pdf文档。当他们打开文档进行查看并可能进行下载时,我希望同时将数据记录到数据库中 将数据发送到数据库的代码有效(未定义索引:learningMaterial除外)。但当我想打开pdf文档,同时记录用户和其他数据时,所发生的一切就是打开文档 任何建议都将不胜感激,即使是对于我在这里试图实现的更好的方法。仍然缺乏PHP方面的经验 请参阅下面的代码 HTML JS-In头 <script type="text/javascript">

我正在创建一个网站,让用户登录并选择他们想要下载的pdf文档。当他们打开文档进行查看并可能进行下载时,我希望同时将数据记录到数据库中

将数据发送到数据库的代码有效(未定义索引:learningMaterial除外)。但当我想打开pdf文档,同时记录用户和其他数据时,所发生的一切就是打开文档

任何建议都将不胜感激,即使是对于我在这里试图实现的更好的方法。仍然缺乏PHP方面的经验

请参阅下面的代码

HTML


JS-In头

<script type="text/javascript">

function submitform(){
document.myform.submit(); }


var form = document.getElementById("myform");

document.getElementById("mylink").addEventListener("click", function () {
      submitform();
});

</script>

函数submitform(){
document.myform.submit();}
var form=document.getElementById(“myform”);
document.getElementById(“mylink”).addEventListener(“单击”,函数)(){
submitform();
});
PHP


按照您的方式,单击链接将覆盖正在提交的表单。这导致文件打开,表单永远无法通过

相反,您可以尝试在新窗口中打开文件,将target=“\u blank”添加到标记,或者将文件URL发送到PHP,执行数据库代码,然后添加到末尾:

header("Location: http://yourdomain.com/yourfile.pdf");

您的文件只是web服务器返回的普通文件:

<a href='../documents/test.pdf' ...

执行此操作时要非常小心。不要只允许用户请求任何文件,而盲目地返回他们请求的任何文件。用户可以请求类似“../../../../../../../../../../../../../../../../etc/passwd”的内容,如果您的代码只是构建了一个路径并返回了该文件,那么您只是给了用户一个敏感文件。最好的做法是保留一个有限的已知已识别文件列表(可能在数据库表中),并允许用户通过标识符而不是文件路径本身进行请求。这样,实际路径在您控制的数据中只有已知的服务器端

然而,这里的要点是,通过使用这样的页面,您可以在用户和文件之间插入一些PHP代码。为了获取文件,用户需要向PHP页面发出请求。在该页面上,您可以记录用户请求文件的行为。(以及执行授权检查以验证是否允许用户查看文件等)


永远不要假设客户端代码会做您期望它做的事情。如果您想确保在任何接近安全或审计目的的情况下发生某些事情,则需要在服务器端代码中发生。

您是否希望他们能够最多下载文件次数?或者您只是记录活动?您可以在PHP中处理表单数据后尝试重定向:我只是希望在每次有人打开文件时都记录。
header("Location: http://yourdomain.com/yourfile.pdf");
<a href='../documents/test.pdf' ...