WordPress纯代码制作用户登录网站记录数据功能
我们在开发网站时,有时需要记录所有用户登录网站的信息,如登录时间、登录IP地址等。只要用户一登录,就自动将用户的登录信息写入数据库里。
下面就wordpress程序为例,学做网站论坛介绍一下Wordpress纯代码制作用户登录网站记录数据功能的方法。
第一步:创建一个数据表来存储网站用户登录信息;
在functions.php里添加以下的函数代码,来创建字段。
function add_history(){ //创建自定义分类表函数
global $wpdb;
$history_name = $wpdb->prefix . "history"; //声明表名 types为要创建的表名
$history_names = $wpdb->get_var("SHOW TABLES LIKE '$history_name'"); //获取声明的表判断是否存在
if($history_names != $history_name){
$sql = "CREATE TABLE " . $history_name . " (
`tid` bigint(20) NOT NULL AUTO_INCREMENT,
`useid` BIGINT(20) NOT NULL,
`riqi` DATETIME NOT NULL,
`uip` TEXT(20) NOT NULL,
PRIMARY KEY (`tid`),
UNIQUE KEY `tid` (`tid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
}
add_history();
第二步:在网站的页头模板里加入写入的代码,当判断网页为用户登录时返回的URL就自动写入数据库。为了判断是否为用户登录后返回的URL,可以在URL中添加一个参数d;
<?php if($_GET['d'] == 'jd' && current_user_can('level_0')){ ?>
<?php
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
?>
<script>
var ajax_gwc = {
//传递的参数
uid:'<?php global $current_user, $display_name , $user_email;get_currentuserinfo();echo $current_user->ID;?>',
uip:'<?php echo $user_IP;?>',
};
$.post("<?php echo $general_options['sql']; ?>?lx=historyadd", ajax_gwc,//处理的PHP文件
function(data) {
console.dir(data);
});
</script>
<?php }?>
第三步:还需要制作一个数据库处理文件:sql.php;
<?php
$sql = $wpdb->insert('wp_history',array(
'useid' => $_POST['uid'],
'uip' => $_POST['uip'],
'riqi' => date("Y-m-d H:i:s"),
));
dbDelta($sql);
?>
这样就可以实现用户登录自动写入数据库的功能了。