내 S3 계정에 저장된 파일에 대한 만료 URL을 생성하는 약간의 PHP 코드를 만들었습니다. 나는 지금 당장 PHP가 처리 될 때 페이지로드에 만료 시간을 설정한다고 생각합니다.양식 제출시 만료 URL 생성
양식 제출시 시작하려면 만료 시간이 필요합니다 (다운로드 버튼으로 양식 버튼을 사용하고 다운로드 URL로 설정 한 작업).
누군가가 다운로드를 클릭하면 링크가 생성되고 만료 시간이 설정됩니다.
나는 액션 생성 = "에서 링크 생성 코드를 호출 할 필요가있을 것이라고 생각하지만 어떻게 할 것인가?
내 코드는 다음과 같습니다 :
<?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 { ?>
은 언제나, 어떤 도움이 감사합니다.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@? 나는 폼 페이지에 JS 코드를 추가했고 그 페이지와 같은 폴더에 ajax_sig.php 파일을 만들었다. 나는 그대로 PHP의 나머지 부분을 남겨 두는가? JS가 각 양식 제출을 가로 채고 새 서명을 생성한다고 가정합니다. 따라서 페이지로드시로드되는 서명은 양식 제출을 클릭 할 때마다 재생성됩니까? –
숨겨진 입력을 양식에 추가 했습니까? 예, 그대로 PHP를 그대로 두십시오. JS는 각 양식 제출을 인터셉트하고 서명이 재생성됩니다. 작동하지 않습니까? 오류 메시지가 있습니까? 이미 파일 다운로드 페이지가 만료 시간이있는 서명의 유효성을 검사하도록 설정되어 있다고 가정합니다. – drolex
JS에서 실수를 저질렀다고 생각합니다. 나는 고칠 것이다. – drolex