<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Script Marketing &#187; Classe SEO php</title>
	<atom:link href="http://www.scripts-marketing.com/category/classe-seo-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.scripts-marketing.com</link>
	<description>Tout pour réaliser vos scripts</description>
	<lastBuildDate>Tue, 31 Aug 2010 16:46:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>LFE, une classe et un outil pour faire vivre votre ferme.</title>
		<link>http://www.scripts-marketing.com/lfe-une-classe-et-un-outil-pour-faire-vivre-votre-ferme/</link>
		<comments>http://www.scripts-marketing.com/lfe-une-classe-et-un-outil-pour-faire-vivre-votre-ferme/#comments</comments>
		<pubDate>Fri, 21 May 2010 08:29:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Classe SEO php]]></category>
		<category><![CDATA[LFE Review]]></category>
		<category><![CDATA[tool LFE]]></category>

		<guid isPermaLink="false">http://www.scripts-marketing.com/?p=141</guid>
		<description><![CDATA[Peut-être ne connaissez-vous pas cet outil de création automatique de Blog à la volée&#8230;Dans ce cas, cette petite classe ne vous sera pas d&#8217;une grande utilité ( quoi que ) Utilisateurs de LFE, Vous avez des Blogs non ? Personnellement j&#8217;ai arreté de compter après 15 000&#8230;Alors ces blogs sont bien sympathiques&#8230;Reste qu&#8217;il ne sont [...]]]></description>
			<content:encoded><![CDATA[<p>Peut-être ne connaissez-vous pas cet outil de création automatique de Blog à la volée&#8230;Dans ce cas, cette petite classe ne vous sera pas d&#8217;une grande utilité ( quoi que )</p>
<p>Utilisateurs de LFE, Vous avez des Blogs non ? Personnellement j&#8217;ai arreté de compter après 15 000&#8230;Alors ces blogs sont bien sympathiques&#8230;Reste qu&#8217;il ne sont pas très vivants. Des BL dans les posts, cool, des commentaires ? NADA &#8230; Un blog qui ne vit pas devient très vite soupçonneux pour le Webmaster du WPMU que vous êtes en train de <span style="text-decoration: line-through;">Spammer</span> visiter.</p>
<p>Alors pour faire vivre ces blogs, j&#8217;ai décidé de me coder un ch&#8217;tite class pour poster des commentaire anonymement sur mes blogs&#8230;Impossible soit dit en passant en RPC, sauf si on connait l&#8217;astuce.</p>
<p>A noter que fada de Dofollow et en plein dans le code, j&#8217;en avais zappé le nofollow par défaut dans les blogs, cette idée est donc utile seulement pour faire vivre un blog ( Merci à ce <a href="http://www.deliciouscadaver.com/" target="_blank">Black Hat Seo</a> pour la remarque qui m&#8217;a fait percuter ).</p>
<p>Je post et j&#8217;explique ensuite:</p>
<pre class="brush: php; title: ;">

&lt;?php

require ('ixr.class.php');//http://scripts.incutio.com/xmlrpc/
/**
 * WordPress_client
 *
 * @package
 * @author Jeremy A.
 * @copyright 2010
 * @version 1.0
 * @access public
 * @site www.scripts-marketing.com
 */
class WordPress_client
{
 private $url;
 private $login;
 private $pass;
 private $rpc;
 private $erreurs = array();
 public $useragent;
 /**
 * WordPress_client::__construct()
 *
 * @param mixed $url
 * @param mixed $login
 * @param mixed $pass
 * @param string $useragent
 * @return
 */
 public function __construct($url, $login, $pass, $useragent = '')
 {
 $this-&gt;url = $url;
 $this-&gt;login = trim($login);
 $this-&gt;pass = trim($pass);
 $this-&gt;useragent = (!$useragent)?'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)':$useragent;
 $this-&gt;rpc = new IXR_Client($this-&gt;url, false, 80, $this-&gt;useragent);
 }
 /**
 * WordPress_client::list_methods()
 *
 * @return
 */
 public function list_methods()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;system.listMethods&quot;);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Error ( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot; ) : &quot;;
 $this-&gt;erreurs[] = $this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 exit;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::verif_rpc()
 *
 * @return
 */
 public function verif_rpc()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getUsersBlogs&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 return false;
 }
 return true;
 }
 /**
 * WordPress_client::get_erreurs()
 *
 * @return
 */
 public function get_erreurs()
 {
 return $this-&gt;erreurs;
 }
 /**
 * WordPress_client::poster_article()
 *
 * @param mixed $titre
 * @param mixed $categorie
 * @param mixed $article
 * @return
 */
 public function poster_article($titre, $categorie = array(1), $article)
 {
 if (!is_int($categorie))
 {
 $this-&gt;erreurs[] = &quot;votre catégorie doit être un nombre.&quot;;
 }
 $status = $this-&gt;rpc-&gt;query(&quot;blogger.newPost&quot;,
 &quot;&quot;,
 &quot;&quot;,
 $this-&gt;login,
 $this-&gt;pass,
 &quot;&lt;title&gt;&quot;.$this-&gt;formate($titre).&quot;&lt;/title&gt;
 &lt;category&gt;$categorie&lt;/category&gt;&quot;.$this-&gt;formate($article),
 1);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Votre Article $titre semble posté sur votre blog mais une erreur dans la réponse renvoyée par votre Blog est survenue :&quot;;
 $this-&gt;erreurs[] = &quot;Erreur ( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot; ) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::poster_commentaire()
 *
 * @param mixed $author_mail
 * @param mixed $author_name
 * @param mixed $author_url
 * @param mixed $content
 * @return
 */
 public function poster_commentaire($author_mail, $author_name, $author_url, $content)
 {
 $articles = $this-&gt;recents_articles(5);
 foreach ($articles as $article)
 {
 $ids[] = $article['postid'];
 }
 $ids = (!is_array($ids))?(array)$ids:$ids;
 $post_id = array_rand(array_flip($ids), 1);
 if (!is_int($post_id))
 {
 $this-&gt;erreurs[] = &quot;souci au niveau de l'id.&quot;;
 }
 $comment['author'] = $author_name;
 $comment['author_email'] = $author_mail;
 $comment['author_url'] = $author_url;
 $comment['content'] = $content;
 $status = $this-&gt;rpc-&gt;query(&quot;wp.newComment&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass, $post_id,
 $comment);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur de commentaire :&quot;;
 $this-&gt;erreurs[] = &quot;Erreur ( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot; ) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 else
 {
 $this-&gt;editer_commentaire($this-&gt;rpc-&gt;getResponse(), $author_mail, $author_name,
 $author_url, $content);
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::editer_commentaire()
 *
 * @param mixed $post_id
 * @param mixed $author_mail
 * @param mixed $author_name
 * @param mixed $author_url
 * @param mixed $content
 * @return
 */
 public function editer_commentaire($post_id, $author_mail, $author_name, $author_url,
 $content)
 {
 if (!is_int($post_id))
 {
 $this-&gt;erreurs[] = &quot;L'id doit être un nombre.&quot;;
 }
 $comment['author'] = $author_name;
 $comment['author_email'] = $author_mail;
 $comment['author_url'] = $author_url;
 $comment['content'] = $content;
 $status = $this-&gt;rpc-&gt;query(&quot;wp.editComment &quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass, $post_id, $comment);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur de commentaire :&quot;;
 $this-&gt;erreurs[] = &quot;Erreur ( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot; ) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::recents_articles()
 *
 * @param mixed $nombre
 * @return
 */
 public function recents_articles($nombre)
 {
 $status = $this-&gt;rpc-&gt;query(&quot;blogger.getRecentPosts&quot;, &quot;&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass, $nombre);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur ( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot; ) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::recents_comments()
 *
 * @return
 */
 public function recents_comments()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getComments&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur ( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot; ) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::lister_categories()
 *
 * @return
 */
 public function lister_categories()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getCategories&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::lister_tags()
 *
 * @return
 */
 public function lister_tags()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getTags&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 else
 {
 return $this-&gt;rpc-&gt;getResponse();
 }
 }
 /**
 * WordPress_client::get_options()
 *
 * @param mixed $name
 * @return
 */
 public function get_options($name)
 {
 if (!$name)
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getOptions&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass);
 }
 else
 {
 $names = (!is_array($name))?(array )$name:$name;
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getOptions&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass, $names);
 }
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::get_authors()
 *
 * @return
 */
 public function get_authors()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getAuthors&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::get_theme()
 *
 * @return
 */
 public function get_theme()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getPageTemplates&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::get_users()
 *
 * @return
 */
 public function get_users()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.getUsersBlogs&quot;, $this-&gt;login, $this-&gt;pass);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::suggest_cat()
 *
 * @return
 */
 public function suggest_cat()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.suggestCategories&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass, 'twitter', 5);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur( &quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;) : &quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::set_options()
 *
 * @return
 */
 public function set_options()
 {
 $status = $this-&gt;rpc-&gt;query(&quot;wp.setOptions&quot;, &quot;&quot;, $this-&gt;login, $this-&gt;pass, $option);
 if (!$status)
 {
 $this-&gt;erreurs[] = &quot;Erreur(&quot;.$this-&gt;rpc-&gt;getErrorCode().&quot;):&quot;.$this-&gt;rpc-&gt;getErrorMessage().&quot;\n&quot;;
 }
 return $this-&gt;rpc-&gt;getResponse();
 }
 /**
 * WordPress_client::formate()
 *
 * @param mixed $texte
 * @return
 */
 private function formate($texte)
 {
 $cur_encoding = mb_detect_encoding($texte);
 $rep = ($cur_encoding == &quot;UTF-8&quot; &amp;&amp; mb_check_encoding($texte, &quot;UTF-8&quot;))? $texte : utf8_encode($texte);
 return $rep;
 }
 /**
 * WordPress_client::verif_url()
 * @tutorial permet de vérifier si une url est accessible
 * avant de faire toute autre opération dessus.
 * @param mixed $url
 * @return code header ( 200,302,404,... )
 */
 public function verif_url($url)
 {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, true);
 curl_setopt($ch, CURLOPT_NOBODY, true);
 curl_setopt($ch, CURLOPT_USERAGENT, $this-&gt;useragent);
 curl_setopt($ch, CURLOPT_REFERER, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_AUTOREFERER, true);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
 curl_setopt($ch, CURLOPT_TIMEOUT, 20);
 curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
 $data = curl_exec($ch);
 curl_close($ch);
 return (preg_match(&quot;/HTTP\/1\.[1|0]\s(\d{3})/&quot;, $data, $matches))?$matches[1]:'error';
 }
}

?&gt;
</pre>
<p>Vous le remarquerez, cette classe est un bout d&#8217;une plus grosse bébête qui me convient un peu mieux que le fameux Script White Hat&#8230;</p>
<p>Il vous faut donc la lib IXR http://scripts.incutio.com/xmlrpc/ pour faire marcher la chose.</p>
<p>Le xmlrpc.php de WordPress empéchera tout webmaster connecté de publier sous un autre identifiant que &laquo;&nbsp;Admin&nbsp;&raquo; ou ce que vous avez mis par défaut dans votre configuration.</p>
<p>Pour celà, nous postons le commentaire en tant qu&#8217;admin, puis nous le modifions directement derrière avec l&#8217;id qui nous est retrourné par le Blog.</p>
<p>Exemple:</p>
<pre class="brush: php; title: ;">

$go = new WordPress_client($url, $login, $pass, $useragent = 'Google.com');
 //echo &quot;Commentaire sur $url&lt;hr/&gt;&quot;;

 if(!$go-&gt;poster_commentaire($email,$auteur,$url_commentaire,$commentaire))
 {
 echo &quot;&lt;p&gt;PAS OK sur $url&lt;/p&gt;&quot;;
 }
 else
 {
 echo &quot;&lt;p&gt;OK sur $url&lt;/p&gt;&quot;;
 }
</pre>
<p>Si vous êtes ici, vous codez surement donc je ne m&#8217;étalerais pas plus sur le fonctionnement que je vous laisse découvrir.</p>
<p>Cette classe est une première version de ce que j&#8217;ai pu faire pour mon projet personnel, je ne vais pas tout vous dire de suite tout de même.</p>
<p>à tantôt comme dirait <a href="http://motercalo.la-faucheuse.fr/">Motercalo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scripts-marketing.com/lfe-une-classe-et-un-outil-pour-faire-vivre-votre-ferme/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Content Spinning ou la réécriture d&#8217;article pour le Web</title>
		<link>http://www.scripts-marketing.com/content-spinning-ou-la-reecriture-darticle-pour-le-web/</link>
		<comments>http://www.scripts-marketing.com/content-spinning-ou-la-reecriture-darticle-pour-le-web/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 11:06:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Classe SEO php]]></category>
		<category><![CDATA[Fonctions Sympas]]></category>
		<category><![CDATA[content spinning]]></category>
		<category><![CDATA[réécriture d'article php]]></category>
		<category><![CDATA[spinning content]]></category>

		<guid isPermaLink="false">http://www.scripts-marketing.com/?p=49</guid>
		<description><![CDATA[Une petite fonction pour réécrire rapidement des articles après transformation! Pokerice Utilisation des balises {} pour le contenant et tirage au sort par &#124;&#124; ==&#62; résultat: {mon&#124;ton&#124;son} ETC&#8230; function Spin($txt){ $test = preg_match_all(&#34;#\{(.*?)\}#&#34;, $txt, $out); if (!$test) return $txt; $atrouver = array(); $aremplacer = array(); foreach($out[0] as $id =&#62; $match) { $choisir = explode(&#34;&#124;&#34;, $out[1][$id]); [...]]]></description>
			<content:encoded><![CDATA[<h1>Une petite fonction pour réécrire rapidement des articles après transformation!</h1>
<p><a href="http://www.la-faucheuse.fr/pokerice/">Pokerice</a><br />
Utilisation des balises {} pour le contenant et tirage au sort par || ==&gt; résultat: {mon|ton|son} ETC&#8230;</p>
<pre class="brush: php; title: ;">
function Spin($txt){

	$test = preg_match_all(&quot;#\{(.*?)\}#&quot;, $txt, $out);

	if (!$test) return $txt;

	$atrouver = array();
	$aremplacer = array();

	foreach($out[0] as $id =&gt; $match)
	{
		$choisir = explode(&quot;|&quot;, $out[1][$id]);
		$atrouver[]=$match;
		$aremplacer[]=trim($choisir[rand(0, count($choisir)-1)]);
	}

	return str_replace($atrouver, $aremplacer, $txt);
}
</pre>
<p>Utilisation:</p>
<pre class="brush: php; title: ;">
echo Spin('{Salut|Coucou|Bonjour} {comment tu vas ?|comment vas-tu ?|est-ce-que ca va ?}');
</pre>
<p>Bientôt en ligne ici un plugin WordPress permettant l&#8217;importation d&#8217;articles rédigés selon cette méthode&#8230;</p>
<p>Scheduler intégré pour automatiser un blog complet <img src='http://www.scripts-marketing.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.scripts-marketing.com/content-spinning-ou-la-reecriture-darticle-pour-le-web/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

