Affichage aléatoire d’un string.
Posté par admin dans Fonctions Sympas, Fonctions Utiles En Php le 31 août 2010
Vous le savez déjà, pour avoir un nombre aléatoire en PHP, il est facile d’utiliser la fonction Rand(min,max) qui tirera au sort un nombre entre min & max
C’est un peu plus complexe pour un tableau de valeur…Mais l’utilité est géniale:
- Pour faire du split testing
- Pour afficher des pub aléatoirement
- Pour faire toute sorte de chose que votre imagination vous dictera ( pseudo aléatoire dans un script d’auto-comment par exemple
)
Voici donc la fonction qui utilise un tableau:
<?php
function get_rand($array)
{
if (!is_array($array) array($array);//Si ce n'est pas un tableau, on transforme.
return $array[array_rand($array)];//Tirage au sort
}
?>
Utilisation:
<?php
$valeurs = array('toto','titi','tutu','tata','tete');
echo get_rand($valeurs);//affichera toto ou titi ou tutu etc...
?>
C’est tout simple mais réellement éfficace…Ce site étant un peu mon carnet de fonction, je la retrouverais donc pour mes développements futurs.
A vos commentaires.
LFE, une classe et un outil pour faire vivre votre ferme.
Posté par admin dans Classe SEO php le 21 mai 2010
Peut-être ne connaissez-vous pas cet outil de création automatique de Blog à la volée…Dans ce cas, cette petite classe ne vous sera pas d’une grande utilité ( quoi que )
Utilisateurs de LFE, Vous avez des Blogs non ? Personnellement j’ai arreté de compter après 15 000…Alors ces blogs sont bien sympathiques…Reste qu’il ne sont pas très vivants. Des BL dans les posts, cool, des commentaires ? NADA … Un blog qui ne vit pas devient très vite soupçonneux pour le Webmaster du WPMU que vous êtes en train de Spammer visiter.
Alors pour faire vivre ces blogs, j’ai décidé de me coder un ch’tite class pour poster des commentaire anonymement sur mes blogs…Impossible soit dit en passant en RPC, sauf si on connait l’astuce.
A noter que fada de Dofollow et en plein dans le code, j’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 Black Hat Seo pour la remarque qui m’a fait percuter ).
Je post et j’explique ensuite:
<?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->url = $url;
$this->login = trim($login);
$this->pass = trim($pass);
$this->useragent = (!$useragent)?'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)':$useragent;
$this->rpc = new IXR_Client($this->url, false, 80, $this->useragent);
}
/**
* Wordpress_client::list_methods()
*
* @return
*/
public function list_methods()
{
$status = $this->rpc->query("system.listMethods");
if (!$status)
{
$this->erreurs[] = "Error ( ".$this->rpc->getErrorCode()." ) : ";
$this->erreurs[] = $this->rpc->getErrorMessage()."\n";
exit;
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::verif_rpc()
*
* @return
*/
public function verif_rpc()
{
$status = $this->rpc->query("wp.getUsersBlogs", $this->login, $this->pass);
if (!$status)
{
return false;
}
return true;
}
/**
* Wordpress_client::get_erreurs()
*
* @return
*/
public function get_erreurs()
{
return $this->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->erreurs[] = "votre catégorie doit être un nombre.";
}
$status = $this->rpc->query("blogger.newPost",
"",
"",
$this->login,
$this->pass,
"<title>".$this->formate($titre)."</title>
<category>$categorie</category>".$this->formate($article),
1);
if (!$status)
{
$this->erreurs[] = "Votre Article $titre semble posté sur votre blog mais une erreur dans la réponse renvoyée par votre Blog est survenue :";
$this->erreurs[] = "Erreur ( ".$this->rpc->getErrorCode()." ) : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->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->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->erreurs[] = "souci au niveau de l'id.";
}
$comment['author'] = $author_name;
$comment['author_email'] = $author_mail;
$comment['author_url'] = $author_url;
$comment['content'] = $content;
$status = $this->rpc->query("wp.newComment", "", $this->login, $this->pass, $post_id,
$comment);
if (!$status)
{
$this->erreurs[] = "Erreur de commentaire :";
$this->erreurs[] = "Erreur ( ".$this->rpc->getErrorCode()." ) : ".$this->rpc->getErrorMessage()."\n";
}
else
{
$this->editer_commentaire($this->rpc->getResponse(), $author_mail, $author_name,
$author_url, $content);
}
return $this->rpc->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->erreurs[] = "L'id doit être un nombre.";
}
$comment['author'] = $author_name;
$comment['author_email'] = $author_mail;
$comment['author_url'] = $author_url;
$comment['content'] = $content;
$status = $this->rpc->query("wp.editComment ", "", $this->login, $this->pass, $post_id, $comment);
if (!$status)
{
$this->erreurs[] = "Erreur de commentaire :";
$this->erreurs[] = "Erreur ( ".$this->rpc->getErrorCode()." ) : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::recents_articles()
*
* @param mixed $nombre
* @return
*/
public function recents_articles($nombre)
{
$status = $this->rpc->query("blogger.getRecentPosts", "", "", $this->login, $this->pass, $nombre);
if (!$status)
{
$this->erreurs[] = "Erreur ( ".$this->rpc->getErrorCode()." ) : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::recents_comments()
*
* @return
*/
public function recents_comments()
{
$status = $this->rpc->query("wp.getComments", "", $this->login, $this->pass);
if (!$status)
{
$this->erreurs[] = "Erreur ( ".$this->rpc->getErrorCode()." ) : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::lister_categories()
*
* @return
*/
public function lister_categories()
{
$status = $this->rpc->query("wp.getCategories", "", $this->login, $this->pass);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::lister_tags()
*
* @return
*/
public function lister_tags()
{
$status = $this->rpc->query("wp.getTags", "", $this->login, $this->pass);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
else
{
return $this->rpc->getResponse();
}
}
/**
* Wordpress_client::get_options()
*
* @param mixed $name
* @return
*/
public function get_options($name)
{
if (!$name)
{
$status = $this->rpc->query("wp.getOptions", "", $this->login, $this->pass);
}
else
{
$names = (!is_array($name))?(array )$name:$name;
$status = $this->rpc->query("wp.getOptions", "", $this->login, $this->pass, $names);
}
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::get_authors()
*
* @return
*/
public function get_authors()
{
$status = $this->rpc->query("wp.getAuthors", "", $this->login, $this->pass);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::get_theme()
*
* @return
*/
public function get_theme()
{
$status = $this->rpc->query("wp.getPageTemplates", "", $this->login, $this->pass);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::get_users()
*
* @return
*/
public function get_users()
{
$status = $this->rpc->query("wp.getUsersBlogs", $this->login, $this->pass);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::suggest_cat()
*
* @return
*/
public function suggest_cat()
{
$status = $this->rpc->query("wp.suggestCategories", "", $this->login, $this->pass, 'twitter', 5);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::set_options()
*
* @return
*/
public function set_options()
{
$status = $this->rpc->query("wp.setOptions", "", $this->login, $this->pass, $option);
if (!$status)
{
$this->erreurs[] = "Erreur(".$this->rpc->getErrorCode()."):".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* Wordpress_client::formate()
*
* @param mixed $texte
* @return
*/
private function formate($texte)
{
$cur_encoding = mb_detect_encoding($texte);
$rep = ($cur_encoding == "UTF-8" && mb_check_encoding($texte, "UTF-8"))? $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->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("/HTTP\/1\.[1|0]\s(\d{3})/", $data, $matches))?$matches[1]:'error';
}
}
?>
Vous le remarquerez, cette classe est un bout d’une plus grosse bébête qui me convient un peu mieux que le fameux Script White Hat…
Il vous faut donc la lib IXR http://scripts.incutio.com/xmlrpc/ pour faire marcher la chose.
Le xmlrpc.php de Wordpress empéchera tout webmaster connecté de publier sous un autre identifiant que « Admin » ou ce que vous avez mis par défaut dans votre configuration.
Pour celà, nous postons le commentaire en tant qu’admin, puis nous le modifions directement derrière avec l’id qui nous est retrourné par le Blog.
Exemple:
$go = new Wordpress_client($url, $login, $pass, $useragent = 'Google.com');
//echo "Commentaire sur $url<hr/>";
if(!$go->poster_commentaire($email,$auteur,$url_commentaire,$commentaire))
{
echo "<p>PAS OK sur $url</p>";
}
else
{
echo "<p>OK sur $url</p>";
}
Si vous êtes ici, vous codez surement donc je ne m’étalerais pas plus sur le fonctionnement que je vous laisse découvrir.
Cette classe est une première version de ce que j’ai pu faire pour mon projet personnel, je ne vais pas tout vous dire de suite tout de même.
à tantôt comme dirait Motercalo
Les Commentaires