Fix redirection

This commit is contained in:
champsupertramp
2016-03-02 21:50:18 +08:00
parent 9ab65a84d0
commit 3967a1a7bd
5 changed files with 59 additions and 7 deletions
+4 -2
View File
@@ -31,10 +31,12 @@ class UM_Access {
if ( strstr( $this->redirect_handler, um_get_core_page('login') ) ){ if ( strstr( $this->redirect_handler, um_get_core_page('login') ) ){
$curr = $ultimatemember->permalinks->get_current_url(); $curr = $ultimatemember->permalinks->get_current_url();
$this->redirect_handler = esc_url( add_query_arg('redirect_to', $curr, $this->redirect_handler) ); $this->redirect_handler = add_query_arg('redirect_to', um_set_redirect_url($curr), $this->redirect_handler);
$this->redirect_handler = esc_url( $this->redirect_handler );
} }
exit( wp_redirect( $this->redirect_handler ) ); wp_redirect( $this->redirect_handler );
} }
} }
+9 -1
View File
@@ -74,7 +74,15 @@ class UM_Account {
global $ultimatemember; global $ultimatemember;
if ( um_is_core_page('account') && !is_user_logged_in() ) { if ( um_is_core_page('account') && !is_user_logged_in() ) {
exit( wp_redirect( add_query_arg('redirect_to', urlencode( um_get_core_page('account') ) , um_get_core_page('login') ) ) );
$redirect_to = add_query_arg(
'redirect_to',
um_set_redirect_url( um_get_core_page('account') ) ,
um_get_core_page('login')
);
exit( wp_redirect( $redirect_to ) );
} }
if ( um_is_core_page('account') ) { if ( um_is_core_page('account') ) {
+1 -1
View File
@@ -136,7 +136,7 @@
// Priority redirect // Priority redirect
if ( isset( $args['redirect_to'] ) ) { if ( isset( $args['redirect_to'] ) ) {
exit( wp_redirect( $args['redirect_to'] ) ); exit( wp_redirect( um_get_redirect_url( $args['redirect_to'] ) ) );
} }
// Role redirect // Role redirect
+2 -1
View File
@@ -10,7 +10,7 @@
if ( isset( $_REQUEST['redirect_to'] ) && !empty( $_REQUEST['redirect_to'] ) ) { if ( isset( $_REQUEST['redirect_to'] ) && !empty( $_REQUEST['redirect_to'] ) ) {
echo '<input type="hidden" name="redirect_to" id="redirect_to" value="'.$_REQUEST['redirect_to'].'" />'; echo '<input type="hidden" name="redirect_to" id="redirect_to" value="'.esc_attr($_REQUEST['redirect_to']).'" />';
} else if ( isset( $args['after_login'] ) && !empty( $args['after_login'] ) ) { } else if ( isset( $args['after_login'] ) && !empty( $args['after_login'] ) ) {
@@ -33,6 +33,7 @@
break; break;
} }
$url = esc_attr( um_set_redirect_url( $url ) );
echo '<input type="hidden" name="redirect_to" id="redirect_to" value="' . $url . '" />'; echo '<input type="hidden" name="redirect_to" id="redirect_to" value="' . $url . '" />';
+42 -1
View File
@@ -54,15 +54,56 @@
*** @Get where user should be headed after logging *** @Get where user should be headed after logging
***/ ***/
function um_dynamic_login_page_redirect( $redirect_to = '' ) { function um_dynamic_login_page_redirect( $redirect_to = '' ) {
global $ultimatemember; global $ultimatemember;
$uri = um_get_core_page( 'login' ); $uri = um_get_core_page( 'login' );
if ( ! $redirect_to ) { if ( ! $redirect_to ) {
$redirect_to = $ultimatemember->permalinks->get_current_url(); $redirect_to = $ultimatemember->permalinks->get_current_url();
} }
$uri = add_query_arg( 'redirect_to', $redirect_to, $uri );
$redirect_key = um_set_redirect_url( $redirect_to );
$uri = add_query_arg( 'redirect_to', $redirect_key, $uri );
return $uri; return $uri;
} }
/**
* Set redirect key
* @param string $url
* @return string $redirect_key
*/
function um_set_redirect_url( $url ){
$redirect_key = wp_generate_password(12,false);
$_SESSION['um_redirect_key'] = array( $redirect_key => $url );
return $redirect_key;
}
/**
* Set redirect key
* @param string $url
* @return string $redirect_key
*/
function um_get_redirect_url( $key ){
if( isset( $_SESSION['um_redirect_key'][ $key ] ) ){
$url = $_SESSION['um_redirect_key'][ $key ];
unset( $_SESSION['um_redirect_key'] );
return $url;
}
return;
}
/*** /***
*** @user clean basename *** @user clean basename
***/ ***/