Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_validate_redirect [ WordPress Function ]

wp_validate_redirect ( $location, $default = '' )
Parameters:
  • (string) $location The redirect to validate
  • (string) $default The value to return if $location is not allowed
Uses:
Returns:
  • (string) redirect-sanitized URL
Defined at:



Validates a URL for use in a redirect.

Checks whether the $location is using an allowed host, if it has an absolute path. A plugin can therefore set or remove allowed host(s) to or from the list.

If the host is not allowed, then the redirect is to $default supplied

Source


<?php
function wp_validate_redirect($location$default '') {
    
// browsers will assume 'http' is your protocol, and will obey a redirect to a URL starting with '//'
    
if ( substr($location02) == '//' )
        
$location 'http:' $location;

    
// In php 5 parse_url may fail if the URL query part contains http://, bug #38143
    
$test = ( $cut strpos($location'?') ) ? substr$location0$cut ) : $location;

    
$lp  parse_url($test);

    
// Give up if malformed URL
    
if ( false === $lp )
        return 
$default;

    
// Allow only http and https schemes. No data:, etc.
    
if ( isset($lp['scheme']) && !('http' == $lp['scheme'] || 'https' == $lp['scheme']) )
        return 
$default;

    
// Reject if scheme is set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
    
if ( isset($lp['scheme'])  && !isset($lp['host']) )
        return 
$default;

    
$wpp parse_url(home_url());

    
$allowed_hosts = (array) apply_filters('allowed_redirect_hosts', array($wpp['host']), isset($lp['host']) ? $lp['host'] : '');

    if ( isset(
$lp['host']) && ( !in_array($lp['host'], $allowed_hosts) && $lp['host'] != strtolower($wpp['host'])) )
        
$location $default;

    return 
$location;
}
?>

Examples [ wp-snippets.com ]

Top Google zoekresultaten

Meer ...

Gebruikersdiscussies [ wordpress.org ]

0 User Note(s)

Nog geen één. Wees de eerste!

Nieuw toevoegen ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics