在具有高级用户帐户订阅的网站上,我希望能够限制每次登录一台计算机。要做到这一点,最直接的方法是通过IP进行限制,但我还没有找到一个插件来实现这一点。有人知道我可以使用哪一个来获得此功能吗?
相关:Login security question - Does WP show me if I\'m logged in from multiple locations?
在具有高级用户帐户订阅的网站上,我希望能够限制每次登录一台计算机。要做到这一点,最直接的方法是通过IP进行限制,但我还没有找到一个插件来实现这一点。有人知道我可以使用哪一个来获得此功能吗?
相关:Login security question - Does WP show me if I\'m logged in from multiple locations?
正如我在上面的评论中所建议的,从技术上讲,通过使用Safer Cookies (WordPress Plugin).
这并不阻止使用相同用户名和密码进行另一次登录,因为WordPress的一项功能是允许您使用凭据多次登录,从而使用多个IP。
您想要实现的是完全防止多次登录。According to Otto, 这不是小事。Stacy writes, 那Wishlist Member (Wordpress Plugin) 内置了这样的功能:IP-Login Protection. 因此,该插件或其部分可能是您问题的解决方案。IANAL, 但该插件违反了GPL许可证,因为它restricts you to make use of your wordpress derivate. 我不会用它。
但可能还有另一个插件可用,或者很容易扩展Login LockDown (Wordpress Plugin) 将整个会话绑定到记录的最后一个有效IP。
用户一次只能从一台计算机登录。如果用户停用30分钟,他可以从另一台计算机登录。在不同的浏览器中尝试。您必须执行两个步骤:
在数据库中的wp\\U用户表中创建2列(uni\\U哈希、会话时间)
"ALTER TABLE `wp_users` ADD COLUMN `uni_hash` VARCHAR( 80 ) NOT NULL"; "ALTER TABLE `wp_users` ADD COLUMN `session_time` int(11) DEFAULT NULL";2./在函数中粘贴此代码。php。
<?php
function myStartSession() {
if(!session_id()) {
session_start();}
}
function myEndSession() {
session_unset();
session_destroy();
}
if( !function_exists(\'single_user_login_uid_create\')){
function single_user_login_uid_create($ID){
global $wpdb;
$get_hash = $wpdb->get_results("SELECT uni_hash FROM `wp_users` WHERE user_login=\'".$ID."\'");
if(isset($_COOKIE["user_uni_uid".$ID.""])){
$user_uni_uid = $_COOKIE["user_uni_uid".$ID.""];
if($get_hash[0]->uni_hash == \'\'){ $hash_result = $_COOKIE["user_uni_uid".$ID.""];}
else{$hash_result = $get_hash[0]->uni_hash; }
}else{
$user_uni_uid = \'hash\';
if($get_hash[0]->uni_hash != \'\'){ $hash_result = $get_hash[0]->uni_hash;}
else{$hash_result = \'hash\'; }
}
$check_time = $wpdb->get_results("SELECT session_time FROM `wp_users` WHERE user_login=\'".$ID."\'");
if(!is_null($check_time)){$time_result = $check_time[0]->session_time;}
else{$time_result = time()-2000;}
if( (time() - $time_result < 1800)&&($hash_result != $user_uni_uid) ){
myEndSession();
wp_clearcookie();
wp_die(\'<h1>User is login! </h1>\', \'\', array( \'back_link\' => true ));
do_action(\'wp_logout\');
nocache_headers();
$redirect_to = home_url();
wp_redirect($redirect_to);
exit();
}else{
$_SESSION["LAST_ACTIVITY"] = time();
$new_time = $_SESSION["LAST_ACTIVITY"];
$randUID = md5(microtime().$_SERVER[\'REMOTE_ADD\'] );
$sql = "UPDATE `wp_users` set `uni_hash`=\'".$randUID."\', `session_time`=\'".$new_time."\' WHERE user_login=\'".$ID."\'";
$wpdb->get_results($sql);
setcookie("user_uni_uid", $randUID, 9999999999);
}
}
}
if( !function_exists(\'single_user_login_uid_check\')){
function single_user_login_uid_check(){
global $wpdb;
$ID = wp_get_current_user();
$logout_url = wp_logout_url(home_url());
$user_uni_uid = $_COOKIE["user_uni_uid".$ID->user_login.""];
$sql = "SELECT uni_hash FROM `wp_users` WHERE uni_hash=\'".$user_uni_uid."\'";
$getinfo = $wpdb->get_results($sql);
$check_time = $wpdb->get_results("SELECT session_time FROM `wp_users` WHERE user_login=\'".$ID->user_login."\'");
if(!is_null($check_time)){$time_result = $check_time[0]->session_time;}
else{$time_result = time()-2000;}
if(($getinfo[0]->uni_hash != $user_uni_uid)&&(time() - $time_result < 1800)&&(is_user_logged_in()) ){
wp_clearcookie();
myEndSession();
do_action(\'wp_logout\');
nocache_headers();
$redirect_to = home_url();
wp_redirect($redirect_to);
exit();
}else{
myStartSession();
if(!isset($_SESSION["LAST_ACTIVITY"])){$_SESSION["LAST_ACTIVITY"] = time(); }
elseif (time() - $_SESSION["LAST_ACTIVITY"] > 120) {
$_SESSION["LAST_ACTIVITY"] = time();
}
$new_time = $_SESSION["LAST_ACTIVITY"];
$sql = "UPDATE `wp_users` set `session_time`=\'".$new_time."\' WHERE user_login=\'".$ID->user_login."\'";
$wpdb->get_results($sql);
}
}
}
add_action(\'wp_login\', \'myStartSession\', 1);
add_action(\'wp_login\',\'single_user_login_uid_create\');
add_action(\'wp_logout\', \'myEndSession\');
add_action(\'init\',\'single_user_login_uid_check\');
?>
我检查了HTML验证程序。但是,信息如下。属性名称中的引号。可能的原因:前面某个地方缺少匹配的引号。元描述是从内容自动生成的。因此,如果内容包含引用,它也包含在元描述中。我想去掉报价单。目前,我在标题中插入了代码。php如下所示。$description = strip_shortcodes($description); $description = wp_strip_all_tags($description); 我应该补充什么?
在具有高级用户帐户订阅的网站上,我希望能够限制每次登录一台计算机。要做到这一点,最直接的方法是通过IP进行限制,但我还没有找到一个插件来实现这一点。有人知道我可以使用哪一个来获得此功能吗?
相关:Login security question - Does WP show me if I\'m logged in from multiple locations?
正如我在上面的评论中所建议的,从技术上讲,通过使用Safer Cookies (WordPress Plugin).
这并不阻止使用相同用户名和密码进行另一次登录,因为WordPress的一项功能是允许您使用凭据多次登录,从而使用多个IP。
您想要实现的是完全防止多次登录。According to Otto, 这不是小事。Stacy writes, 那Wishlist Member (Wordpress Plugin) 内置了这样的功能:IP-Login Protection. 因此,该插件或其部分可能是您问题的解决方案。IANAL, 但该插件违反了GPL许可证,因为它restricts you to make use of your wordpress derivate. 我不会用它。
但可能还有另一个插件可用,或者很容易扩展Login LockDown (Wordpress Plugin) 将整个会话绑定到记录的最后一个有效IP。
用户一次只能从一台计算机登录。如果用户停用30分钟,他可以从另一台计算机登录。在不同的浏览器中尝试。您必须执行两个步骤:
在数据库中的wp\\U用户表中创建2列(uni\\U哈希、会话时间)
"ALTER TABLE `wp_users` ADD COLUMN `uni_hash` VARCHAR( 80 ) NOT NULL"; "ALTER TABLE `wp_users` ADD COLUMN `session_time` int(11) DEFAULT NULL";2./在函数中粘贴此代码。php。
<?php
function myStartSession() {
if(!session_id()) {
session_start();}
}
function myEndSession() {
session_unset();
session_destroy();
}
if( !function_exists(\'single_user_login_uid_create\')){
function single_user_login_uid_create($ID){
global $wpdb;
$get_hash = $wpdb->get_results("SELECT uni_hash FROM `wp_users` WHERE user_login=\'".$ID."\'");
if(isset($_COOKIE["user_uni_uid".$ID.""])){
$user_uni_uid = $_COOKIE["user_uni_uid".$ID.""];
if($get_hash[0]->uni_hash == \'\'){ $hash_result = $_COOKIE["user_uni_uid".$ID.""];}
else{$hash_result = $get_hash[0]->uni_hash; }
}else{
$user_uni_uid = \'hash\';
if($get_hash[0]->uni_hash != \'\'){ $hash_result = $get_hash[0]->uni_hash;}
else{$hash_result = \'hash\'; }
}
$check_time = $wpdb->get_results("SELECT session_time FROM `wp_users` WHERE user_login=\'".$ID."\'");
if(!is_null($check_time)){$time_result = $check_time[0]->session_time;}
else{$time_result = time()-2000;}
if( (time() - $time_result < 1800)&&($hash_result != $user_uni_uid) ){
myEndSession();
wp_clearcookie();
wp_die(\'<h1>User is login! </h1>\', \'\', array( \'back_link\' => true ));
do_action(\'wp_logout\');
nocache_headers();
$redirect_to = home_url();
wp_redirect($redirect_to);
exit();
}else{
$_SESSION["LAST_ACTIVITY"] = time();
$new_time = $_SESSION["LAST_ACTIVITY"];
$randUID = md5(microtime().$_SERVER[\'REMOTE_ADD\'] );
$sql = "UPDATE `wp_users` set `uni_hash`=\'".$randUID."\', `session_time`=\'".$new_time."\' WHERE user_login=\'".$ID."\'";
$wpdb->get_results($sql);
setcookie("user_uni_uid", $randUID, 9999999999);
}
}
}
if( !function_exists(\'single_user_login_uid_check\')){
function single_user_login_uid_check(){
global $wpdb;
$ID = wp_get_current_user();
$logout_url = wp_logout_url(home_url());
$user_uni_uid = $_COOKIE["user_uni_uid".$ID->user_login.""];
$sql = "SELECT uni_hash FROM `wp_users` WHERE uni_hash=\'".$user_uni_uid."\'";
$getinfo = $wpdb->get_results($sql);
$check_time = $wpdb->get_results("SELECT session_time FROM `wp_users` WHERE user_login=\'".$ID->user_login."\'");
if(!is_null($check_time)){$time_result = $check_time[0]->session_time;}
else{$time_result = time()-2000;}
if(($getinfo[0]->uni_hash != $user_uni_uid)&&(time() - $time_result < 1800)&&(is_user_logged_in()) ){
wp_clearcookie();
myEndSession();
do_action(\'wp_logout\');
nocache_headers();
$redirect_to = home_url();
wp_redirect($redirect_to);
exit();
}else{
myStartSession();
if(!isset($_SESSION["LAST_ACTIVITY"])){$_SESSION["LAST_ACTIVITY"] = time(); }
elseif (time() - $_SESSION["LAST_ACTIVITY"] > 120) {
$_SESSION["LAST_ACTIVITY"] = time();
}
$new_time = $_SESSION["LAST_ACTIVITY"];
$sql = "UPDATE `wp_users` set `session_time`=\'".$new_time."\' WHERE user_login=\'".$ID->user_login."\'";
$wpdb->get_results($sql);
}
}
}
add_action(\'wp_login\', \'myStartSession\', 1);
add_action(\'wp_login\',\'single_user_login_uid_create\');
add_action(\'wp_logout\', \'myEndSession\');
add_action(\'init\',\'single_user_login_uid_check\');
?>
我有一个插件,在其中一个文件中,我试图以正确的方式包含一个JS文件:function inveroak_feed_search_enqueue() { wp_enqueue_script(\'inveroak-feed-search\', plugin_dir_url(__file__).\'assets/js/search.js\'); } add_action(\'wp_enqueue_scripts\', \'inveroak_feed_search_enqueue\