临时重定向阻止获取$_POST数组

时间:2013-02-19 作者:Matanya

我正在从woocommerce插件发送表单。我已经调整了thankyou.php 页面并添加了电子邮件发送功能。但是,$\\u POST数组为空。

使用Chrome开发工具检查时,我发现发布的页面中存在临时重定向:Chrome Dev Tools

相关表格代码:(in/woocommerce/templates/checkout/form-checkout.php)

  <form enctype="multipart/form-data" name="checkout" method="post"  id="checky" class="checky" action="http://pharma-job.shared6.lighthost.co.il/checkout/order-received">
<input type="hidden" name="admin_email" value="<?php echo get_option(\'admin_email\'); ?>" />
    <?php if ( sizeof( $woocommerce_checkout->checkout_fields ) > 0 ) : ?>

        <?php do_action( \'woocommerce_checkout_before_customer_details\'); ?>

        <div class="col2-set" id="customer_details">

            <div class="col-1">

                <?php do_action(\'woocommerce_checkout_billing\'); ?>

            </div>

            <div class="col-2">

                <?php do_action(\'woocommerce_checkout_shipping\'); ?>

            </div>

        </div>
        <label for="cv_file">העלה קו"ח: </label>
  <input type="file" name="cv_file"> 
        <?php do_action( \'woocommerce_checkout_after_customer_details\'); ?>

        <h3 id="order_review_heading"><?php _e(\'Your order\', \'woocommerce\'); ?></h3>

    <?php endif; ?>

    <?php do_action(\'woocommerce_checkout_order_review\'); ?>

</form>
我查看了生成的HTML,发现了似乎是冒烟的东西:

<input type="hidden" name="_wp_http_referer" value="/checkout/" />
但这种重定向背后的机制是什么?如何绕过它?

1 个回复
SO网友:Steve Buzonas

有关3xx状态码行为的简要背景信息302重定向在不同浏览器中的处理方式不同。部分原因是HTTP/1.0和HTTP/1.1中302的差异。HTTP 1.1 302 Found指定除非用户能够确认,否则不能在返回的位置URI处自动重新处理请求。

HTTP/1.0的处理含糊不清,提示为HTTP/1.1创建303和307。303将丢弃一个帖子,其中307将重新处理请求。

数据流在这种情况下导致重定向的原因尚不清楚,但它遵循了将POST请求作为GET请求重新发送的常见行为。我假设所有的表格处理都在其他地方完成,并发送给thankyou。php经过验证和适当转换。基于这一假设,可能有更好的地方来配合和实现电子邮件功能。

结束

相关推荐

login_redirect for Mobile Web

我的网站的移动版本位于mywebsite.com/mobile 还有一个登录表单wp-login.php. 目前,当用户从主页登录时,如果他们不是管理员,则会重定向到他们的Buddypress配置文件如果他们从主页登录,我希望保持此状态,但是,如果他们从mywebsite.com/mobile, 我希望他们被重定向到mywebsite.com/mobile/dash.//REDIRECT USERS TO ACTIVITY PAGE WHEN THEY LOGIN add_filter( \"lo