wordpress的自发布接口乱加 tag
本帖最后由 iart 于 2011-7-3 15:24 编辑接口把已有的tag随机加到文章中,该改什么地方“<?php
/*********密码验证****************************/
$password='jiekou';
if($password!=$_POST['pw']) exit('验证密码错误!');
//note 加载数据库配置文件
include('wp-config.php');
$dbhost=DB_HOST;
$dbuser=DB_USER;
$dbname=DB_NAME;
$dbpw=DB_PASSWORD;
$dbcharset = 'utf8';
$charset = 'utf-8';
$tablepre=$table_prefix;
/****以下代码非专业人员不建议修改***************/
set_magic_quotes_runtime(0);
define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
$timestamp=time();
if(PHP_VERSION < '4.1.0') {
$_GET = &$HTTP_GET_VARS;
$_POST = &$HTTP_POST_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_FILES = &$HTTP_POST_FILES;
}
if (isset($_REQUEST['GLOBALS']) OR isset($_FILES['GLOBALS'])) {
exit('Request tainting attempted.');
}
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
foreach($_request as $_key => $_value) {
$_key{0} != '_' && $_key = daddslashes($_value);
}
}
if (!MAGIC_QUOTES_GPC && $_FILES) {
$_FILES = daddslashes($_FILES);
}
/*****************以下是核心的处理代码******************/
extract($_POST,EXTR_OVERWRITE);// 获取POST过来的参数
$db = new db($dbhost,$dbuser,$dbpw,$dbname,$charset,$dbcharset);
if(empty($actiontype) || !in_array($actiontype, array('getcat', 'addcat', 'addartices'))){
exit("参数错误");
}
//note 获取所有分类
if($actiontype == 'getcat'){
$sql = "SELECT tt.term_id,tt.term_taxonomy_id,t.name,tt.term_id,t.term_id,tt.taxonomy,tt.parent from ".$tablepre."terms t,".$tablepre."term_taxonomy tt where t.term_id=tt.term_id AND tt.taxonomy='category' ";
$cateinfo = $db->get_array($sql);// 获取所有分类
$ids = maketree($cateinfo,0,'');
echo substr($ids, 0, -1);
exit;
}
//note 添加分类
if($actiontype == 'addcat'){
$namestring = iconv("gb2312", "UTF-8", $namestring);
if(empty($namestring)) exit('分类名不能为空');
$parent = $parent == '' ? 0 : $parent;
if($parent){
$sql = "SELECT term_id FROM {$tablepre}term_taxonomy WHERE term_taxonomy_id='{$parent}' LIMIT 1";
$parent_taxonomy = $db->fetch_first($sql);
$parentid = $parent_taxonomy['term_id'];
}else{
$parentid = 0;
}
$name_arr = explode(",",$namestring);
foreach ($name_arr as $key => $name){
if(!empty($name)){
//note 判断分类是否已存在
$sql = "SELECT term_id FROM {$tablepre}terms WHERE name='{$name}' LIMIT 1";
$term_info = $db->fetch_first($sql);
if($term_info['term_id']){
echo '此名已存在:' . $name . '<br/>';
continue;
}
$slug = urlencode($name);
$sql = "INSERT INTO {$tablepre}terms SET name='{$name}',slug='{$slug}'";
$result = $db->query($sql);
$term_id = $db->insert_id();
$sql = "INSERT INTO {$tablepre}term_taxonomy SET term_id='{$term_id}',taxonomy='category',parent='{$parentid}'";
$result = $db->query($sql);
if($result){
echo '添加分类<' . $name . '>成功<br/>';
continue;
}else{
echo '添加分类<' . $name . '>失败<br/>';
continue;
}
}
}
}
//note 发布文章
if($actiontype == 'addartices'){
$title = iconv("gb2312", "UTF-8", $title);
$content = iconv("gb2312", "UTF-8", $content);
$username = iconv("gb2312", "UTF-8", $username);
$post_excerpt = iconv("gb2312", "UTF-8", $excerpt);
$tags = iconv("gb2312", "UTF-8", $tags);
$post_mime_type = iconv("gb2312", "UTF-8", $mime_type);
if(!$title){
exit('标题不能为空');
}
if(!$content){
exit('内容不能为空');
}
//note 获得所有文章分类
$sql = "SELECT term_taxonomy_id FROM {$tablepre}term_taxonomy";
$catarr = $db->get_array($sql);
$catid_arr = array();
foreach ($catarr as $v){
$catid_arr[] = $v['term_taxonomy_id'];
}
//note 如果没有发送分类或分类错误,则随机发布
if(empty($catid) || !in_array($catid, $catid_arr)){
$key = mt_rand(0,count($catid_arr)-1);
$catid = $catid_arr[$key];
}
//note 随机分配发布用户
$userinfo=$db->get_array("Select ID from {$tablepre}users");
$user_key = mt_rand(0,count($userinfo)-1);
$uid = $userinfo[$user_key]['ID'];
//note 摘要
if(empty($post_excerpt)){
$post_excerpt = substr(strip_tags($content), 0, 100);
}
//note 发布文章
$post_date=date("Y-m-d H:i:s");
$name = urlencode($title);
$sql="INSERT INTO `".$tablepre."posts` ( `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`,`post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES ('$uid', '$post_date', '$post_date', '$content', '$title', '$post_excerpt', 'publish', 'open', 'open', '', '$name', '', '', '$post_date', '$post_date', '$post_content_filtered', 0, '', '0', 'post', '$post_mime_type', '0')";
$query=$db->query($sql);
$postid=$db->insert_id();
$sqledit="INSERT INTO `".$tablepre."postmeta` (post_id ,meta_key ,meta_value ) VALUES ($postid,'_edit_lock','$timestamp'),($postid,'_edit_last',1)";
$query2=$db->query($sqledit);
$sqlcid="INSERT INTO `".$tablepre."term_relationships` (object_id ,term_taxonomy_id ) VALUES ($postid,'$catid')";
$result=$db->query($sqlcid);
//note 更改分类的count
$sql_update="UPDATE {$tablepre}term_taxonomy SET count=count+1 WHERE term_taxonomy_id='{$catid}'";
$result=$db->query($sql_update);
//note 处理文章标签
if($tags){
$tagss= array_unique(explode(",",$tags));
foreach($tagss as $var){
$ssql="SELECT * from ".$tablepre."terms where name='$var' ";
$squery=$db->fetch_first($ssql);
if($squery){
$tagidss=$db->fetch_first($ssql);
$tagids=$tagidss['term_id'];
$gettagid="SELECT term_taxonomy_id,term_id from ".$tablepre."term_taxonomy where term_id='$tagids' ";
$gettag=$db->fetch_first($gettagid);
$tagid=$gettag['term_taxonomy_id'];
$sqltag="INSERT INTO `".$tablepre."term_relationships` (object_id ,term_taxonomy_id ) VALUES ($postid,'$tagid')";
$result=$db->query($sqltag);
}else{
$uc=urlencode($var);
$addtag="INSERT INTO `".$tablepre."terms` (name,slug) VALUES ('$var','$uc')";
$addquery=$db->query($addtag);
$addtagid=$db->insert_id($addtag);
$addterm="INSERT INTO `".$tablepre."term_taxonomy` (term_id,taxonomy) VALUES ('$addtagid','post_tag')";
$termquery=$db->query($addterm);
$tagids=$db->insert_id();
$sqltag="INSERT INTO `".$tablepre."term_relationships` (object_id ,term_taxonomy_id ) VALUES ($postid,'$tagids')";
$result=$db->query($sqltag);
}
}
}
if($result){
exit('发布成功');
}else{
exit('发布失败');
}
}
exit;
/***生成目录的一个遍历算法***/
function maketree($ar,$id,$pre)
{
$ids = '';
foreach($ar as $k=>$v){
$fup=$v['parent'];
$name=$v['name'];
$fid=$v['term_id'];
$term_taxonomy_id = $v['term_taxonomy_id'];
if($fup==$id)
{
$ids.=$term_taxonomy_id . '|' . $pre . $name . '□';
foreach($ar as $kk=>$vv)
{
$pp=$vv['parent'];
if($pp==$fid)
{
$ids.=maketree($ar,$fid,$pre."--");
break;
}
}
}
}
return $ids;
}
/****************************以下为公共类库及函数库******************************/
function daddslashes($string, $force = 0) {
!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}
/*当前为数据库操作类库*/
class db {
var $mlink;
function db($dbhost, $dbuser, $dbpw, $dbname = '',$charset='gbk',$dbcharset='gbk', $pconnect=0){
if($pconnect){
if(!$this->mlink = @mysql_pconnect($dbhost, $dbuser, $dbpw)){
$this->halt('Can not connect to MySQL');
}
} else {
if(!$this->mlink = @mysql_connect($dbhost, $dbuser, $dbpw)){
$this->halt('Can not connect to MySQL');
}
}
if($this->version()>'4.1'){
if('utf-8'==strtolower($dbcharset)){
$dbcharset='utf8';
}
if($dbcharset){
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->mlink);
}
if($charset){
mysql_query("SET $charset", $this->mlink);
}
if($this->version() > '5.0.1'){
mysql_query("SET sql_mode=''", $this->mlink);
}
}
if($dbname){
mysql_select_db($dbname, $this->mlink);
}
}
function select_db($dbname){
return mysql_select_db($dbname, $this->mlink);
}
function get_array($sql){
$list = array();
$query=$this->query($sql);
while($row=$this->fetch_array($query)){
$list[]=$row;
}
return $list;
}
function fetch_array($query, $result_type = MYSQL_ASSOC){
return (is_resource($query))? mysql_fetch_array($query, $result_type) :false;
}
function result_first($sql){
$query = $this->query($sql);
return $this->result($query, 0);
}
function fetch_first($sql){
$query = $this->query($sql);
return $this->fetch_array($query);
}
function fetch_total($table,$where='1'){
return $this->result_first("SELECT COUNT(*) num FROM ".DB_TABLEPRE."$table WHERE $where");
}
function query($sql, $type = ''){
global $mquerynum;
$func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ? 'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->mlink)) && $type != 'SILENT'){
$this->halt("MySQL Query Error",'TRUE',$sql);
}
$mquerynum++;
return $query;
}
function affected_rows(){
return mysql_affected_rows($this->mlink);
}
function error(){
return (($this->mlink) ? mysql_error($this->mlink) : mysql_error());
}
function errno(){
return intval(($this->mlink) ? mysql_errno($this->mlink) : mysql_errno());
}
function result($query, $row){
$query = @mysql_result($query, $row);
return $query;
}
function num_rows($query){
$query = mysql_num_rows($query);
return $query;
}
function num_fields($query){
return mysql_num_fields($query);
}
function free_result($query){
return mysql_free_result($query);
}
function insert_id(){
return ($id = mysql_insert_id($this->mlink)) >= 0 ? $id : $this->result($this->query('SELECT last_insert_id()'), 0);
}
function fetch_row($query){
$query = mysql_fetch_row($query);
return $query;
}
function fetch_fields($query){
return mysql_fetch_field($query);
}
function version(){
return mysql_get_server_info($this->mlink);
}
function close(){
return mysql_close($this->mlink);
}
function halt($msg, $debug=true, $sql=''){
@ini_set("date.timezone","Asia/Shanghai");
$output .="<html>\n<head>\n";
$output .="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$charset."\">\n";
$output .="<title>$msg</title>\n";
$output .="</head>\n<body><table>";
$output .="<b>MySql Error Info</b><table><tr><td width='100px'><b>Message</b></td><td>$msg</td></tr>\n";
$output .="<tr><td><b>Time</b></td><td>".date("Y-m-d H:i:s")."<br /></td></tr>\n";
$output .="<tr><td><b>Script</b></td><td> ".$_SERVER['PHP_SELF']."<br /></td></tr>\n\n";
$output .="<tr><td><b>SQL</b></td><td> ".htmlspecialchars($sql)."<br />\n</td></tr><tr><td><b>Error</b></td><td>".$this->error()."</td></tr><br />\n";
$output .="<tr><td><b>Errno.</b></td><td>".$this->errno()."</td></tr></table>";
$output .="\n</body></html>";
echo $output;
exit();
}
}
?> 本帖最后由 anyone 于 2012-8-8 11:58 编辑
$tags = iconv("gb2312", "UTF-8", $tags); 这个不就是tag了么
不过要放在文章里,那就需要再内容的规则中,进行便签混合,但是不能随机
页:
[1]