加载配置文件
<?php
// WEICOT 数据库引入文件
include_once("Mysql.php");
use Weicot\Mysql;
$DB=new MySql;
$DB->setDb("wp_20012"); // 选择数据库
删除同一ip 超过某个数值的评论
//同一IP 评论统计代码
$sql='select comment_author_IP,
count(comment_author_IP) as num
from (
select comment_author_IP
from wp_comments
where comment_author_IP is not null
) as total
group by comment_author_IP
order by num desc'; //评论统计
$data=$DB->data($sql); //获得数据
$total=20; //评论大于多少(同一Ip 的评论数)
echo "大于".$total." 评论的IP \r\n";
foreach($data["data"] as $value){
if($value["num"]>$total){
echo $value["comment_author_IP"]."\t".$value["num"]."\t";
echo $del='delete from wp_comments WHERE comment_author_IP="'.$value["comment_author_IP"].'"';
echo "\t";
if($DB->exe($del)){ //执行
echo "删除完成 \r\n";
}
}else{
continue;
}
}
C:\Users\Administrator>php C:\Users\Administrator\Desktop\GET\upstatus.php 大于20 评论的IP 46.161.9.23 3921 delete from wp_comments WHERE comment_author_IP="46.161.9.23" 删除完成 46.161.9.22 3462 delete from wp_comments WHERE comment_author_IP="46.161.9.22" 删除完成 146.185.223.55 84 delete from wp_comments WHERE comment_author_IP="146.185.223.55" 删除完成 146.185.223.67 78 delete from wp_comments WHERE comment_author_IP="146.185.223.67" 删除完成 46.118.153.31 74 delete from wp_comments WHERE comment_author_IP="46.118.153.31" 删除完成 146.185.223.57 71 delete from wp_comments WHERE comment_author_IP="146.185.223.57" 删除完成 146.185.223.140 68 delete from wp_comments WHERE comment_author_IP="146.185.223.140" 删除完成 146.185.223.180 67 delete from wp_comments WHERE comment_author_IP="146.185.223.180" 删除完成 146.185.223.77 66 delete from wp_comments WHERE comment_author_IP="146.185.223.77" 删除完成 146.185.223.150 66 delete from wp_comments WHERE comment_author_IP="146.185.223.150" 删除完成 146.185.223.120 66 delete from wp_comments WHERE comment_author_IP="146.185.223.120" 删除完成 146.185.223.110 65 delete from wp_comments WHERE comment_author_IP="146.185.223.110" 删除完成 146.185.223.80 65 delete from wp_comments WHERE comment_author_IP="146.185.223.80" 删除完成 146.185.223.170 65 delete from wp_comments WHERE comment_author_IP="146.185.223.170" 删除完成 146.185.223.73 63 delete from wp_comments WHERE comment_author_IP="146.185.223.73" 删除完成 146.185.223.167 63 delete from wp_comments WHERE comment_author_IP="146.185.223.167" 删除完成 146.185.223.130 61 delete from wp_comments WHERE comment_author_IP="146.185.223.130" 删除完成 146.185.223.97 61 delete from wp_comments WHERE comment_author_IP="146.185.223.97" 删除完成 146.185.223.160 60 delete from wp_comments WHERE comment_author_IP="146.185.223.160" 删除完成 134.249.141.24 59 delete from wp_comments WHERE comment_author_IP="134.249.141.24" 删除完成 134.249.51.228 40 delete from wp_comments WHERE comment_author_IP="134.249.51.228" 删除完成 46.118.157.125 33 delete from wp_comments WHERE comment_author_IP="46.118.157.125" 删除完成
删除评论中含有 http或htts(链接) 的品评论
// 找出 ping论中 带https:的评论并删除 如果只找出 http 那么 %http:% 这里为http
$sql="select * from wp_comments where comment_content like '%https:%' and 'cooment_approved' NOT LIKE '1' ";
$data=$DB->data($sql); //获得数据
$total=4; //评论大于多少
echo "大于".$total." 评论的IP \r\n";
$i=0;
foreach($data["data"] as $value){
echo $value["comment_author_IP"]."\t".$value["comment_author_email"]."\t".
$value["comment_date"]."\t".$value["comment_agent"]."\r\n";
echo $del='delete from wp_comments WHERE comment_author_IP="'.$value["comment_author_IP"].'"';
echo "\t";
if($DB->exe($del)){ //执行
echo "删除完成 \r\n";
$i++;
}
}
echo "total:". $i."\r\n";
新建评论表
$create="CREATE TABLE `wp_comments` ( `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT '0', `comment_author` tinytext NOT NULL, `comment_author_email` varchar(100) NOT NULL DEFAULT '', `comment_author_url` varchar(200) NOT NULL DEFAULT '', `comment_author_IP` varchar(100) NOT NULL DEFAULT '', `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `comment_content` text NOT NULL, `comment_karma` int(11) NOT NULL DEFAULT '0', `comment_approved` varchar(20) NOT NULL DEFAULT '1', `comment_agent` varchar(255) NOT NULL DEFAULT '', `comment_type` varchar(20) NOT NULL DEFAULT '', `comment_parent` bigint(20) unsigned NOT NULL DEFAULT '0', `user_id` bigint(20) unsigned NOT NULL DEFAULT '0', `comment_mail_notify` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`comment_ID`), KEY `comment_post_ID` (`comment_post_ID`), KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`), KEY `comment_date_gmt` (`comment_date_gmt`), KEY `comment_parent` (`comment_parent`), KEY `comment_author_email` (`comment_author_email`(10)) ) ENGINE=MyISAM AUTO_INCREMENT=17412 DEFAULT CHARSET=utf8"; var_dump($DB->exe($create));
Mysql 文件
<?php
// 简易连接器
namespace Weicot;
class MySql
{
static $con;
public static $sname ;
public static $uname ;
public static $pword ;
public static $dbname;
static public function setDb($db){
self::$dbname=$db;
}
/**
* @throws \Exception
*/
static public function ini(){
self::$sname=""; //host 地址
self::$uname=""; //用户名
self::$pword=""; //密码
self::$con = @mysql_connect(self::$sname, self::$uname, self::$pword);
if (!self::$con) {
throw new \Exception("数据库连接错误" . mysql_error());
}
}
/***
* @param $sql
* @return resource
* @throws \Exception
* 执行sql
*/
static public function exe($sql)
{
self::ini();
mysql_select_db(self::$dbname,self::$con);
mysql_query("SET NAMES UTF8");//设置 客户端查询编码
mysql_query("set global max_allowed_packet = 2*1024*1024*10");//设置 Pake 大小
$out = mysql_query($sql, self::$con);
if (!$out) {
throw new \Exception("查询错误" . mysql_error());
}
return $out;
}
/***
* @param $sql
* @return array
* @throws \Exception
* 获得mysql 查询数组
*/
static public function data($sql)
{
$sql =self::exe($sql);
$rows=mysql_num_rows($sql); //获得行数
$rwr = array();
$rwr['rows'] = $rows;
while ($row = mysql_fetch_array($sql)) {
$rwr['data'][] = $row;
}
return $rwr;
}
public function __destruct()
{
mysql_close(self::$con);
}
}
完整代码
<?php
/**
* WeiCot Framework
* User: jiang
* Date: 2015/5/15
* Time: 17:16
* 数据库操作基类
*/
namespace Weicot\Core;
class Database
{
static $con;
public static $sname;
public static $uname;
public static $pword;
public static $dbname;
public static $showQuery;
static public function ini()
{
$config = File::getConfig();
self::$sname = $config["DbHost"];
self::$uname = $config["DbUserName"];
self::$pword = $config["DbPassword"];
self::$dbname = $config["DbName"];
self::$con = @mysql_connect(self::$sname, self::$uname, self::$pword);
if (!self::$con) {
throw new \Exception("数据库连接错误" . mysql_error());
}
}
static public function log($value, $file = "sys.log")
{
$basePath = "./var/log/";
if (is_array($value) && count($value)) {
file_put_contents($basePath . $file, date('H-i-s') . "=>" . var_export($value, TRUE) . "\r\n", FILE_APPEND);
} else {
file_put_contents($basePath . $file, date('H-i-s') . "=>" . $value . "\r\n", FILE_APPEND);
}
}
static public function exe($sql)
{
self:: log($sql, "query.log");
self::ini();
mysql_select_db(self::$dbname, self::$con);
mysql_query("SET NAMES UTF8");//设置 客户端查询编码
$out = mysql_query($sql, self::$con);
if (!$out) {
throw new \Exception("查询错误" . mysql_error());
}
return $out;
}
/**
* @param $sql
* @param bool|false $row
* @return array|int
* @throws \Exception
* 获得数据
*/
static public function data($sql, $row = false)
{
$sql = self::exe($sql);
//返回行数
if ($row) {
return mysql_num_rows($sql); //获得行数
}
$rows = mysql_num_rows($sql); //获得行数
$rwr = array();
$rwr['rows'] = $rows;
while ($row = mysql_fetch_array($sql)) {
$rwr['data'][] = $row;
}
return $rwr;
}
static function getDbDate()
{
return date('Y-m-d H:i:s', time());
}
static function getIp()
{
$ip = false;
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) {
array_unshift($ips, $ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++) {
if (!eregi("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
/***
* @param $value 输入值 xss
* @return mixed
*/
static function xss($value)
{
return htmlspecialchars($value);
}
public function __destruct()
{
@mysql_close(self::$con);
}
/***
* @param $sql
* @param bool|false $row
* @return array|bool|int|mixed
* @throws \Exception
*/
static public function cacheData($sql,$prefix="cache",$row = false)
{
$cache = self::isCache($sql,$prefix);
if ($cache) {
return $cache;
} else {
$resource = self::exe($sql);
//返回行数
if ($row) {
return mysql_num_rows( $resource); //获得行数
}
$rows = mysql_num_rows( $resource); //获得行数
$rwr = array();
$rwr['rows'] = $rows;
while ($row = mysql_fetch_array( $resource)) {
$rwr['data'][] = $row;
}
self::cacheFile($sql, $rwr,$prefix);
return $rwr;
}
}
/***
* @param $sql
* @return bool|mixed
* 判断是否缓存
*/
static function isCache($sql,$prefix="cache")
{
$fileName =$prefix."_". md5($sql);
$file = "./var/cache/sqldata/" . $fileName;
if (file_exists($file)) {
$data = file_get_contents($file);
return unserialize($data);
} else {
return false;
}
}
/**
* 查询缓存
* @param $sql
* @param $data
*/
static function cacheFile($sql,$data,$prefix="cache")
{
$fileName =$prefix."_". md5($sql);
$file = "./var/cache/sqldata/" . $fileName;
$msg = serialize($data);
$fp = fopen($file, "w");
fputs($fp, $msg);
fclose($fp);
}
/***
* @param $ostr
* @return string
*/
public function filter_utf8_char($ostr)
{
preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);
$str = join('', $matches[0]);
if ($str == '') { //含有特殊字符需要逐個處理
$returnstr = '';
$i = 0;
$str_length = strlen($ostr);
while ($i <= $str_length) {
$temp_str = substr($ostr, $i, 1);
$ascnum = Ord($temp_str);
if ($ascnum >= 224) {
$returnstr = $returnstr . substr($ostr, $i, 3);
$i = $i + 3;
} elseif ($ascnum >= 192) {
$returnstr = $returnstr . substr($ostr, $i, 2);
$i = $i + 2;
} elseif ($ascnum >= 65 && $ascnum <= 90) {
$returnstr = $returnstr . substr($ostr, $i, 1);
$i = $i + 1;
} elseif ($ascnum >= 128 && $ascnum <= 191) { // 特殊字符
$i = $i + 1;
} else {
$returnstr = $returnstr . substr($ostr, $i, 1);
$i = $i + 1;
}
}
$str = $returnstr;
preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);
$str = join('', $matches[0]);
}
return $str;
}
/***
* @param $string
* @return string
* 转意
*/
public function string($string)
{
return addslashes($string);
}
}
?>
删除垃圾文章
#delete from ... using ... where ....。
delete
from
wp_posts
using
wp_posts,
wp_term_relationships,
wp_term_taxonomy
where
wp_posts.id=wp_term_relationships.object_id
and
wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
and
wp_term_relationships.term_taxonomy_id = 11
wp_term_relationships 需要删除对应的文章分类关系,不然记录条数和原来的wp_posts 一样,
查询:
SELECT * FROM `wp_term_relationships` where term_taxonomy_id=11
删除:
delete FROM `wp_term_relationships` where term_taxonomy_id=11
记得优化下表
把wp_term_taxonomy里的分类文章数量计数的几W count 给归零
UPDATE `wp_term_taxonomy` SET `count` = '0' WHERE `wp_term_taxonomy`.`term_taxonomy_id` =11 LIMIT 1 ;
转载请注明:(●--●) Hello.My Weicot » wordpress 大批量删除无用评论 以及垃圾评论统计 和文章 php 代码