在 PHP 中执行此操作,您可以创建一个表单,将表单的 method 属性设置为 post 并将表单的 action 属性设置为指向托管可下载内容的 https://example2.com/608/ 页面为您的用户。然后在您的可下载内容页面上有一个条件检查是否设置了 $_POST 的全局数组,否则在重定向到您的初始页面时会引发错误。
表格如下所示:
注意:托管表单的页面需要是 .php 页面才能在该页面上使用 php
<form method="post" action="https://example2.com/608/">
<?=$error?><!-- PHP for echo $error variable later defined I'll cover this later in explanation -->
<input type="submit" value="Click Here" name="download">
</form>
提交此表单时,它将为输入name、download 发送一个post 全局变量。在https://example2.com/608/ 页面上,它需要是一个 php 页面,您将在 html 的顶部有 php 代码,用于查看全局变量 $_POST 是否具有 download 的键。为此,您可以在条件 if 语句中的 php 中使用 isset()。类似于以下内容:
if(isset($_POST['download'])) --> 如果 POST 全局在全局 POST 数组中设置了一个名为 download 的键。代码将评估条件,如果 $_POST 数组有 download 的键,它将返回 true。
在条件之上,你可以定义一个显示变量并将其设置为 NULL,然后如果条件返回 true,则设置该变量以显示可下载的内容。
类似:
$output = NULL;
//--> now for the conditional that will see if the `$_POST` variable
//--> is set and then define the $output variable to display the downloadable content
//--> or throw a redirect header back to the page you wish users to view prior to downloading
//--> along with an error using the URL $_GET method
if(isset($_POST['download'])){
$output = //--> add your downloadable html content here...
}else{
header("Location: https://example1.com/510-2/?error");
exit;//<-- EXIT THE PHP CODE!
}
//<-- If our evaluation was true we echo out the $output variable in our html
<div>
<?=output?><!--// Short tag for php echo within html content on a php page //-->
</div>
header("Location: https://example1.com/510-2/?error"); 将用户重定向回您的初始页面,然后通过可在目标重定向页面上使用的 url 发送一个 $_GET 全局变量。因此,在这里我们查看是否设置了 $_POST,如果是,我们会显示可下载的内容,否则如果未设置,我们会在允许用户下载内容之前自动将用户重定向到您希望显示的页面。我们本质上是通过我们希望他们获得奖品的链来引导用户:downloadable content,只有通过点击您希望他们点击的按钮才能设置帖子变量。
在 php 重定向 -> header() 中,您会看到在服务器上设置的另一个全局变量 ?error ? 只是在 url 帖子中定义键/值对的 url 的开始... error 只是键,不存在任何值。但是我们可以使用 PHP 重新检查我们的重定向页面,看看它是否已设置,就像我们对 $_POST 变量所做的那样。
现在在https://example1.com/510-2/ 上,我们有一些 PHP 代码检查 $_GET 全局数组中是否设置了“错误”,如果是,我们执行与在可下载内容页面上所做的相同的操作来检查,但我们使用$_GET 方法而不是 $_POST 方法。
if(isset($_GET['error'])){
$error = 'Please review this info for downloadable content...';
}else{
$error = '';
}
现在在早期的 HTML 表单中,您注意到 echo 的 php 短标签 -> <?=$error?> 这是直接在 php 页面 html 中使用的,这与 <? php echo $error; ?> 相同,也用于$output 变量也是如此。因此,如果条件评估为假,它只是什么都不回显,用户也看不到任何东西,如果它评估为真,我们知道用户在没有适当许可的情况下从可下载内容重定向回下载内容,它回显了指令我们希望他们采取以获取可下载的内容。
注意:我意识到这都是 php 代码,而不是您使用 javascript 的原始问题,但是因为您正在刷新页面并将用户引导到其他页面以获取内容,老实说,答案应该是使用像 PHP 或 AJAX 这样的服务器端语言。
这是基本的 PHP 代码,我解释的所有内容都可以在网络上轻松重新搜索,并且在 php 手册中进行了明确定义。在您的本地主机上创建几个虚拟页面,并使用 POST 和 GET 方法来优化您的代码。
https://www.php.net/manual/en/language.variables.superglobals.php
https://www.php.net/manual/en/reserved.variables.get.php
https://www.php.net/manual/en/reserved.variables.post.php
https://www.php.net/manual/en/function.header.php
https://developer.mozilla.org/en-US/docs/Learn/Forms/Sending_and_retrieving_form_data