Skip to content

Instantly share code, notes, and snippets.

@lynt-smitka
Created September 26, 2019 17:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lynt-smitka/838405fc6797c1c7e20a6f22883cf38b to your computer and use it in GitHub Desktop.
Save lynt-smitka/838405fc6797c1c7e20a6f22883cf38b to your computer and use it in GitHub Desktop.
<?php
function get_real_client_ip()
{
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if (isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if (isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if (isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if (isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'Unknown';
return $ipaddress;
}
add_action('admin_init', 'lynt_blokace_register_settings');
add_action('admin_menu', 'lynt_blokace_register_settings_page');
add_action('init', 'lynt_blokace_init');
function lynt_blokace_init()
{
$ips = preg_split("/(\r\n|\n|\r)/", get_option('lynt_blokace_ips'), -1, PREG_SPLIT_NO_EMPTY);
if (sizeof($ips) && !in_array( get_real_client_ip(), $ips)) wp_die('Smolík');
}
function lynt_blokace_register_settings_page()
{
add_options_page('Nastavení Blokace', 'Blokace', 'manage_options', 'lynt-blokace', 'lynt_blokace_render_settings_page');
}
function lynt_blokace_register_settings()
{
add_option('lynt_blokace_ips', '');
register_setting('lynt_blokace_group', 'lynt_blokace_ips');
}
function lynt_blokace_render_settings_page()
{
?>
<div class="wrap">
<h1>Blokace</h1>
<form method="post" action="options.php">
<?php settings_fields('lynt_blokace_group');
?>
<table class="form-table">
<tr>
<th scope="row"><label for="lynt_blokace_ips">Povolené IP</label></th>
<td><textarea id="lynt_blokace_ips" name="lynt_blokace_ips" placeholder="IP na každý řádek" rows="20" cols="20"><?php echo sanitize_textarea_field(get_option('lynt_blokace_ips')); ?></textarea>
</tr>
</table>
<small>Vaše IP: <?php echo get_real_client_ip(); ?></small>
<?php submit_button();
?>
</form>
</div>
<?php
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment