<?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>&#60;? PHPexo</title>
	<atom:link href="http://www.phpexo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpexo.com</link>
	<description>Le développement web pour débutant</description>
	<lastBuildDate>Sun, 27 Mar 2011 11:03:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>IE et page 404 qui ne s&#8217;affiche pas</title>
		<link>http://www.phpexo.com/tutoriels/wordpress/ie-et-page-404-qui-ne-saffiche-pas/</link>
		<comments>http://www.phpexo.com/tutoriels/wordpress/ie-et-page-404-qui-ne-saffiche-pas/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 10:53:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[page-personnalisée]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=159</guid>
		<description><![CDATA[J&#8217;ai rencontré un petit soucis d&#8217;affichage sur le navigateur Internet Explorer 8 avec la page 404 de wordpress, sur les autres navigateur aucun problème. IE depuis sa version 5 insisterait pour afficher sa propre page &#171;&#160;404&#8243;.  Il y a quelques personnes qui prétendent que sur une URL inexistante parvenant à votre site, Internet Explorer évalue [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-167" title="wordpress" src="http://www.phpexo.com/wp-content/uploads/2011/03/wordpress-300x200.jpg" alt="" width="300" height="200" />J&#8217;ai rencontré un petit soucis d&#8217;affichage sur le navigateur Internet Explorer 8 avec la page 404 de wordpress, sur les autres navigateur aucun problème.</p>
<p>IE depuis sa version 5 insisterait pour afficher sa propre page &laquo;&nbsp;404&#8243;.  Il y a quelques personnes qui prétendent que sur une URL inexistante parvenant à votre site, Internet Explorer évalue rapidement la page d&#8217;erreur personnalisée et si celle-ci fait moins de 512 octets dans la taille totale il renverra sa propre page d&#8217;erreur. La solution paraît simple, créer une page &laquo;&nbsp;404&#8243; supérieure à 512 octets <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Cela semblerait la solution la plus probable, mais il n&#8217;en est rien comme je l&#8217;ai découvert. Après avoir fait un test avec une large page avec du texte généré, celle-ci se trouvait bien supérieur aux 512 octets, mais IE a persisté à me renvoyer sa propre page &laquo;&nbsp;404&#8243;.</p>
<p>Comment utiliser sa propre page personnalisée, ou la page d&#8217;erreur &laquo;&nbsp;404&#8243; de wordpress ? Ajouter se code suivant, tout en haut de votre fichier &laquo;&nbsp;<em>Modèle pour l’erreur 404</em>&laquo;&nbsp;  <strong>404.php</strong></p>
<pre class="brush: php; title: ;">
&lt;?php ob_start(); ?&gt;
&lt;?php header(&quot;HTTP/1.1 404 Not Found&quot;); ?&gt;
</pre>
<p>Et voilà, IE affichera désormais votre page &laquo;&nbsp;404&#8243; de votre blog wordpress. <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/tutoriels/wordpress/ie-et-page-404-qui-ne-saffiche-pas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jFormer le framework open source jquery spécial formulaire</title>
		<link>http://www.phpexo.com/news/jformer-le-framework-open-source-jquery-special-formulaire/</link>
		<comments>http://www.phpexo.com/news/jformer-le-framework-open-source-jquery-special-formulaire/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 22:08:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[formulaire]]></category>
		<category><![CDATA[framework jquery]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=151</guid>
		<description><![CDATA[JFormer est un framework de formulaire, écrit, en jQuery qui vous permet rapidement de produire aux standards des formulaires conformes. En démultipliant les dernières techniques dans le web design, jFormer vous aide à créer des formulaires Web qui valide le Processus: côté de client, côté de serveur,  sans changer de pages (en utilisant AJAX). La [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-153" title="jquery-form" src="http://www.phpexo.com/wp-content/uploads/2011/03/jquery-form.png" alt="jFormer" width="384" height="219" /></p>
<p><a title="jFormer website" href="http://www.jformer.com/" target="_blank">JFormer</a> est un framework de formulaire, écrit, en jQuery qui vous permet rapidement de produire aux standards des formulaires conformes. En démultipliant les dernières techniques dans le web design, jFormer vous aide à créer des formulaires Web qui valide le Processus: côté de client, côté de serveur,  sans changer de pages (en utilisant AJAX).</p>
<p>La demo de <a title="jFormer" href="http://www.jformer.com/demos/" target="_blank">jFormer</a></p>
<p>Avec 18Ko gzipped, <strong>jFormer </strong>est une des premières structures utilisant la dernière technologie de compression JavaScript de Google. Vous pouvez utiliser n&#8217;importe quel projet de <strong>jFormer </strong>conformément à la Licence de MIT(de Massachusetts Institute of Technology) ou conformément à la Licence de Grand public de GNU (GPL) Version 2.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/news/jformer-le-framework-open-source-jquery-special-formulaire/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CMS open source pour monter un site web gouvernemental</title>
		<link>http://www.phpexo.com/news/cms-open-source-pour-monter-un-site-web-gouvernemental/</link>
		<comments>http://www.phpexo.com/news/cms-open-source-pour-monter-un-site-web-gouvernemental/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 21:51:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[openpublic]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=142</guid>
		<description><![CDATA[&#160; Et non, ce n&#8217;est pas une blague Voici un cms basé sur drupal, pour construire un site web gouvernemental. En 2009, la Maison Blanche choisie Drupal comme la plate-forme open source pour son site Web. Si la nation la plus puissante utilise drupal pour site web et la gestion de son contenu, pourquoi pas [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.openpublicapp.com/" target="_blank"><img class="aligncenter size-full wp-image-144" title="cms-pour-gouvernements" src="http://www.phpexo.com/wp-content/uploads/2011/03/cms-for-governments.png" alt="" width="383" height="173" /></a></p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: left;">Et non, ce n&#8217;est pas une blague <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Voici un cms basé sur drupal, pour construire un site web gouvernemental.<span id="more-142"></span></p>
<p>En 2009, la Maison Blanche choisie Drupal comme la plate-forme open source pour son site Web. Si la nation la plus puissante utilise drupal pour site web et la gestion de son contenu, pourquoi pas vous ?</p>
<p><a title="OpenPublic" href="http://www.openpublicapp.com/" target="_blank">OpenPublic</a> est le produit du travail d&#8217;une décennie dans le réseau open source et l&#8217;expérience collective de construire des sites Web sécurisés, évolutifs, transparents pour tous les secteurs de gouvernement et les citoyens qu&#8217;ils servent.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/news/cms-open-source-pour-monter-un-site-web-gouvernemental/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Envoyer un sms avec php</title>
		<link>http://www.phpexo.com/tutoriels/envoyer-un-sms-avec-php/</link>
		<comments>http://www.phpexo.com/tutoriels/envoyer-un-sms-avec-php/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 22:15:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=99</guid>
		<description><![CDATA[Comment envoyer des SMS avec PHP ? Le message texte ou (SMS) est devenu extrêmement étendu à travers le monde entier. au point où le nombre d&#8217;applications pour notifier les utilisateurs qui intègre le sms augmentent, ventes ou coupons directement par un service mobile. Dans ce tutoriel, nous développeront les principes de base pour envoyer [...]]]></description>
			<content:encoded><![CDATA[<p>Comment envoyer des SMS avec PHP ?<br />
Le message texte ou (SMS) est devenu extrêmement étendu à travers le monde entier.<br />
au point où le nombre d&#8217;applications pour notifier les utilisateurs qui intègre le sms augmentent, ventes ou coupons directement par un service mobile.<br />
Dans ce tutoriel, nous développeront les principes de base  pour envoyer des sms avec PHP.<br />
Vue d&#8217;ensemble</p>
<p>Envoyer un sms est en réalité assez facile.<br />
Ci-dessous est un diagramme simplifié qui montre comment est envoyé un message d&#8217;une application Web à un dispositif</p>
<p><a href="http://www.phpexo.com/wp-content/uploads/2011/03/3-sms-avec-php-http-vers-telephone.png"><img class="aligncenter size-medium wp-image-100" title="3-sms-avec-php-http-vers-telephone" src="http://www.phpexo.com/wp-content/uploads/2011/03/3-sms-avec-php-http-vers-telephone-300x168.png" alt="" width="300" height="168" /></a></p>
<ul>
<li>Nous décomposeront l’envoi ainsi :</li>
<li>Le message est composé en utilisant une application Web qui  est stockée et exécutée sur un serveur HTTP et envoyée ensuite par  Internet (&laquo;&nbsp;le nuage&nbsp;&raquo;) comme un message électronique.</li>
<li>Le courrier électronique est reçu par une Passerelle de  Service de Message Courte (la Passerelle de SMS), qui convertit le  message d&#8217;un message électronique à un message de SMS.</li>
<li>Le SMS est alors remis à un Centre de Service de Message Court  (SMSC), qui est un serveur qui guide des données aux dispositifs  mobiles spécifiques.</li>
<li>Le message est finalement transmis sur le réseau sans fil au destinataire.</li>
<li>La plupart des réseaux sans fil ont une passerelle de SMS par  laquelle les messages électroniques peuvent être envoyés comme des sms à  un dispositif mobile.</li>
<li>C&#8217;est agréable, parce que, du point de vue d&#8217;un développeur,  c&#8217;est généralement gratuit cependant, pour l&#8217;utilisateur final le  service reste payant.</li>
<li>Les tarifs s&#8217;appliquent toujours au destinataire du message et  on facturera les messages envoyés via le courrier électronique comme un  sms de non-réseau.</li>
</ul>
<h2>Email à SMS</h2>
<p>Pour envoyer un SMS via le mail, il faudra disposez de deux choses :</p>
<ul>
<li>Le numéro du destinataire</li>
<li>Sa plateforme de service (le fournisseur du réseau sans-fil du destinataire).</li>
</ul>
<p>Exemple : téléphone@fournisseur.com</p>
<p>Pour envoyer un texte, vous pourriez simplement ajouter  3855550168@vtext.com à n&#8217;importe quel client de courrier électronique,  puis de taper un message et d’envoyer. Cela enverra un sms au numéro de  téléphone +1 (385) 555-0168 sur le Réseau Sans fil Verizon.<br />
<strong>Php Fonction mail()</strong></p>
<p>Prenons les choses par étape. En utilisant la Passerelle de SMS,  nous pouvons envoyer un sms via le courrier électronique utilisant la  fonction <a href="#" onmouseout="php_tooltip.hide();" onmouseover="php_tooltip.show(this);">MAIL</a> de PHP. La fonction MAIL a la signature suivante :</p>
<pre class="brush: php; title: ;">
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
</pre>
<p>Pour plus d’info sur la fonction <a href="#" onmouseout="php_tooltip.hide();" onmouseover="php_tooltip.show(this);">MAIL</a> !</p>
<p>$to Définit le destinataire ou les destinataires du message. Des exemples :</p>
<p>*  user@example.com<br />
*  user1@example.com, user2@example.com<br />
*  User<br />
*  User1 , User2</p>
<p>$subject est plutôt évident; cela devrait contenir le sujet désiré. Cependant, le SMS n&#8217;exige pas de sujet.</p>
<p>$message contient le message à envoyer. Comme mentionné dans le manuel PHP, &laquo;&nbsp;chaque ligne devrait être séparée avec un LF (n). Les lignes ne doivent pas dépasser 70 caractères.&nbsp;&raquo;<br />
Pour reproduire la fonctionnalité précédente, nous pourrions écrire le code de PHP suivant :</p>
<pre class="brush: php; title: ;">
mail( '3855550168@vtext.com', '', 'Testing' );
</pre>
<h2>Une commande de test</h2>
<p>Exécutons un test avec PHP pour vérifier que tout est correctement installé  et que la fonction MAIL, enverra bien un sms. En utilisant le code suivant, nous pouvons envoyer :</p>
<pre class="brush: php; title: ;">
&lt;?php
var_dump( mail( '##########@vtext.com', '', 'This was sent with PHP.' ) ); // bool(true)
?&gt;
</pre>
<h2>Création d&#8217;un formulaire d&#8217;envoi</h2>
<p>Un formulaire simple avec un style css pour la mise en page, et voilà une application d’envoi de sms par e-mail.<br />
Le formulaire:</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;container&quot;&gt;
&lt;h1&gt;Sending SMS with PHP&lt;/h1&gt;
&lt;form method=&quot;post&quot;&gt;
&lt;ul&gt;
	&lt;li&gt;
        &lt;label for=&quot;phoneNumber&quot;&gt;Phone Number&lt;/label&gt;
        &lt;input id=&quot;phoneNumber&quot; name=&quot;phoneNumber&quot; type=&quot;text&quot; /&gt;&lt;/li&gt;
	&lt;li&gt;
       &lt;label for=&quot;carrier&quot;&gt;Carrier&lt;/label&gt;
        &lt;input id=&quot;carrier&quot; name=&quot;carrier&quot; type=&quot;text&quot; /&gt;&lt;/li&gt;
	&lt;li&gt;
        &lt;label for=&quot;smsMessage&quot;&gt;Message&lt;/label&gt;
        &lt;textarea id=&quot;smsMessage&quot; cols=&quot;45&quot; rows=&quot;15&quot; name=&quot;smsMessage&quot;&gt;&lt;/textarea&gt;&lt;/li&gt;
	&lt;li&gt;&lt;input id=&quot;sendMessage&quot; name=&quot;sendMessage&quot; type=&quot;submit&quot; value=&quot;Send Message&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/form&gt;&lt;/div&gt;
</pre>
<p>Le CSS:</p>
<pre class="brush: css; title: ;">
body {

  margin: 0;

  padding: 3em 0;

  color: #fff;

  background: #0080d2;

  font-family: Georgia, Times New Roman, serif;

 }

 #container {

  width: 600px;

  background: #fff;

  color: #555;

  border: 3px solid #ccc;

  -webkit-border-radius: 10px;

  -moz-border-radius: 10px;

  -ms-border-radius: 10px;

  border-radius: 10px;

  border-top: 3px solid #ddd;

  padding: 1em 2em;

  margin: 0 auto;

  -webkit-box-shadow: 3px 7px 5px #000;

  -moz-box-shadow: 3px 7px 5px #000;

  -ms-box-shadow: 3px 7px 5px #000;

  box-shadow: 3px 7px 5px #000;

 }

 ul {

  list-style: none;

  padding: 0;

 }

 ul &gt; li {

  padding: 0.12em 1em

 }

 label {

  display: block;

  float: left;

  width: 130px;

 }

 input, textarea {

  font-family: Georgia, Serif;

 }
</pre>
<p>Cela nous donnera le formulaire suivant:</p>
<p><a href="http://www.phpexo.com/wp-content/uploads/2011/03/Formulaire_envoi_sms_php.jpg"><img class="aligncenter size-medium wp-image-104" title="Formulaire_envoi_sms_php" src="http://www.phpexo.com/wp-content/uploads/2011/03/Formulaire_envoi_sms_php-300x221.jpg" alt="" width="300" height="221" /></a>Le Script:</p>
<pre class="brush: php; title: ;">
&lt;?php

if ( isset( $_REQUEST ) &amp;&amp; !empty( $_REQUEST ) ) {
 if (
 isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) &amp;&amp;
  !empty( $_REQUEST['phoneNumber'] ) &amp;&amp;
  !empty( $_REQUEST['carrier'] )
 ) {
  $message = wordwrap( $_REQUEST['smsMessage'], 70 );
  $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier'];
  $result = @mail( $to, '', $message );
  print 'Message was sent to ' . $to;
 } else {
  print 'Not all information was submitted.';
 }
}

?&gt;
&lt;!DOCTYPE html&gt;
</pre>
<p>Le script vérifie d&#8217;abord si le formulaire a été soumise.<br />
-Si oui, il vérifie la présence du numéro de téléphone, du fournisseur et du message. C&#8217;est utile dans le cas où il peut y avoir plus d’un formulaire par page.<br />
Si le numéro de téléphone, le fournisseur et  le message sont bien remplis, le script devrait alors essayer d’envoyer notre message.<br />
L&#8217;argument de message dans la fonction mail doit être de 70 caractères par ligne. Nous pouvons césurer le message en utilisant la fonction <a href="#" onmouseout="php_tooltip.hide();" onmouseover="php_tooltip.show(this);">wordwrap</a> de php.<br />
Le numéro de téléphone et le fournisseur sont concaténés, et ensuite le message est envoyé utilisant la fonction MAIL.<br />
Si des données manquent ou ne peuvent pas être validés, le script retourne simplement Une erreur.<br />
La fonction MAIL retourne un booléen TRUE ou FALSE. La valeur est stockée dans $result dans le cas où j&#8217;ai besoin de vérifier que le message a été en fait envoyé.<br />
La méthode mail notifie seulement si le message a été envoyé ou non. Il ne fournit pas de façon de vérifier si le message a été réceptionné par le serveur du destinataire ou la boîte à la lettre.<br />
Code Final:</p>
<pre class="brush: php; title: ;">
&lt;?php

if ( isset( $_REQUEST ) &amp;&amp; !empty( $_REQUEST ) ) {
 if (
 isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) &amp;&amp;
  !empty( $_REQUEST['phoneNumber'] ) &amp;&amp;
  !empty( $_REQUEST['carrier'] )
 ) {
  $message = wordwrap( $_REQUEST['smsMessage'], 70 );
  $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier'];
  $result = @mail( $to, '', $message );
  print 'Message was sent to ' . $to;
 } else {
  print 'Not all information was submitted.';
 }
}
?&gt;
&lt;!DOCTYPE html&gt;
 &lt;head&gt;
   &lt;meta charset=&quot;utf-8&quot; /&gt;
   &lt;style&gt;
    body {
     margin: 0;
     padding: 3em 0;
     color: #fff;
     background: #0080d2;
     font-family: Georgia, Times New Roman, serif;
    }

    #container {
     width: 600px;
     background: #fff;
     color: #555;
     border: 3px solid #ccc;
     -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
     -ms-border-radius: 10px;
     border-radius: 10px;
     border-top: 3px solid #ddd;
     padding: 1em 2em;
     margin: 0 auto;
     -webkit-box-shadow: 3px 7px 5px #000;
     -moz-box-shadow: 3px 7px 5px #000;
     -ms-box-shadow: 3px 7px 5px #000;
     box-shadow: 3px 7px 5px #000;
    }

    ul {
     list-style: none;
     padding: 0;
    }

    ul &gt; li {
     padding: 0.12em 1em
    }

    label {
     display: block;
     float: left;
     width: 130px;
    }

    input, textarea {
     font-family: Georgia, Serif;
    }

--&gt;

&lt;div id=&quot;container&quot;&gt;
&lt;h1&gt;Sending SMS with PHP&lt;/h1&gt;
&lt;form method=&quot;post&quot;&gt;
&lt;ul&gt;
	&lt;li&gt;
       &lt;label for=&quot;phoneNumber&quot;&gt;Phone Number&lt;/label&gt;
       &lt;input id=&quot;phoneNumber&quot; name=&quot;phoneNumber&quot; type=&quot;text&quot; /&gt;&lt;/li&gt;
	&lt;li&gt;
      &lt;label for=&quot;carrier&quot;&gt;Carrier&lt;/label&gt;
       &lt;input id=&quot;carrier&quot; name=&quot;carrier&quot; type=&quot;text&quot; /&gt;&lt;/li&gt;
	&lt;li&gt;
       &lt;label for=&quot;smsMessage&quot;&gt;Message&lt;/label&gt;
       &lt;textarea id=&quot;smsMessage&quot; cols=&quot;45&quot; rows=&quot;15&quot; name=&quot;smsMessage&quot;&gt;&lt;/textarea&gt;&lt;/li&gt;
	&lt;li&gt;&lt;input id=&quot;sendMessage&quot; name=&quot;sendMessage&quot; type=&quot;submit&quot; value=&quot;Send Message&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/form&gt;&lt;/div&gt;
</pre>
<p>Types d&#8217;erreurs:<br />
Types d&#8217;erreurs Pour utiliser la fonction MAIL, vous devez avoir un serveur de messagerie configuré. Si vous travaillez en local vous pourriez avoir des erreurs du genre:</p>
<pre class="brush: php; title: ;">Warning: mail() [function.mail]: Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:wampwwwsmsmail-test.php</pre>
<p>Vous devrez installer et configurer un serveur de courrier.<br />
Cependant, si vous travaillez sur votre machine locale, essayer avec XAMPP pourrait résoudre ce problème.<br />
Alternativement, essayez en installant le serveur Mercury Mail avec WAMP, MAMP ou sur une LAMPE (ou SAMP ou OAMP, etc).<br />
PHPMailer</p>
<p>Une autre option, utiliser PHPMAILER. Ci-dessous est un exemple de la façon d&#8217;utiliser PHPMAILER pour se connecter au serveur SMTP de Gmail et envoyer le message.<br />
Il s&#8217;agit simplement d&#8217;inclure une class dans notre script</p>
<pre class="brush: php; title: ;">
// Instantiate Class

 $mail = new PHPMailer();

 // Set up SMTP

 $mail-&gt;IsSMTP();                // Sets up a SMTP connection

 $mail-&gt;SMTPDebug  = 2;          // This will print debugging info

 $mail-&gt;SMTPAuth = true;         // Connection with the SMTP does require authorization

 $mail-&gt;SMTPSecure = &quot;tls&quot;;      // Connect using a TLS connection

 $mail-&gt;Host = &quot;smtp.gmail.com&quot;;

 $mail-&gt;Port = 587;

 $mail-&gt;Encoding = '7bit';       // SMS uses 7-bit encoding

 // Authentication

 $mail-&gt;Username   = &quot;email.address@gmail.com&quot;; // Login

 $mail-&gt;Password   = &quot;password&quot;; // Password

 // Compose

 $mail-&gt;Subject = &quot;Testing&quot;;     // Subject (which isn't required)

 $mail-&gt;Body = &quot;Testing&quot;;        // Body of our message

 // Send To

 $mail-&gt;AddAddress( &quot;##########@vtext.com&quot; ); // Where to send it

 var_dump( $mail-&gt;send() );      // Send!
</pre>
<p>Cela devrait retourner quelque chose comme :</p>
<p><a href="http://www.phpexo.com/wp-content/uploads/2011/03/2-sms-avec-php-phpmailer-resultat.png"><img class="aligncenter size-medium wp-image-106" title="2-sms-avec-php-phpmailer-resultat" src="http://www.phpexo.com/wp-content/uploads/2011/03/2-sms-avec-php-phpmailer-resultat-300x102.png" alt="" width="300" height="102" /></a>Cela peu prendre un certain temps pour fournir le rapport selon votre situation. Si vous faites des tests utiliser Gmail, Google a fourni des informations sur la connexion.</p>
<p>Conclusion:</p>
<p>Il y a plusieurs façon d&#8217;envoyer un sms par mail. Cette méthode fonctionne pour un certain nombre d&#8217;envoi de SMS (très probablement moins de 1,000 sms par mois).<br />
Utiliser un Fournisseur de Passerelle de SMS<br />
-Faire une recherche sur Google retournera quelques résultats.<br />
-La plupart des fournisseurs de passerelle de SMS incluent une API pour envoyer des messages par une application Web.<br />
-Vous pourrez souscrire à une offre d&#8217;envoi SMS à un prix raisonnable.<br />
-Vous pourrez louer un numéro de GSM.</p>
<p>Utilisation d&#8217;un modem gsm:</p>
<p>-Cela peut être une façon coûteuse et lente de le faire, puisque vous devez acheter un modem et avoir un contrat avec un fournisseur réseau.<br />
-Vous devrez aussi utiliser AT (Hayes).</p>
<p>Ce tutoriel n&#8217;est nullement un examen complet mais plutôt compréhensif sur la façon d&#8217;envoyer des messages text (SMS) avec PHP;<br />
Il apporte une compréhension et une façon d&#8217;appréhender l&#8217;envoi de message avec la fonction MAIL !<br />
J&#8217;espère que ce tutoriel a eu un intérêt pour vous. Merci pour votre lecture et n&#8217;hésitez pas à commenter l&#8217;article <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  !</p>
<p>Auteur: Seb</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/tutoriels/envoyer-un-sms-avec-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TD : Obtenir des informations d&#8217;autres sites</title>
		<link>http://www.phpexo.com/exercices-cours-tuto/td-obtenir-des-informations-dautres-sites/</link>
		<comments>http://www.phpexo.com/exercices-cours-tuto/td-obtenir-des-informations-dautres-sites/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 21:49:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exercices | Cours]]></category>
		<category><![CDATA[récupérer des informations d'autres sites]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=77</guid>
		<description><![CDATA[Une question qui revient souvent : Comment récupérer des informations disponibles sur d&#8217;autres sites ? Par exemple, le nombre de visiteur connecté sur un site, le nombre d&#8217;inscrit, la météo, et pleins d&#8217;autres. Beaucoup croient qu&#8217;il faut se connecter à leur BDD, ou qu&#8217;il faut avoir leurs scripts &#8230; Que nini, c&#8217;est beaucoup plus simple [...]]]></description>
			<content:encoded><![CDATA[<p>Une question qui revient souvent : Comment récupérer des informations disponibles sur d&#8217;autres sites ?<br />
Par exemple, le nombre de visiteur connecté sur un site, le nombre d&#8217;inscrit, la météo, et pleins d&#8217;autres.<br />
Beaucoup croient qu&#8217;il faut se connecter à leur BDD, ou qu&#8217;il faut avoir leurs scripts &#8230;</p>
<p>Que nini, c&#8217;est beaucoup plus simple !</p>
<h2>Réfléchissons un peu :</h2>
<p>Quand nous voulons afficher en Php &laquo;&nbsp;<em>Hello World</em>&laquo;&nbsp;, nous écrivons ceci :</p>
<pre class="brush: php; title: ;">
&lt;?php echo 'Hello World'; ?&gt;
</pre>
<p>Et quand on regarde la source &#8230; nous voyons Hello World.<br />
Si nous voulons afficher un compteur de connecté, nous utiliserons <strong>echo</strong>, <strong>print</strong> ou autre fonction qui affichera ce compteur.<br />
Ce nombre sera donc visible dans la source !</p>
<p>Voyez-vous où je souhaite en venir ?<br />
Le code source de la page va nous être d&#8217;une grande aide, étant donné qu&#8217;il contient les informations générées par Php (enfin, celles que Php a affichées, pas le code Php, encore heureux  <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  )</p>
<p>Pff, c&#8217;est bien beau, et je fais quoi avec le code source ? J&#8217;en veux pas moi ! Je veux mon nombre de connecté !</p>
<p>Et les regex, vous les oubliez ?<br />
Grâce à elles, nous pourrons sélectionner une certaine partie du code source, et ensuite pouvoir l&#8217;afficher  O_o</p>
<h2>Consignes et contraintes :</h2>
<p>- Nous allons chercher la source d&#8217;un site voulue et la stocker dans une variable (fonction : <em>file_get_contents()</em>)<br />
- Nous allons supprimer les tabulations et sauts de ligne que contient cette variable. Pourquoi ? Tout simplement car pour la suite, nous pourrons rencontrer des &laquo;&nbsp;beugs&nbsp;&raquo;, ça ne pourrait pas fonctionner. (fonction : <em>str_replace()</em>)<br />
- Nous allons, grâce à une regex, prendre une partie bien précise de ce code source. (fonction : <em>preg_match_all()</em>)<br />
- Si jamais il y a plusieurs pattern, nous pourrons choisir de sélectionner ce qu&#8217;il y a dans le 2ème, 8ème, etc&#8230;<br />
Par exemple, si dans la source il y a</p>
<pre class="brush: css; title: ;">
&lt;div&gt;Bonjour&lt;/div&gt;
 et
&lt;div&gt;Coucou&lt;/div&gt;
</pre>
<p>, nous pourrons choisir de sélectionner le contenu du 2ème div. (Grâce aux &laquo;&nbsp;matches&nbsp;&raquo;, qui créeront un tableau, de la fonction preg_match_all)<br />
- Étant donné qu&#8217;un tableau commence au numéro 0, pour que ça soit plus clair, nous commencerons à 1.<br />
- Enfin, nous créerons une fonction pour utiliser plus clairement notre script. La fonction s&#8217;appellera getInfo et prendra en paramètres : La source du site, le début du pattern, la fin du pattern et le numéro (le premier sera 1) qui permettra de dire à la regex de prendre le premier, deuxième, troisième,&#8230;, résultat.</p>
<p>Les explications sont un peu longues, mais le code est en réalité très court  :rire:</p>
<p>Note : Je suis conscient que mettre le début du tableau à 1 au lieu de 0 est inutile, mais peut-être plus clair pour certains d&#8217;entre vous.</p>
<h2>Correction :</h2>
<p>A noter que parfois, certains sites ne nous laissent pas obtenir des informations avec Php.<br />
Ils bloquent l&#8217;accés quand l&#8217;user-agent est Php (ou quelque chose comme ça <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) pour éviter le nombre trop importants de requêtes ou autres &#8230;</p>
<pre class="brush: php; title: ;">
function getInfo($source,$debut,$fin,$return) { // Notre fonction permettant d'obtenir des informations sur un autre site
$source = str_replace(&quot;\\\n&quot;, &quot;&quot;, $source); // On supprime les retours chariots du code source
$source = str_replace('    ','',$source); // On supprime les tabulations
preg_match_all('`'.$debut.'(.+)'.$fin.'`',$source,$resultat); // Regex : Prend en parametre le début du pattern transmis à la fonction, la fin du pattern, la source, et crée un tableau avec les résultats trouvés.
$return--; // Etant donné que le premier résultat d'un tableau est 0, nous allons le transformé en 1
return $resultat[1][$return]; // On retourne le résultat voulu dans $return, le numéro du résultat. Le 1 correspond à : &quot;Ne pas conserver la mise en forme&quot;, mettez 0 si vous voulez le contraire.
}

$source = file_get_contents('http://monsite.com'); // On prend la source du site voulue dans la fonction file_get_contents

echo getInfo($source,'
&lt;div id=&quot;test&quot;&gt;','&lt;/div&gt;
', 1); // On affiche le résultat en appelant une fonction : on fait passer en paramêtre : la source, le début du pattern, la fin du pattern, et le numéro du résultat voulue (par défaut : 1)
?&gt;
</pre>
<p>Pourquoi ne pas obtenir la source dans la fonction ?<br />
Tout simplement car si vous voulez obtenir plusieurs informations du même site, vous utiliserez la variable $source.<br />
Si vous transmettez l&#8217;url au lieu de la source et que dans la fonction, vous obtenez la source, vous ferez 2 file_get_contents !<br />
Et ceci augmente considérablement le temps d&#8217;exécution de la page !<br />
Voilà, c&#8217;est terminé.</p>
<p>PS : Désolé si je n&#8217;ai pas bien expliqué le nombre dans le paramètre de la fonction, le 1, mais sachez qu&#8217;il sert si par exemple, vous avez ceci dans la source :</p>
<pre class="brush: css; title: ;">
&lt;div id=&quot;test&quot;&gt;Bonjour&lt;/div&gt;
&lt;div id=&quot;test&quot;&gt;Coucou&lt;/div&gt;
&lt;div id=&quot;test&quot;&gt;Hello&lt;/div&gt;
</pre>
<p>Vous aurez toujours le même pattern, preg_match_all va nous renvoyer un tableau contenant les 3 résultats, et grâce à ce nombre nous choisirons d&#8217;afficher soit le 1er,2ème ou 3ème <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>PS2 : Si quelqu&#8217;un n&#8217;aurait pas compris pourquoi supprimer les retours chariots et tabulations, c&#8217;est tout simplement pour le bon fonctionnement de notre regex, si vous affichez la source, vous verrez que tout le code est collé, sans aucun vide, nous pourrons alors appliquer les regex sans soucis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/exercices-cours-tuto/td-obtenir-des-informations-dautres-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Affichage d&#8217;une adresse IP</title>
		<link>http://www.phpexo.com/tutoriels/affichage-dune-adresse-ip/</link>
		<comments>http://www.phpexo.com/tutoriels/affichage-dune-adresse-ip/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 22:07:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[adresse ip]]></category>
		<category><![CDATA[affichage ip]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=94</guid>
		<description><![CDATA[L&#8217;adresse IP : Une adresse IP (Internet Protocol) est le numéro qui identifie chaque ordinateur connecté à Internet. Affichage d&#8217;une adresse IP &#60;?php echo $_SERVER ('REMOTE_ADDR']; ?&#62; ip2long() Convertit une chaîne contenant une adresse (IPv4) IP numérique en adresse littérale. &#60;?php $ip = $_SERVER['REMOTE_ADDR']; echo ip2long($ip); ?&#62; long2ip() Convertit une adresse IP (IPv4) en adresse [...]]]></description>
			<content:encoded><![CDATA[<h2>L&#8217;adresse IP :</h2>
<p>Une<strong> adresse IP</strong> (<em>Internet Protocol</em>) est le numéro qui identifie chaque ordinateur connecté à Internet.</p>
<p><span style="text-decoration: underline;">Affichage d&#8217;une adresse IP</span></p>
<pre class="brush: php; title: ;">
&lt;?php
 echo $_SERVER ('REMOTE_ADDR'];
?&gt;
</pre>
<p>ip2long()  Convertit une chaîne contenant une adresse (IPv4) IP numérique en adresse littérale.</p>
<pre class="brush: php; title: ;">
&lt;?php
 $ip = $_SERVER['REMOTE_ADDR'];
 echo ip2long($ip);
?&gt;
</pre>
<p>long2ip()  Convertit une adresse IP (IPv4) en adresse IP numérique.</p>
<pre class="brush: php; title: ;">
&lt;?php
 $ip = $_SERVER['REMOTE_ADDR'];
 echo long2ip($ip);
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/tutoriels/affichage-dune-adresse-ip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un site multi-design</title>
		<link>http://www.phpexo.com/exercices-cours-tuto/un-site-multi-design/</link>
		<comments>http://www.phpexo.com/exercices-cours-tuto/un-site-multi-design/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 21:58:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exercices | Cours]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[multi-design]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=85</guid>
		<description><![CDATA[Bleu, rouge, vert, blanc, rose, sombre, clair, sobre &#8230; Difficile de tout aimer. Et le design de votre site, tout le monde l&#8217;aime ? Non, sans doute. Certains préfèrent les bleus, d&#8217;autres les verts, les clairs, les sombres, les sobres, les sophistiqués &#8230; Facile de critiquer mon design, comment veux-tu que je fasse pour plaire [...]]]></description>
			<content:encoded><![CDATA[<p>Bleu, rouge, vert, blanc, rose, sombre, clair, sobre &#8230; Difficile de tout aimer.</p>
<p>Et le design de votre site, tout le monde l&#8217;aime ?<br />
Non, sans doute.</p>
<p>Certains préfèrent les bleus, d&#8217;autres les verts, les clairs, les sombres, les sobres, les sophistiqués &#8230;</p>
<p><em>Facile de critiquer mon design, comment veux-tu que je fasse pour plaire à tout le monde ?</em></p>
<p>Optez pour un site multi-design !</p>
<h2>Préparation psychologique</h2>
<p><em>Huum c&#8217;est bien beau un site multi-design, mais comment je le fais ?</em></p>
<p>Tout d&#8217;abord, quand le visiteur choisira un design, il nous faudra enregistrer quelque part ce choix pour afficher le même design lors de ses prochaines visites.</p>
<p>Les sessions ? Non<br />
Les bases de donnée ? Non, des requêtes pour rien, et le visiteur peut changer d&#8217;ip<br />
Les fichier textes ? Inutile<br />
Les cookies ? Oui ! Bonne réponse</p>
<p>Grâce aux cookies, nous allons utiliser la mémoire du visiteur pour enregistrer son choix (ben oui, un design ça se paye  ^^ )</p>
<h2>Les cookies et Php</h2>
<p><em>C&#8217;est quoi les cookies ? Des biscuits ?</em></p>
<p>Non, espèce de gourmand.<br />
Les cookies sont des petits fichiers textes enregistrés sur la machine du visiteur dans lesquels sont écrits des informations.<br />
Ces informations serviront au site de se souvenir d&#8217;un de vos choix, de vous reconnaître, et bien d&#8217;autres choses.</p>
<p>Voici les bases à connaître :</p>
<p>Écrire un cookie</p>
<pre class="brush: php; title: ;">$timestamp_expire = time() + 365*24*3600; // Expiration du cookie dans un an
setcookie('nom_du_cookie', 'valeur', $timestamp_expiration); // Ecriture du cookie
</pre>
<p>Comme vous pouvez le remarquer, lors de de la création d&#8217;un cookie, nous devons indiquer la date d&#8217;expiration de celui-ci.<br />
Au bout d&#8217;un certain temps (exprimé au format timestamp) il expira : il ne sera plus valide.</p>
<p>Récupérer la valeur d&#8217;un cookie</p>
<pre class="brush: php; title: ;">
&lt;?php
$valeur_cookie = $_COOKIE['nom_du_cookie']; // $valeur_cookie contient 'valeur', en suivant notre exemple ci-dessus
echo $valeur_cookie; // Affichera la valeur du cookie (ici 'valeur')
?&gt;
</pre>
<p>Modifier la valeur d&#8217;un cookie<br />
Pour modifier la valeur d&#8217;un cookie, il suffit d&#8217;en créer un nouveau, portant le même nom.<br />
Celui-ci écrasera l&#8217;ancien !</p>
<p>Supprimer un cookie<br />
Il n&#8217;existe pas de fonction spéciale pour supprimer un cookie.<br />
Mais nous pouvons le supprimer grâce à 2 petites astuces :</p>
<p>La première consiste à lui donner aucune valeur ni aucune date d&#8217;expiration :</p>
<pre class="brush: php; title: ;">
&lt;?php
setcookie('nom_du_cookie'); // Ecrasera le cookie portant le nom 'nom_du_cookie'
?&gt;
</pre>
<p>La seconde consiste à créer un cookie du même nom mais en lui donnant une date d&#8217;expiration déjà passée :</p>
<pre class="brush: php; title: ;">
&lt;?php
setcookie('nom_du_cookie', '', '0'); // Ecrasera le cookie portant le nom 'nom_du_cookie'
?&gt;
</pre>
<p>Plus d&#8217;informations sur les cookies : <a href="http://php.net/setcookie">http://php.net/setcookie</a></p>
<p>Faites attention à la sécurité de vos applications, le visiteur peut modifier son cookie.<br />
Si par exemple, vous identifiez un membre via le pseudo stocké en cookie, si je passe sur votre site et modifie la valeur de ce cookie en mettant votre pseudo, je me retrouve sur votre compte !<br />
Ceci est un exemple parmi tant d&#8217;autre, sachez juste que l&#8217;on peut modifier un cookie.</p>
<h2>Consignes et contraintes</h2>
<p>- Sur chaque page, nous allons regarder quel est le design que le visiteur souhaite en fonction de son cookie. Si le cookie n&#8217;existe pas, nous choisirons le design n°1 par défaut.</p>
<p>A partir de là 2 solutions :<br />
- Soit nos 2 design ont la même partie html, seul diffère le css : Nous inclurons la feuille de style en fonction du design choisi.<br />
- Soit nos 2 designs requiert une partie html différente : Nous inclurons le fichier correspondant au design, comprenant le site normal. Si vous optez pour cette solution, pour ne pas avoir à recopier le code sur les 2 pages, vous pouvez très bien inclure un fichier php pour remplacer les codes php. Par exemple, on inclura le fichier news.php dans le corps de la page des deux designs, au lieu d&#8217;avoir le même code sur les deux designs (on modifiera qu&#8217;un seul fichier).</p>
<p>- Nous proposerons 2 design pour commencer, donc 2 liens. (Admettons design.php?design=1 et design.php?design=2)<br />
- Au clique sur l&#8217;un de ces liens, nous serons donc sur design.php, nous créerons un cookie, ou modifierons la valeur du cookie déjà crée (même procédé), en lui donnant une durée de vie d&#8217;1 an (ou comme vous voulez)<br />
- Puis nous redirigerons vers la page précédente : le design aura changé. Le visiteur ne verra rien du tout, juste le design changé au clique, car nous redirigerons.</p>
<p>Cet exercice étant un vrai exercice, je vous abandonne ici et vous laisse coder votre système multi-design !<br />
Bonne chance à vous  <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/exercices-cours-tuto/un-site-multi-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TD : Intégrer GeSHi dans un BBCode</title>
		<link>http://www.phpexo.com/exercices-cours-tuto/integrer-geshi-dans-un-bbcode/</link>
		<comments>http://www.phpexo.com/exercices-cours-tuto/integrer-geshi-dans-un-bbcode/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 21:28:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exercices | Cours]]></category>
		<category><![CDATA[bbcode]]></category>
		<category><![CDATA[GeSHi]]></category>
		<category><![CDATA[intégration geshi]]></category>
		<category><![CDATA[SyntaxHighlighter]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=68</guid>
		<description><![CDATA[Bonjour à tous ! A travers ce petit exercice, je vous propose d&#8217;intégrer le célèbre colorateur syntaxique GeSHi dans votre BBCode (ou autre, Zcode par exemple). Le fonctionnement de GeSHi : Tout d&#8217;abord, si ce n&#8217;est pas déjà fait, téléchargez GeSHi et uploadez-le sur votre FTP, dans un dossier à part, pour plus de clarté [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour à tous !</p>
<p>A travers ce petit exercice, je vous propose d&#8217;intégrer le célèbre colorateur syntaxique <strong>GeSHi</strong> dans votre <strong>BBCode</strong> (ou autre, <strong>Zcode</strong> par exemple).</p>
<h2>Le fonctionnement de GeSHi :</h2>
<p>Tout d&#8217;abord, si ce n&#8217;est pas déjà fait,<a title="Télécharger GeSHi" href="http://sourceforge.net/project/showfiles.php?group_id=114997"> téléchargez GeSHi</a> et uploadez-le sur votre FTP, dans un dossier à part, pour plus de clarté <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
Pour l&#8217;utiliser, voici comment procéder :</p>
<pre class="brush: php; title: ;">
include_once('geshi/geshi.php'); // Remplacez geshi par votre dossier.
$code = &quot;&quot;; // Code à colorer
$langage = 'php'; // Langage à utiliser pour colorer le code
$geshi = new GeSHi($code, $langage); // Création de l'objet GeSHi
echo $geshi-&gt;parse_code(); // Affichage du code coloré via la méthode parse_code de l'objet GeSHi
?&gt;
</pre>
<h2>Consignes et contraintes :</h2>
<p>- Pour insérer du code dans notre <strong>BBCode</strong>, nous taperons</p>
<p>Code</p>
<p>- A l&#8217;enregistrement de notre textarea dans la BDD, nous utiliserons <em>mysql_escape_string</em> pour nous protéger des <strong><span style="text-decoration: underline;">inclusions MySql</span></strong><br />
- A l&#8217;affichage, nous récupérons le contenu de la table et nous sécuriserons son affichage</p>
<pre class="brush: php; title: ;">
$contenu = stripslashes($contenu);
$contenu = htmlspecialchars($contenu);
echo bbcode($contenu); // Fonction comprenant nos diverses regex chargées de transformer notre BBCode en html
</pre>
<p>- Note : Avec GeSHi, pour colorer en html, le langage à saisir est html4strict, mais dans notre BBCode, nous taperons<em> [ code=html]Code[/ code]</em>. A vous de vous arranger  <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
- On affichera le nom du langage au-dessus du code coloré.</p>
<h2>Correction :</h2>
<p>Note : La correction ci-dessous n&#8217;est pas forcément la seule manière de procéder.</p>
<pre class="brush: php; title: ;">
include_once('geshi/geshi.php');  // On inclus la bibliothèque GeSHi

function colore($matches) // Fonction faisant appel à GeSHi, prenant en paramétre les options souhaitées dans le preg_replace_callback
 {
 $languages_autorises = array(&quot;php&quot;, &quot;html&quot;, &quot;css&quot;, &quot;javascript&quot;, &quot;apache&quot;, &quot;mysql&quot;); // Tableau listant les langages autorisés

 if (in_array($matches[1], $languages_autorises)) { // Si le langage se trouve dans le tableau ci-dessus
 if ($matches[1] == &quot;html&quot;) // Si le langage est html, nous le convertirons en html4strict et le langage affiché sera : html
 { $matches[1] = &quot;html4strict&quot;; $language = &quot;html&quot;; }
 else
 { $language = $matches[1]; } // Sinon le langage à afficher sera le nom du langage utilisé pour la coloration (il n'y a que html qui change)

 $geshi = new GeSHi(html_entity_decode(trim($matches[2])), $matches[1]); // Création de l'objet GeShi, on décode les caractéres que htmlspecialchars à fait et on supprime les espaces au début et fin de chaîne

 return 'Code '.strtoupper($language).'
'.$geshi-&gt;parse_code(); // On retourne le code coloré
 }

 else {// Si le langage de coloration souhaité ne se trouve pas dans le tableau
 return 'Code AUTRE
&lt;pre&gt;'.html_entity_decode(trim($matches[2])).'&lt;/pre&gt;
'; // On n'affiche le code sans lui faire de traitement

 }
 }

function bbcode($cont) { // Fonction BBCode comprenant les regex pour parser notre texte
$cont = preg_replace_callback('`\\[code=(.*)\\](.*)\\[/code\\]`isU', 'colore', $cont); // Remplace en utilisant la fonction colore
//  Vos remplacements ici : par exemple [gras] [/gras] ...
$cont = trim($cont); // Suppresion des espaces en début et fin de chaîne
return $cont;
}

// Utilisation :
$contenu = stripslashes($contenu);
$contenu = htmlspecialchars($contenu);
echo bbcode($contenu);
?&gt;
</pre>
<p>Et voilà <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bravo à ceux qui ont réussit à faire marcher <strong>GeSHi</strong> dans leur système de <strong>BBCode</strong> !</p>
<p>Note : La fonction bbcode ci-dessus reste entièrement sécurisée. Néanmoins, faites attention à vos remplacements et vos regex !<br />
Note 2 : Suite au commentaire de Blogiwi, il est évident que vous pouvez tester directement si le langage fournis dans</p>
<p>[/code]</p>
<p> est un langage attendu en incluant directement la condition dans la regex.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/exercices-cours-tuto/integrer-geshi-dans-un-bbcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Système de maintenance économique</title>
		<link>http://www.phpexo.com/exercices-cours-tuto/systeme-de-maintenance-economique/</link>
		<comments>http://www.phpexo.com/exercices-cours-tuto/systeme-de-maintenance-economique/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 21:20:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exercices | Cours]]></category>
		<category><![CDATA[Maintenance de site]]></category>
		<category><![CDATA[mettre son site en maintenance]]></category>
		<category><![CDATA[myslq]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=64</guid>
		<description><![CDATA[Comment mettre son site en maintenance et interdire son accès sans modifier tous les fichiers ? Cette question est très souvent posée et beaucoup de personne gèrent leur système de maintenance via une table MySql. Mais faire 1 requête pour seulement obtenir un petit nombre, n&#8217;est pas nécessaire. En ces temps de crise, nous devons [...]]]></description>
			<content:encoded><![CDATA[<p>Comment mettre son site en maintenance et interdire son accès sans modifier tous les fichiers ?<br />
Cette question est très souvent posée et beaucoup de personne gèrent leur système de maintenance via une table <strong>MySql</strong>.</p>
<p>Mais faire 1 requête pour seulement obtenir un petit nombre, n&#8217;est pas nécessaire.<br />
En ces temps de crise, nous devons économiser.. les requêtes MySql aussi ! <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Et si le serveur MySql tombe en panne ? Ah .. mince alors triste</p>
<p>Je vous propose de créer votre propre système de maintenance en utilisant les fichiers, et plus précisément les .txt</p>
<h2>Php et les fichiers, les fichiers et Php</h2>
<p>Beaucoup de fonctions permettent à Php de communiquer avec des fichiers.<br />
Par exemple, nous pouvons vérifier si un fichier existe, lire son contenu, mettre en forme son contenu, récupérer seulement une ligne d&#8217;un fichier, renommer un fichier, le déplacer, le supprimer, et bien d&#8217;autres.</p>
<p>Les fichiers peuvent être utilisés pour stocker des informations qui n&#8217;ont pas leurs places dans une BDD, ou qu&#8217;il est plus pratique de mettre dans un fichier (un compteur de visite par exemple).</p>
<p>Mais on peut utiliser un fichier sans qu&#8217;il n&#8217;est pas de contenu, juste un nom, c&#8217;est ce que nous verrons plus loin.</p>
<p>Enfin, les fichiers peuvent servir à tout et n&#8217;importe quoi (faites attention à la sécurité quand même sympatique)</p>
<h2>Consignes et contraintes</h2>
<p>Le fonctionnement est simple : Si le fichier maintenance.txt existe : maintenance, sinon ce fichier s&#8217;appelera #maintenance.txt et la maintenance sera désactivée.</p>
<p><strong>Partie publique, sur toutes les pages</strong> (sera corrigée)<br />
- Nous allons créer un fichier maintenance.txt<br />
- Notre script ira voir si ce fichier existe (fonction : is_file())<br />
- Si c&#8217;est le cas, nous allons afficher un message de maintenance puis bloquer son accès (fonction : exit())</p>
<p><strong>Partie administration</strong> (ne sera pas corrigée)<br />
- Vous irez chercher le statut de la maintenance, avec la fonction is_file()<br />
- Selon le statut de la maintenance, vous afficherez un lien permettant de désactiver ou activer la maintenance.<br />
- Pour la désactiver, vous renommerez le fichier maintenance.txt en #maintenance.txt (fonction : rename()), puis vous redirigerez vers la page d&#8217;administration de maintenance, pour que le statut modifié s&#8217;affiche sans avoir besoin d&#8217;actualiser (fonction : header(), ou en html)<br />
- Pour l&#8217;activer, vous renommerez le fichier #maintenance.txt en maintenance.txt (fonction : rename()), puis vous redirigerez vers la page d&#8217;administration de maintenance, pour que le statut modifié s&#8217;affiche sans avoir besoin d&#8217;actualiser (fonction : header(), ou en html)</p>
<h2>Correction de la 1ère partie</h2>
<p>Avouez que ce n&#8217;était pas dur.</p>
<p>Si vous avez un fichier commun à inclure au début de toutes les pages, vous pourrez mettre le bout de code ci-dessous dans ce fichier, sinon sur toutes les pages coeur brisé</p>
<p>Code PHP:</p>
<pre class="brush: php; title: ;">
&lt;?
// A placer en haut de votre page
if(is_file('maintenance.txt')) // Si le fichier maintenance.txt existe
{
 echo 'Maintenance en cours.'; // On affiche un ptit message
 exit(); // On arrête le script, le code du dessous ne sera pas exécutée. Pas besoin de else { } autour de votre page.
}
?&gt;
</pre>
<p>Magnifique, en 5 lignes nous avons codé notre système de maintenance !</p>
<p>Il reste maintenant la partie administration, mais ce ne sera pas trop dur étant donné que vous avez toutes les fonctions et aides nécessaires au-dessus sympathique<br />
Bonne chance à vous <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Améliorations</h2>
<p>- Au lieu d&#8217;afficher un message si la maintenance est activée, vous pouvez lire le contenu du fichier maintenance.txt et le modifier via votre zone d&#8217;administration pour avoir un message différent éditable sur votre site !<br />
- Vous pouvez aussi enregistrer le motif, heure de maintenance et heure prévue pour la réouverture, dans ce fichier et le mettre en forme lorsque vous afficherez le contenu.<br />
- Lors de la maintenance, autorisez les administrateurs à voir le site ou à se connecter !<br />
- Et bien d&#8217;autres, votre imagination est votre amie !</p>
<p>Auteur: graphox</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/exercices-cours-tuto/systeme-de-maintenance-economique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une connexion HTTP</title>
		<link>http://www.phpexo.com/exercices-cours-tuto/une-connexion-http/</link>
		<comments>http://www.phpexo.com/exercices-cours-tuto/une-connexion-http/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 21:09:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exercices | Cours]]></category>
		<category><![CDATA[fonction php http]]></category>
		<category><![CDATA[http]]></category>

		<guid isPermaLink="false">http://www.phpexo.com/?p=60</guid>
		<description><![CDATA[ATTENTION : Je pars du principe que vous connaissez un minimum le PHP ainsi que la gestion d&#8217;une Base de données. Bonjour à tous et à toutes ! Alors voilà , comme beaucoup je suis sûr que vous vous êtes déjà posé la question : Comment on fait une connexion réellement sécurisée ? C&#8217;est finalement [...]]]></description>
			<content:encoded><![CDATA[<p><strong>ATTENTION</strong> : Je pars du principe que vous connaissez un minimum le PHP ainsi que la <span style="text-decoration: underline;">gestion d&#8217;une Base de données</span>.</p>
<p>Bonjour à tous et à toutes !<br />
Alors voilà , comme beaucoup je suis sûr que vous vous êtes déjà posé la question :<br />
Comment on fait une connexion réellement sécurisée ?<br />
C&#8217;est finalement d&#8217;une simplicité à mourir.<br />
PHP vous propose un outil tout définie pour ça :</p>
<p>Code PHP:</p>
<pre class="brush: php; title: ;">
&lt;?php
function Authentification($message) {
 // Doit être placé avant tout code xHTML même avant un echo qui affiche du code HTML !!!!
 header('WWW-Authenticate: Basic realm=&quot;' . $message . '&quot;');
 // Si l'utilisateur clique sur annuler les lignes suivantes s'éxecutent :
 echo '&lt;font color=&quot;red&quot;&gt;Vous devez vous identifier !&lt;/font&gt;';
}

?&gt;
</pre>
<p>L&#8217;outil prédéfini par PHP dont je vous parle est :</p>
<p>Code PHP:</p>
<pre class="brush: php; title: ;">
header('WWW-Authenticate: Basic realm=&quot;' . $message . '&quot;');
</pre>
<p>Le reste n&#8217;est qu&#8217;une fonction codé par moi afin de vous faciliter la tâche <img src='http://www.phpexo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Bref une fois qu&#8217;il a cliqué sur OK on obtient deux variables :</p>
<p>Code PHP:</p>
<pre class="brush: php; title: ;">
&lt;?php
 $_SERVER['PHP_AUTH_USER'] // Le nom d'utilisateur entré
 $_SERVER['PHP_AUTH_PW'] // Le mot de passe entré
?&gt;
</pre>
<p>La suite du code :</p>
<p>Code PHP:</p>
<pre class="brush: php; title: ;">
&lt;?php
 if (!isset($_SERVER['PHP_AUTH_USER'])){
 Authentification(&quot;Vous devez vous identifier ...&quot;);
 }
 else
 {
 if (utilisateurExiste($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW'])) // On regarde si l'utilisateur existe : A vous de faire la fonction !
 {
 // On redirige et on interromp le script. Vous pouvez, bien sûr, faire un autre système.
 header(&quot;location: index.php&quot;);
 exit;
 }
 else
 {
 echo '&lt;font color=&quot;red&quot;&gt; Erreur : Vos identifiants sont éronnés ! &lt;/font&gt;';
 }
?&gt;
</pre>
<p>A vous de faire la fonction <em>utilisateurExiste()</em><br />
Pensez quand même à la sécurité, notamment lors de la requête <strong>MySql</strong> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpexo.com/exercices-cours-tuto/une-connexion-http/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

