执行操作时,我可以从另一个php文件触发php文件的执行吗?更具体地说,我有一个用echo生成的锚,它有一个pdf文件的href。除了下载pdf我想在表格中插入一些信息。这是我的代码,但不起作用:
require('./database_connection.php');
$query = "select author,title,link,book_id from book where category='".$_REQUEST['categorie']."'";
$result = mysql_query($query);
$result2 = mysql_query("select user_id from user where username='".$_REQUEST["username"]."'");
$row2 = mysql_fetch_row($result2);
while($row= mysql_fetch_row($result))
{
echo '<h4>'.$row[0].' - '.$row[1].'</h4>';
if(isset($_SESSION["username"]) && !empty($_SESSION["username"]))
{
echo '<input type="hidden" name="id_carte" value="'.$row[3].'">';
echo '<input type="hidden" name="id_user" value="'.$row2[0].'">';
echo ' <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script language="javascript">
function insert_download() {
$.ajax({
type: "GET",
url: "insert_download.php" ,
success : function() {
location.reload();
}
});
}
</script>
<a onclick="insert_download()" href="'.$row[2].'" download> download </a>';
}
这里是insert_download.php:
<?php
require('./database_connection.php');
$query = "insert into download(user_id,book_id,date)values(".
$_REQUEST["id_carte"].",".
$_REQUEST["id_user"].",".
date("Y-m-d h:i:s").")";
mysql_query($query,$con);
mysql_close($con);
?>
任何人都可以帮我吗?谢谢!
答案 0 :(得分:1)
据我所知,您希望显示一个链接,当用户点击该链接时,
如果这是正确的,您可以使用以下代码:
在您的网页上:
<a href="result.php?file=dummy.pdf">download</a>
<强> result.php 强>:
<?php
$file = isset($_GET['file']) ? $_GET['file'] : "";
?>
<!DOCTYPE html>
<html>
<head>
<title>Downloading...</title>
<script type="text/javascript">
function redirect(url) {
//window.location.replace(url);
window.location.href = url;
}
</script>
</head>
<body>
Download is starting...
<script type="text/javascript">
redirect("http://example.com/download.php?file=dummy.pdf");
</script>
</body>
</html>
<强>的download.php 强>:
<?php
$file = isset($_GET['file']) ? $_GET['file'] : "nullfile";
$file_url = "download_dir_or_something/".$file;
// Put some line in a log file...
file_put_contents("logfile.txt", "successful on ".date("Y-m-d H:i:s")."\n", FILE_APPEND);
// ...or anything else to execute, for example, inserting data into a database.
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".basename($file_url)."\"");
readfile($file_url);
?>
答案 1 :(得分:0)
为什么不使用重定向而不是&#34;复杂&#34; AJAX?
<!-- in your first document -->
echo '<input type="hidden" name="id_carte" value="'.$row[3].'">';
echo '<input type="hidden" name="id_user" value="'.$row2[0].'">';
echo '<a href="download_pdf.php?redirect=' . $row[2] .'">download</a>';
和download_pdf.php
<?php
require('./database_connection.php');
...
mysql_close($con);
header("location: " . $_GET['redirect']);
答案 2 :(得分:0)
您缺乏调试的基本技能。如果我是你,我应该:
使用支持的浏览器,例如:Chrome with&#34; Network&#34;检查标签准备
点击链接<a onclick="insert_download()" ...
,查看是否正确执行了ajax请求(通过Chrome中的网络检查标签)。如果没有,请重新检查生成的js,否则download_pdf.php
出现问题,请按照下一步操作
检查download_pdf.php
:在开头打开错误报告(将error_reporting(E_ALL);
和ini_set('display_errors', 1);
放在文件顶部)尝试在任何行之前和/或之后回显某些内容怀疑导致虫子。然后,您可以从网络检查选项卡中看到这些ajax响应...通过这样做,您将缩小导致问题的代码行/范围。
请注意&#34;回声&#34;如果你有一个支持调试器的可靠IDE,可以避免技巧。
希望它可以提供帮助