Download 如何限制人们访问下载页面,除非从联系人表单7(Wordpress插件)提交?

Download 如何限制人们访问下载页面,除非从联系人表单7(Wordpress插件)提交?,download,wordpress,contact-form,contact-form-7,Download,Wordpress,Contact Form,Contact Form 7,我正在Wordpress网站上工作。我们希望在所有访客正式填写联系表时提供下载。我们希望限制对下载链接的任何其他访问,除非它来自联系人表单 现在,我可以在联系人表单7界面的高级选项中使用on_sent_ok:“location=”;,将用户重定向到提交时的下载页面 但是,即使我没有提交表单,我也可以访问同一页面。有没有办法阻止人们访问此页面,除非他们使用表单?为此,我想在Wordpress框架内使用contact form 7插件。我能想到的第一个解决方案是在on_sent_ok的操作中设置co

我正在Wordpress网站上工作。我们希望在所有访客正式填写联系表时提供下载。我们希望限制对下载链接的任何其他访问,除非它来自联系人表单

现在,我可以在联系人表单7界面的高级选项中使用on_sent_ok:“location=”;,将用户重定向到提交时的下载页面


但是,即使我没有提交表单,我也可以访问同一页面。有没有办法阻止人们访问此页面,除非他们使用表单?为此,我想在Wordpress框架内使用contact form 7插件。

我能想到的第一个解决方案是在on_sent_ok的操作中设置cookie。您的下载页面将有自己的模板页面,它将检查cookie是否已设置(在发送
get_header
或任何其他输出之前)。如果未设置cookie,则可能会显示一条消息,指示在未完成表单的情况下无法下载,或者使用表单重定向到页面。如果设置了cookie,则可以进行下载。理想情况下,下载文件将位于web根目录之外,您可以将其与一起发送。

绝对可能。我个人讨厌人们为了下载免费的东西而让我分享我的联系信息,所以我强烈建议你将其设置为可选

但是,既然你真的想这么做,我只需要在URL中设置一些?submit=success后缀,如果有,显示下载链接

您可以将其添加到
functions.php
文件中以使其正常工作(编辑:进行了调整,以便它们的快捷码可以重新用于其他下载。):

在联系人表单7设置中,按照以下说明设置相应的重定向链接(同一页面,但后缀为?submit=success):

在WP内容编辑器中,使用
[free\u download contact\u form='contact-form-7 id=“12345”title=“which”'download\u link='此处的一些消息。]
短代码嵌入内容

现在使用这种方法,使用?submit=success链接的人仍然可以访问该内容,因此它并没有100%得到真正的保护,但它被遮住了,因此普通访问者无法访问它

// Get current page URL and clean it up
$url_current  = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] :  'https://'.$_SERVER["SERVER_NAME"];
$url_current .= ( $_SERVER["SERVER_PORT"] !== 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
$url_current .= $_SERVER["REQUEST_URI"];
$url_clean = array_shift( explode('?', $url_current) );
$url_success = $url_clean . '?submit=success';

function free_download( $atts ) {

    // Get variables
    extract(shortcode_atts(array(  
        'contact_form' => '',
        'download_link' => ''
    ), $atts));

    // Modify variables
    $contact_form = do_shortcode('[' . $contact_form . ']');

    if ($url_current == $url_success) {
        return $download_link;
    }
    else {
        return $contact_form;
    }
}
add_shortcode('free_download', 'free_download');