繁体   English   中英

保护每个用户的开发中网站/自定义URL并存储IP

[英]Protect under-developpement Website / Custom URL per user and store IP

我想保护正在开发的页面。 问题在于人们正在共享该链接。 我想手动为用户提供自定义链接,存储他们使用的IP,然后防止该链接在其他IP上重复使用。 我使用的是wordpress,这是我想要保护的整个网站。 另外,有没有一种方法可以跟踪谁共享了URL?

范例:

我会给朋友一个http://exemple.com/abc ,只要用户使用的是首次使用的IP,该链接就可以使用。 如果该用户与其他人共享该链接,或者另一个IP尝试使用URL访问该网站,则我希望以某种方式对其进行记录。

我会给您一些基本的建议,因为这相对复杂,而且我没有时间编写所有代码:)。

首先,您需要添加一个普通的管理页面-最初,您希望在此页面上具有带有文本字段和提交字段的<form> 文本字段将是您输入要共享的页面URL的位置。

您还将在数据库中存储一个选项(我们将在以后创建)。 它应该是一个数组,稍后您将在其中添加URL。

提交网址后,您将为此网址创建一个随机数-它必须是唯一的(例如,您可以使用uniqid() )。 然后,您将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>';
}

然后,您只需要添加一个函数即可检查是否允许用户查看特定的URL,例如(将代码添加到您的functions.php ):

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;
}

您必须自己弄清其余的内容,但我给了您大部分内容,因此,如果您四处张望,您将能够完成。

PP:我还没有测试过代码,但是从理论上讲它应该可以工作-告诉我它的某些部分是否不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM