我编写了一个小的 PHP 代码,它为存储在我的 S3 帐户上的文件生成一个过期 URL。我现在拥有代码的方式我相信它设置了页面加载的到期时间(处理 PHP 时)。
我需要到期时间才能开始提交表单(我使用表单按钮作为下载按钮,操作设置为下载 url)。
因此,当有人点击下载时,会生成链接并设置到期时间。
我想我需要从 action="" 表单调用链接生成代码,但不知道我会怎么做?
我的代码如下:
<?php
// Grab the file url
$file_url = get_post_meta($post->ID, 'file_url', true);
// Grab just the filename with extension
$file = basename($file_url);
// AWS details
$accessKey = "<REMOVED>";
$secretKey = "<REMOVED>";
$bucket = "media.themixtapesite.com";
// Set expiry time
$timestamp = strtotime("+30 seconds");
$strtosign = "GET\n\n\n$timestamp\n/$bucket/$item";
// Generate Signature
$signature = urlencode(base64_encode(hash_hmac("sha1", utf8_encode($strtosign), $secretKey, true)));
// Create new S3 Expiry URL
$download_url = "http://$bucket/$file?AWSAccessKeyId=$accessKey&Expires=$timestamp&Signature=$signature";
?>
<?php if (is_user_logged_in()) { ?>
<div class="download_button_div">
<?php echo '<form method="post" action="'.$download_url.'" class="download_button_div">'; ?>
<!--Download counter-->
<input type="hidden" name="download_counter" value="<?php (int)$download_count = get_post_meta($post->ID, 'download_counter', true);
$download_count++;
update_post_meta($post->ID, 'download_counter', $download_count); ?>">
<button type='submit' class='download_button'>Download</button>
</form>
</div>
<?php } else { ?>
一如既往,任何帮助表示赞赏。