我如何做这样的工作?
<input name="downvid2" type="button" id="downvid2" onclick="
<?php
header('Content-disposition: attachment; filename=file.pdf');
header('Content-type: application/pdf');
readfile('file.pdf');
?>" value="Download Story" />
问题是我会做一个表单并提交,但我需要一些PHP变量的值,我不想在移动页面时丢失它们。
完整的代码是:
<title>Legendmaker - Your Legendmaker Adventure Starring You:</title>
<?php
if( $_POST )
{
$username="***";
$password="*****";
$con = mysqli_connect("storycodes.db.10339998.hostedresource.com",$username,$password);
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
mysqli_select_db($con, "storycodes");
$code = $_POST['codeInput'];
$code = mysqli_escape_string($con, htmlspecialchars($code)); //May not acually need htmlspecialchars
$query = "SELECT story,video FROM `storycodes` WHERE `code` = '$code'";
$result = mysqli_query($con, $query);
if (mysqli_num_rows($result))
{
$row = mysqli_fetch_assoc($result);
mysqli_free_result($result);
extract($row);
echo $story . $video;
}
else
{
echo "No Data Found. Please check your serial code to ensure that you have not incorrectly entered it. If the code is correct please email the website administrator for further assistance";
}
mysqli_close($con);
}
?>
<div align="center">
<p><span class="linkText"><a href="/index.html">Home</a> <a href="/contact-us.php">Contact Us</a> <a href="/payments.html">Products</a><a href="/products.html"></a></span> </p>
<p> </p>
<h2 class="headingText"><img alt="legendmaker - makes legends: banner" width="728" height="90" /></h2>
<h2 class="headingText"> </h2>
<h2 class="headingText">Your story</h2>
</div>
<p> </p>
<label>
<input type="button" name="downvid" id="downvid" value="Download Video" />
</label>
<input name="downvid2" type="button" id="downvid2" onclick="
<?php
header('Content-disposition: attachment; filename=file.pdf');
header('Content-type: application/pdf');
readfile('file.pdf');
?>" value="Download Story" />
我认为我必须要处理涉及文件PHP的所有内容,因为我想让文件不是Web可访问的,这样只有那些在前一个表单中输入序列代码的人才能访问它。
答案 0 :(得分:3)
不,它无法工作。 PHP是一种服务器端语言,HTML不是。如果您不想提交表单,那么您可以将AJAX用于此目的,但不像您要求的那样。您可以提交表单以将数据发送到PHP或使用JavaScript,尤其是AJAX。
答案 1 :(得分:1)
onclick事件是执行客户端。由于PHP是服务器端,因此伪代码无法正常工作。
更好的解决方案是通过链接或提交表单来重定向用户。
重定向应指向您的PHP脚本,该脚本将下载内容发送给您的用户。这将使浏览器保持在当前页面上,效果将类似于您的伪样本。