Php 保护每个用户的开发中网站/自定义URL和存储IP
我想保护正在开发的页面。问题是人们正在分享这种联系。我想手动为用户提供一个自定义链接,存储他们使用的IP,然后防止链接在不同的IP上重复使用。我正在使用wordpress,这是我想要保护的整个网站。还有,有没有办法追踪谁共享了这个URL 例如:Php 保护每个用户的开发中网站/自定义URL和存储IP,php,wordpress,.htaccess,hyperlink,access-control,Php,Wordpress,.htaccess,Hyperlink,Access Control,我想保护正在开发的页面。问题是人们正在分享这种联系。我想手动为用户提供一个自定义链接,存储他们使用的IP,然后防止链接在不同的IP上重复使用。我正在使用wordpress,这是我想要保护的整个网站。还有,有没有办法追踪谁共享了这个URL 例如: 我会告诉一个朋友,只要用户在第一次使用的IP上,链接就可以工作。如果该用户与其他人或其他IP共享该链接,并试图使用URL访问该网站,我会以某种方式将其记录下来。我会给您一些基本建议,因为这相对比较复杂,我没有时间编写所有代码:) 首先,您需要添加一个普通
我会告诉一个朋友,只要用户在第一次使用的IP上,链接就可以工作。如果该用户与其他人或其他IP共享该链接,并试图使用URL访问该网站,我会以某种方式将其记录下来。我会给您一些基本建议,因为这相对比较复杂,我没有时间编写所有代码:) 首先,您需要添加一个普通的管理页面-在这个页面上,您首先希望有一个带有文本字段和提交字段的
。文本字段将用于输入要共享的页面URL
您还将在数据库中存储一个选项(稍后我们将创建该选项)。它应该是一个数组,稍后您将向其中添加URL的
提交URL后,您将为此URL创建一个nonce-它必须是唯一的(例如,您可以使用)。然后将URL存储在如下数组中:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$urls = get_option( 'my_custom_links', array() );
$id = uniqid();
$urls[ $id ] = array(
'url' => $_POST['my_url'],
'ip' => '',
);
// Update the links.
update_option( 'my_custom_links', $urls );
}
$urls = get_option( 'my_custom_links', array() );
// Display the form here...
// Display the URL's data
foreach ($urls as $id => $data) {
echo '<p>URL: <strong>' . $data['url'] . '</strong><br />Share URL: <strong>' . add_query_arg( 'n', $id, home_url( '/' ) ) . '</strong>' . ( $data['ip'] ? '<br />Accessed from IP: <strong>' . $data['ip'] . '</strong>' : '' ) . '</p>';
}
剩下的你得自己去弄清楚,但我给了你大部分的东西,所以如果你环顾四周,你就能做到
PP:我还没有测试过代码,但理论上它应该可以工作-告诉我它的某些部分是否工作。保护一个页面或整个网站?请查看以下主题中的两个插件,我相信它可以帮助您:IP经常更改。这真的是一个足够强大的解决方案吗?我以前的答案是错误的,不适合您的情况-我现在已经解决了-这不是完整的解决方案,但我只是没有时间,所以请查看并尝试一下。IP地址根本不是解决此问题的最佳解决方案;他们也不应该这样——这不是他们的本意!这太严格了,无法确保某些人的IP不是动态的,易于更改。
function my_site_protection() {
global $pagenow;
// If we're not on admin or login page and the user is not logged-in
if ( ! is_admin() && 'wp-login.php' != $pagenow ) {
$login_redirect = true;
if ( isset( $_GET['n'] ) && $_GET['n'] ) {
$n = $_GET['n'];
$urls = get_option( 'my_custom_links', array() );
$data = isset( $urls[ $n ] ) ? $urls[ $n ] : false;
if ( $data ) {
if ( ! $data['ip'] || $data['ip'] == $_SERVER['REMOTE_ADDR'] ) {
// If no IP is set, set it and update the option
if ( ! $data['ip'] ) {
$urls[ $id ]['ip'] = $_SERVER['REMOTE_ADDR'];
update_option( 'my_custom_links', $urls );
}
if ( add_query_arg( 'n', $id, $data['url'] ) == curPageURL() ) {
// Don't redirect if we're on the correct page
$login_redirect = false;
} else {
// Redirect the user to the proper URL
wp_redirect( add_query_arg( 'n', $id, $data['url'] ) );
exit;
}
}
}
}
// Redirect user to log-in screen
$login_redirect && auth_redirect();
}
}
add_action('init', 'my_site_protection', 1);
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}
return $pageURL;
}