为什么我的returnurl从正斜杠哈希代码(%2F)获得$(美元符号)?

时间:2016-12-08 19:25:04

标签: php excel wordpress hash url-rewriting

我有一个php函数,可以通过SSO自动登录到wordpress。它运行正常但是当用户在Excel或Word中有链接时,它会将它们重定向到登录名,然后我需要通过returnurl返回它们。

Excel和Word中的链接为returnurl

吐出了这个链接
returnurl%3dhttps$%3A$%2F$%2Fsiteurl%2ecom$%2Fhome$%2Fcatalog$%2Ftransactional-connectivity$%2F

所以这里的问题是$%2F应该只是%2F正斜杠。那么你注意到所有东西都以" $"为前缀。但是正斜杠无法处理它,因为它不会在重定向上计算并将用户反击回主页而不是他们点击的页面。

我编写的处理此问题的PHP代码部分在此函数中 -

function safe_SSO() {
global $wpdb;
$wpprefix = $wpdb->prefix;
$url = 'https://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
session_set_cookie_params(60 * 60 * 24 * 365);
session_start();
define('SAFE_APP_ID', get_option('AppID'));
define('SAFE_KEY', get_option('AppKey'));
$safeurl = 'https://safe.siteurl.com/login/sso/SSOService?app=' . SAFE_APP_ID;
define('HOME', urlencode($url));
define('SAFE_REDIRECT', $safeurl . "&returnurl=" . urlencode($url));

if(is_user_logged_in()) {

$current_user = wp_get_current_user();
}



else if(!is_user_logged_in()) {
// Start authentication and authorization
if (!isset($_SESSION['USER_ID']) && !isset($_POST['digest'])) {
// We've got no session and we've not returned from SAFE, so let's redirect to SAFE
header('Location: ' . SAFE_REDIRECT);
die();
}
if (!isset($_SESSION['USER_ID']) && isset($_POST['digest'])) {
// We've got no session but we've got a response from SAFE - let's check it
$safe_uid = $_POST['uid'];
$safe_name = $_POST['firstname'] . ' ' . $_POST['lastname'];
$safe_time = $_POST['time'];
$safe_email = $_POST['email'];
$safe_digest = $_POST['digest'];
$safe_returnurl = $_POST['returnurl'];

0 个答案:

没有答案