Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
直接链接访问,但通过mysql/php跟踪?_Php_Mysql_.htaccess - Fatal编程技术网

直接链接访问,但通过mysql/php跟踪?

直接链接访问,但通过mysql/php跟踪?,php,mysql,.htaccess,Php,Mysql,.htaccess,我有一个直接链接,指向我想分发给访问者的文件,例如: http://www.mydomain.com/mynewmix.mp3 当上面的链接正在ping/hit/download时,有没有办法运行以下查询 UPDATE `db` SET `downloaded`=`downloaded`+1 WHERE `url`='http://www.mydomain.com/mynewmix.mp3' 非常感谢在这方面我能得到的任何帮助。提前非常感谢。是的,这是可能的。您可以在apache中使用重写模

我有一个直接链接,指向我想分发给访问者的文件,例如:

http://www.mydomain.com/mynewmix.mp3
当上面的链接正在ping/hit/download时,有没有办法运行以下查询

UPDATE `db` SET `downloaded`=`downloaded`+1 WHERE `url`='http://www.mydomain.com/mynewmix.mp3'

非常感谢在这方面我能得到的任何帮助。提前非常感谢。

是的,这是可能的。您可以在apache中使用重写模块。因此,您可以说,对于所有(mp3)文件,服务器不应该返回mp3文件,而应该运行一个php文件/脚本来执行查询并返回mp3文件

这可能会帮助您:

在.htaccess文件中:

RewriteEngine on
RewriteRule ^\.mp3$ index.php [L]
这将把所有以.mp3结尾的链接发送到index.php(实际上它仍然是相同的链接,但index.php将被执行)

您还有其他选择:

RewriteRule ^.*/(\w)*\.mp3$ index.php?filename=$1 [L] 
这将使用GET veriable文件名和文件名执行index.php 例如,
$\u GET['filename']=“filename”
(当文件名为filename.mp3时)

在index.php中,让用户下载mp3文件(请参阅:):

您可以使用以下代码动态执行此操作:

$fileName = $_GET['filename']."mp3"; //we stripped .mp3 in the apache rewrite (might not be so smart)
$fileLocation = "/your/location/".$filename;
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-length: ' . filesize($fileLocation));
header('Content-Disposition: attachment; filename="'.$fileName.'"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($fileLocation);
exit();
您可以通过以下方式访问请求的链接:

$_SERVER['REQUEST_URI'];
或新的(生成的url):


是的,这是可能的。您可以在apache中使用重写模块。因此,您可以说,对于所有(mp3)文件,服务器不应该返回mp3文件,而应该运行一个php文件/脚本来执行查询并返回mp3文件

这可能会帮助您:

在.htaccess文件中:

RewriteEngine on
RewriteRule ^\.mp3$ index.php [L]
这将把所有以.mp3结尾的链接发送到index.php(实际上它仍然是相同的链接,但index.php将被执行)

您还有其他选择:

RewriteRule ^.*/(\w)*\.mp3$ index.php?filename=$1 [L] 
这将使用GET veriable文件名和文件名执行index.php 例如,
$\u GET['filename']=“filename”
(当文件名为filename.mp3时)

在index.php中,让用户下载mp3文件(请参阅:):

您可以使用以下代码动态执行此操作:

$fileName = $_GET['filename']."mp3"; //we stripped .mp3 in the apache rewrite (might not be so smart)
$fileLocation = "/your/location/".$filename;
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-length: ' . filesize($fileLocation));
header('Content-Disposition: attachment; filename="'.$fileName.'"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($fileLocation);
exit();
您可以通过以下方式访问请求的链接:

$_SERVER['REQUEST_URI'];
或新的(生成的url):


是的,你能做到。单击url需要调用ajax来运行更新查询,如果成功,您将继续下载文件。

是的,您可以这样做。单击url需要调用ajax来运行更新查询,如果成功,您将继续下载文件。

我认为还有另一种方法可以满足您的需要:

  • 创建一个新的php文件“download”,开始下载参数 内容如下(日期和时间是获取mp3文件的关键):

    }

  • 使用不同的url进行下载(无锚定)


  • 我认为还有另一种方法可以满足您的需求:

  • 创建一个新的php文件“download”,开始下载参数 内容如下(日期和时间是获取mp3文件的关键):

    }

  • 使用不同的url进行下载(无锚定)


  • 可能ajax可以帮助您…如果他们直接访问mp3文件,ajax将如何帮助我?可能ajax可以帮助您…如果他们直接访问mp3文件,ajax将如何帮助我?这很接近,但我只能访问自己的.htaccess。。。。如果我能用这种方法得到任何例子,我将不胜感激。请看我的例子,尽管你应该自己了解它是如何工作的,否则使用它可能会很危险;)这很好,但它运行index.php,但不允许访问者继续下载/流式播放mp3….:(您的答案在这里:谢谢Joel…我也在这样做:重写规则^.*/(\w)*\.mp3$index.php?文件名=$1[L]当我回显GET时,它没有给我url栏中的完整链接…这很接近,但我只能访问我自己的.htaccess…我可以使用此方法获得的任何示例都将不胜感激。请看我的示例,尽管您应该自己了解它的工作原理,否则使用它可能会很危险;)这很好,但它运行index.php,但不允许访问者继续下载/流式播放mp3….:(你的答案在这里:谢谢Joel…我也在这样做:RewriteRule ^.*/(\w)*\.mp3$index.php?filename=$1[L],当我回显GET时,它不会给我url栏中的完整链接…如果用户直接从url栏访问mp3,这将不起作用。如果用户直接从url栏访问mp3,这将不起作用。)