我写了一个插件,可以收集文档就绪状态的统计信息。
请记住,我的数据库表已经创建。
我添加了以下代码来执行ajax代码
add_action( \'wp_head\', \'zkr_stats_ajax\' );
function zkr_stats_ajax(){
?>
<script type=\'text/javascript\' >
jQuery(document).ready(function() {
//jQuery(window).load(function() {
//set data varialbel with values
var data = {
action: \'action_stats\',
zkr_filename: \'<?php echo $_SERVER[\'PHP_SELF\']; ?>\',
zkr_ip: \'<?php echo $_SERVER[\'REMOTE_ADDR\']; ?>\',
zkr_referer: \'<?php if(isset($_SERVER[\'HTTP_REFERER\'])){ echo $_SERVER[\'HTTP_REFERER\'];}else{ } ?>\',
zkr_browser: \'<?php echo $_SERVER[\'HTTP_USER_AGENT\']; ?>\',
zkr_method: \'<?php echo $_SERVER[\'REQUEST_METHOD\']; ?>\'
};
var ajaxurl = \'<?php admin_url(\'admin-ajax.php\'); ?>\'; // set the admin ajax url
jQuery.post(ajaxurl, data, function(response) {
});
});
</script>
<?php
}
然后有一个函数处理从上述ajax发送的数据,并将数据存储到mysql数据库表中。
add_action(\'wp_ajax_nopriv_action_stats\', \'zkr_stats_update\'); //ajax callback
function zkr_stats_update(){
global $wpdb;
if(isset($_POST)){
$filename = $_POST[\'zkr_filename\'];
$ip = $_POST[\'zkr_ip\'];
$referer = $_POST[\'zkr_referer\'];
$browser = $_POST[\'zkr_browser\'];
$method = $_POST[\'zkr_method\'];
$table_name = $wpdb->prefix . "zkr_stats";
$row = $wpdb->get_results( "SELECT * FROM ".$table_name." WHERE ip = \'$ip\' ");
if($wpdb->num_rows == 0){
$num = 1;
$wpdb->query( $wpdb->prepare( "INSERT INTO ". $wpdb->prefix ."zkr_stats(ip, filename, referer, browser, method, timestamp, number) VALUES(\'".$ip."\', \'".$filename."\', \'".$referer."\', \'".$browser."\', \'".$method."\', NOW(), \'".$num."\')" )) or wp_die( \'Could not save data!\' ); //insert new data if the current ip was not used before
}
elseif($wpdb->num_rows == 1){
foreach($row as $rows){
$num = $rows->number + 1;
}
$wpdb->query( $wpdb->prepare( "UPDATE ".$table_name." SET number = \'".$num."\' WHERE ip = \'".$ip."\'" ))or wp_die( \'Could not update data!\' ); //update visit data for old ip
}
}
}
现在,当页面加载时,我可以在firebug中看到数据是通过ajax发布的,但没有保存任何内容。
只有当我将函数zkr\\u stats\\u update()添加到主题的标题中时,它才会保存,但随后它会保存两个,一个是空的,一个是带数据的。
我做错了什么?
谢谢各位