From 0ec7ae44caac007a2ff18019be778d9dc39bd3f6 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 14 Nov 2011 16:59:45 +0000 Subject: [PATCH] Fix edit.php row action redirects when referrers are not sent. Return false from wp_get_referer() when no referrer found. Props mitchoyoshitaka. fixes #17628 git-svn-id: http://svn.automattic.com/wordpress/trunk@19272 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/edit.php | 2 ++ wp-admin/post.php | 8 +++++--- wp-includes/functions.php | 7 ++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/wp-admin/edit.php b/wp-admin/edit.php index 2e1daccf4..d6dbed090 100644 --- a/wp-admin/edit.php +++ b/wp-admin/edit.php @@ -51,6 +51,8 @@ if ( $doaction ) { check_admin_referer('bulk-posts'); $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() ); + if ( ! $sendback ) + $sendback = admin_url( $parent_file ); $sendback = add_query_arg( 'paged', $pagenum, $sendback ); if ( strpos($sendback, 'post.php') !== false ) $sendback = admin_url($post_new_file); diff --git a/wp-admin/post.php b/wp-admin/post.php index 4100e237c..c3bca7020 100644 --- a/wp-admin/post.php +++ b/wp-admin/post.php @@ -82,9 +82,11 @@ elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] ) $action = 'preview'; $sendback = wp_get_referer(); -if ( strpos($sendback, 'post.php') !== false || strpos($sendback, 'post-new.php') !== false ) { - $sendback = admin_url('edit.php'); - $sendback .= ( !empty( $post_type ) ) ? '?post_type=' . $post_type : ''; +if ( ! $sendback || + strpos( $sendback, 'post.php' ) !== false || + strpos( $sendback, 'post-new.php' ) !== false ) { + $sendback = admin_url( 'edit.php' ); + $sendback .= ( ! empty( $post_type ) ) ? '?post_type=' . $post_type : ''; } else { $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), $sendback ); } diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 0e85ea48a..2a28e7d9f 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -2037,7 +2037,8 @@ function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) { } /** - * Retrieve referer from '_wp_http_referer', HTTP referer, or current page respectively. + * Retrieve referer from '_wp_http_referer' or HTTP referer. If it's the same + * as the current request URL, will return false. * * @package WordPress * @subpackage Security @@ -2046,13 +2047,13 @@ function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) { * @return string|bool False on failure. Referer URL on success. */ function wp_get_referer() { - $ref = ''; + $ref = false; if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) $ref = $_REQUEST['_wp_http_referer']; else if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) $ref = $_SERVER['HTTP_REFERER']; - if ( $ref !== $_SERVER['REQUEST_URI'] ) + if ( $ref && $ref !== $_SERVER['REQUEST_URI'] ) return $ref; return false; }