【发布时间】:2022-01-24 08:50:41
【问题描述】:
我有一个 Wordpress 网站,它有大约 100 个页面,其中包含指向非 Wordpress 网站上的联系表单的链接。
让我们打电话给我的 Wordpress 网站https://example.com。让我们调用其中一个页面https://example.com/refinance-your-home-today/。
联系表单具有以下代码,其中大约 75% 的时间包含“https://example.com”作为原始 url(代码中的 client_url)。使用上面的示例,client_url 应该捕获“https://example.com/refinance-your-home-today/”。
当我使用下面的代码时,client_url 的值为 NULL:
<?php
session_start();
function wp_get_original_referer() {
if ( ! empty( $_REQUEST['_wp_original_http_referer'] ) && function_exists( 'wp_validate_redirect' ) ) {
return wp_validate_redirect( wp_unslash( $_REQUEST['_wp_original_http_referer'] ), false );
}
return false;
}
$_SESSION['client_url'] = wp_get_original_referer();
当我使用以下代码时,client_url 只有大约 25% 的时间正确显示。它大约 75% 的时间显示为“https://example.com”:
<?php
session_start();
$_SESSION['client_url'] = $_SERVER['HTTP_REFERER'];
非常感谢任何帮助。
【问题讨论】:
-
function_exists( 'wp_validate_redirect' )不太可能是真的,在您的 Wordpress 代码 外部 的脚本中。而且推荐人根本不可靠,这是一个众所周知的事实 - 用户代理可能由于隐私问题而不会发送它。如果您的联系表单脚本位于同一服务器上,同一域下,您可以尝试“引导 Wordpress”(包括核心功能的加载器);否则,您可能必须在链接到联系表单脚本的位置将 URL 作为 GET 参数传递。 -
表单不在 Wordpress 中,并且在不同的服务器上。它也在不同的域上。我会尝试 GET。感谢您的信息。