<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[PHP]]></title><description><![CDATA[PHP]]></description><link>https://melinyel.net/category/40</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 03:51:25 GMT</lastBuildDate><atom:link href="https://melinyel.net/category/40.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Aug 2017 11:26:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Rien ne s'enregistre dans ma BDD]]></title><description><![CDATA[&lt;p&gt;
Bonjours les melinyien,
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
J'ai créé un formulaire que j'ai tout-à-fait bien lié à une page de traitement, mais rien ne s'enregistre dans ma bbd.
&lt;/p&gt;
&lt;p&gt;
Je précise qu'aucune erreur ne s'affiche, tout se déroule parfaitement bien... Visiblement. Mais secrètement, les infos transmises via le formulaire ne sont pas du tout enregistrées dans la base de données...
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
Je vous mets le code de la page de traitement :
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
&lt;?php
&lt;/p&gt;
&lt;p&gt;
if(isset($_POST['Envoyer']))&lt;br/&gt;
{
&lt;/p&gt;
&lt;p&gt;
try&lt;br/&gt;
{&lt;br/&gt;
    $bdd = new PDO('mysql:host=localhost;dbname=essai;charset=utf8', 'root', '');&lt;br/&gt;
}&lt;br/&gt;
catch(Exception $e)&lt;br/&gt;
{&lt;br/&gt;
        die('Erreur : '.$e-&gt;getMessage());&lt;br/&gt;
}
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
&lt;br/&gt;
$req = $bdd-&gt;prepare('INSERT INTO codef(Greffier, Noloi, Loi, Adoptio, Pour, Contre, Oblatusab, Fonction, Submandatumde, Principioregni, Ultimregni) VALUES("'.$_POST['Greffier'].'", "'.$_POST['Noloi'].'", "'.$_POST['Loi'].'", "'.$_POST['Adoptio'].'", "'.$_POST['Pour'].'", "'.$_POST['Contre'].'", "'.$_POST['Oblatusab'].'", "'.$_POST['Fonction'].'", "'.$_POST['Submandatumde'].'", "'.$_POST['Principioregni'].'", "'.$_POST['Ultimregni'].'")');
&lt;/p&gt;
&lt;p&gt;
$req-&gt;execute(array(
&lt;/p&gt;
&lt;p&gt;
    $_POST['Greffier'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Noloi'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Loi'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Adoptio'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Pour'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Contre'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Oblatusab'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Fonction'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Submandatumde'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Principioregni'],
&lt;/p&gt;
&lt;p&gt;
    $_POST['Ultimregni'] ));
&lt;/p&gt;
&lt;p&gt;
&lt;br/&gt;
header('Location: afloiscodef.php');
&lt;/p&gt;
&lt;p&gt;
&lt;br/&gt;
/echo '&lt;span class="accesblock"&gt;&lt;p&gt;Loi ajoutée avec succès !&lt;/p&gt;&lt;/span&gt;';/
&lt;/p&gt;
&lt;p&gt;
&lt;br/&gt;
}&lt;br/&gt;
?&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
Merci de votre aide, d'avance !
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
P.S : Je ne sais pas comment mettre l'affichage de programmation, désolé.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/1891/rien-ne-senregistre-dans-ma-bdd</link><guid isPermaLink="true">https://melinyel.net/topic/1891/rien-ne-senregistre-dans-ma-bdd</guid><dc:creator><![CDATA[Anewone]]></dc:creator><pubDate>Tue, 22 Aug 2017 11:26:51 GMT</pubDate></item><item><title><![CDATA[Aide pour création d'un forum]]></title><description><![CDATA[&lt;div class="ipsAreaBackground_reset ipsPad"&gt;
&lt;div class="ipsType_richText"&gt;
&lt;p&gt;
Bonjour/Bonsoir,
&lt;/p&gt;
&lt;p&gt;
Voila mon script:
&lt;/p&gt;
&lt;p&gt;
&lt;?php&lt;br/&gt;
include('style.php');&lt;br/&gt;
include('menu.php');&lt;br/&gt;
ini_set("display_errors",0);error_reporting(0);&lt;br/&gt;
header('Content-type: text/html; charset=UTF-8');
&lt;/p&gt;
&lt;p&gt;
if($_GET['pseudo'] === '' || $_GET['pseudo'] === '#'){&lt;br/&gt;
echo '&lt;br&gt;&lt;center&gt;&lt;div id="Erreur"&gt;&lt;p&gt;Vous n etes pas connecter!&lt;/p&gt;&lt;/div&gt;&lt;/center&gt;';&lt;br/&gt;
}else{&lt;br/&gt;
$Post = '&lt;div id = "inscription"&gt;&lt;br/&gt;
    &lt;form action = "#" method = "post"&gt;&lt;br/&gt;
    &lt;h1&gt;Nouvelle discution: &lt;/h1&gt;&lt;br/&gt;
    &lt;label for = "Message"&gt;Sujet: &lt;/label&gt;&lt;p&gt;&lt;input placeholder="ex: Aide pour faire un truc" class="textboxForum" type = "text" name = "Message" id = "Message" /&gt;&lt;/p&gt;&lt;br/&gt;
    &lt;p&gt;&lt;label for="NomForum"&gt;Nom de discution: &lt;/label&gt;&lt;input placeholder="ex: Aide pour un truc" class="textboxForum" type="text" name="NomForum" id="NomForum" /&gt;&lt;/p&gt;&lt;br/&gt;
    &lt;p&gt;&lt;label for="Description"&gt;Description: &lt;/label&gt;&lt;input placeholder="Description de l aide" class="textboxForum1" type="text" name="Description" id="Description" /&gt;&lt;/p&gt;&lt;br/&gt;
    &lt;p&gt;&lt;input type = "submit" value = "Envoyer" id = "valider" /&gt;&lt;/p&gt;&lt;br&gt;&lt;br/&gt;
    &lt;/form&gt;&lt;br/&gt;
&lt;/div&gt;';
&lt;/p&gt;
&lt;p&gt;
function Verif_magicquotes ($chaine)&lt;br/&gt;
{&lt;br/&gt;
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
&lt;/p&gt;
&lt;p&gt;
return $chaine;&lt;br/&gt;
}&lt;br/&gt;
$message = null;&lt;br/&gt;
    $Sujet = (isset($_POST['Message']) &amp;&amp; trim($_POST['Message']) != '')? Verif_magicquotes($_POST['Message']) : null;&lt;br/&gt;
    $NomForum = (isset($_POST['NomForum']) &amp;&amp; trim($_POST['NomForum']) != '')? Verif_magicquotes($_POST['NomForum']) : null;&lt;br/&gt;
    $Description = (isset($_POST['Description']) &amp;&amp; trim($_POST['Description']) != '')? Verif_magicquotes($_POST['Description']) : null;
&lt;/p&gt;
&lt;p&gt;
    if(isset($Sujet,$NomForum,$Description))&lt;br/&gt;
    {&lt;br/&gt;
         $hostname = "#";&lt;br/&gt;
         $database = "#";&lt;br/&gt;
         $username = "#";&lt;br/&gt;
         $password = "#";&lt;br/&gt;
   &lt;br/&gt;
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());&lt;br/&gt;
         mysql_select_db($database, $connection);&lt;br/&gt;
         mysql_query("SET NAMES 'utf8'");
&lt;/p&gt;
&lt;p&gt;
         $SUJET = mysql_real_escape_string($Sujet);&lt;br/&gt;
         $NOMFORUM = mysql_real_escape_string($NomForum);&lt;br/&gt;
         $DESCRIPTION = mysql_real_escape_string($Description);&lt;br/&gt;
   &lt;br/&gt;
   $Pseudo = $_GET['pseudo'];&lt;br/&gt;
             $insertion = "INSERT INTO List_Forum(Description,Nom_Forum,Sujet,Pseudo,Date_List) VALUES('".$DESCRIPTION."', '".$NOMFORUM."', '".$SUJET."', '".$Pseudo."', NOW())";&lt;br/&gt;
             $inser_exec = mysql_query($insertion) or die(mysql_error());&lt;br/&gt;
             if ($inser_exec === true)&lt;br/&gt;
             {&lt;br/&gt;
                 if(isset($resultat['message'])){&lt;br/&gt;
                 session_start();&lt;br/&gt;
                 $_SESSION['login'] = $message;&lt;br/&gt;
                 $message = 'Votre  message a été envoyer.';&lt;br/&gt;
             }   &lt;br/&gt;
         }&lt;br/&gt;
         else&lt;br/&gt;
         {&lt;br/&gt;
             $message = 'Votre message n a pas été envoyer';&lt;br/&gt;
         }&lt;br/&gt;
    }
&lt;/p&gt;
&lt;p&gt;
}&lt;br/&gt;
?&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;!DOCTYPE html&gt;&lt;br/&gt;
&lt;html&gt;&lt;br/&gt;
&lt;center&gt;&lt;br/&gt;
&lt;head&gt;&lt;br/&gt;
    &lt;title&gt;Liste des Discutions - Site du Panda&lt;/title&gt;&lt;br/&gt;
&lt;/head&gt;&lt;br/&gt;
&lt;body&gt;&lt;br/&gt;
&lt;p&gt;&lt;?php echo $Post; ?&gt;&lt;/p&gt;&lt;br/&gt;
&lt;div id="inscription"&gt;&lt;br/&gt;
&lt;h1&gt;Listes des forums: &lt;/h1&gt;&lt;br/&gt;
&lt;div id="Forum"&gt;
&lt;/p&gt;
&lt;p&gt;
     &lt;?php&lt;br/&gt;
    // Connect to database server&lt;br/&gt;
    mysql_connect("#", "#", "#") or die (mysql_error ());
&lt;/p&gt;
&lt;p&gt;
    // Select database&lt;br/&gt;
    mysql_select_db("#") or die(mysql_error());&lt;br/&gt;
    // SQL query&lt;br/&gt;
    $strSQL = "SELECT * FROM List_Forum ORDER BY ID DESC";
&lt;/p&gt;
&lt;p&gt;
    // Execute the query (the recordset $rs contains the result)&lt;br/&gt;
    $rs = mysql_query($strSQL);
&lt;/p&gt;
&lt;p&gt;
    // Loop the recordset $rs&lt;br/&gt;
    // Each row will be made into an array ($row) using mysql_fetch_array&lt;br/&gt;
    while($row = mysql_fetch_array($rs)) {
&lt;/p&gt;
&lt;p&gt;
       // Write the value of the column FirstName (which is now in the array $row)&lt;br/&gt;
      echo "Par: ".$row['Pseudo'] ."&lt;br /&gt;";&lt;br/&gt;
      echo $row['Nom_Forum']."&lt;br&gt;";&lt;br/&gt;
      echo $row['Sujet']."&lt;br&gt;";&lt;br/&gt;
      echo $row['Date_List']."&lt;br&gt;";&lt;br/&gt;
      echo "&lt;hr&gt;";
&lt;/p&gt;
&lt;p&gt;
      }
&lt;/p&gt;
&lt;p&gt;
    // Close the database connection&lt;br/&gt;
    mysql_close();&lt;br/&gt;
    ?&gt;&lt;br/&gt;
 &lt;/div&gt;&lt;br/&gt;
 &lt;/div&gt;&lt;br/&gt;
&lt;/body&gt;&lt;br/&gt;
&lt;/center&gt;&lt;br/&gt;
&lt;/html&gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Voila, évidemment la ou il y a les # pour la connection mysql, il y a mes  infos.
&lt;/p&gt;
&lt;p&gt;
Sinon, je voudrais de l'aide car, il fonctionne très très bien mais le probleme est que sur les informations qu'il renvois ( a la fin du script ) je voudrais pouvoir clicker sur une informations pour pouvoir acceder a une autre page.
&lt;/p&gt;
&lt;p&gt;
EyesGammer.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
 
&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/1870/aide-pour-création-dun-forum</link><guid isPermaLink="true">https://melinyel.net/topic/1870/aide-pour-création-dun-forum</guid><dc:creator><![CDATA[EyesGammer]]></dc:creator><pubDate>Wed, 17 Aug 2016 16:30:53 GMT</pubDate></item><item><title><![CDATA[Les hébergeurs images]]></title><description><![CDATA[&lt;div data-role="contentPage"&gt;
&lt;div data-role="contentPage"&gt;
&lt;div data-role="contentPage"&gt;
&lt;p&gt;
Bonjour à tous,&lt;br/&gt;&lt;br/&gt;
Je vais essayer de m'habituer à la nouvelle interface et vous faire un jolie tuto, non je ne vais pas expliquer comment faire un héébergeur d'image je ferais un autre tuto plus aboutis sur ça si vous voulez, mais bon là on va parler de l'hébergement avec par exemple les images payantes que l'on trouve sur google toute belle et quand on clique dessus on se retrouve avec un gros copyright qui rend l'image inexploitable... ou quand on veut ouvrir une image dans un onglet et que l'on est rediriger sans vers la page du site proposant l'image.&lt;br/&gt;&lt;br/&gt;
Mes exemples régénèrent les images donc peuvent être gourmands si les images sont grandes et il existe peut-être des façons plus optimisées mais bon je programme proprement comme un porc :hap:&lt;br/&gt;&lt;br/&gt;
On va donc &lt;a href="&lt;base_url&gt;/topic/909-re-%C3%A9crire-des-adresses-gr%C3%A2ce-%C3%A0-un-fichier-htaccess/" rel=""&gt;réécrire l'adresse&lt;/a&gt; et &lt;a href="&lt;base_url&gt;/topic/477-gestion-dimage/" rel=""&gt;gérer son affichage&lt;/a&gt; livre à vous d'utiliser une base de données (ex:sql) et vous ne communiquez qu'une référence ou un vrai nom dans l'url. Trop de blabla pas assez de CODE! :E&lt;br/&gt;&lt;br/&gt;
Encore un petit truc, Google a son propre User-Agent (chaine qui donne des informations que vous utilisez Firefox sur Windows10 64-bit et qu'il est configurer en français) nous alors donc nous servir de cela pour détecter si c'est un moteur de recherche ou un simple utilisateur qui regard, notez qu'il est possible de trafiquer son User-Agent donc il y a mieux comme sécurité en cherchant la liste des ips des serveurs par exemple.&lt;br/&gt;
Les User-Agents:
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-html prettyprinted"&gt;
&lt;span class="pln"&gt;GoogleBot: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
GoogleBot-Image: Mozilla/5.0 (compatible; Googlebot-Image/1.0; +http://www.google.com/bot.html)											
YahooSlurp:  Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
MsnBot: msnbot/1.1 (+http://search.msn.com/msnbot.htm)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;&lt;br/&gt;
On va faire un test avec une &lt;a href="&lt;base_url&gt;/topic/941-les-expressions-r%C3%A9guli%C3%A8resregex/" rel=""&gt;expression régulière&lt;/a&gt; en php pour voir si ça ressemble à un bot Google:
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-php prettyprinted"&gt;
&lt;span class="pln"&gt;header&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"Content-Type: image/png"&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="com"&gt;// on dit que c'est une image est pas du php/html &lt;/span&gt;&lt;span class="pln"&gt;
$img &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; imagecreatefrompng&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"images/tructresinteressant.png"&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="com"&gt;// image à protéger&lt;/span&gt;&lt;span class="pln"&gt;
$cp &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; image createfrompng&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"image/copyright.png"&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="com"&gt;// copyright de protection à appliquer&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="kwd"&gt;if&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;(!&lt;/span&gt;&lt;span class="pln"&gt;preg_match&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"~Googlebot-[a-zA-Z]+(/\d+(.\d+)?)?~"&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $_SERVER&lt;/span&gt;&lt;span class="pun"&gt;[&lt;/span&gt;&lt;span class="str"&gt;'HTTP_USER_AGENT'&lt;/span&gt;&lt;span class="pun"&gt;]))&lt;/span&gt;&lt;span class="pln"&gt;
imagesettite&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;$img&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $cp&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;  &lt;/span&gt;&lt;span class="com"&gt;// on applique un motif avec le copyright&lt;/span&gt;&lt;span class="pln"&gt;
imagepng&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;$img&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;
imagedestroy&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;$cp&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;
Si vous voulez que la personne soit redirigée quand elle va sur le lien de l'image c'est très simple:&lt;br/&gt;&lt;/p&gt;
&lt;pre class="ipsCode"&gt;
// on précise qu'il s'aigt d'une image png et non d'une page html (php compilé)
header("Content-Type: image/png");
//vous charger l'image avec
$im = imagecreatefrompng("monimage.png");
imagepng($im);
imagedestroy($im);
// ou plus cours et peut-être moins lourd mais risqué au niveau de l'encodage:
echo file_get_contents("monimage.png");						
// et enfin la redirection						
header("Refresh: 0; url=/index.php");
&lt;/pre&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
Maintenant on gère le débit, cette option est plus intéressante pour des plus gros fichiers car les images sont jamais très lourdes. :/&lt;br/&gt;&lt;/p&gt;
&lt;pre class="ipsCode"&gt;
// dans notre exemple on aura un débit de 10Ko/s (très lent)						
$handle = @fopen("monimage.png");						
if ($handle) {						
    while (($buffer = fgets($handle, 1024)) !== false) { // 1024 =&gt; nombre d'octet dans le buffer que l'on écrit						
        echo $buffer;						
        usleep(100); // 10 =&gt; nombre de milliseconde entre chaque envoie, 1000 = 1seconde						
    }						
}
&lt;/pre&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
[En cours de rédaction.... des idées? :)]&lt;br/&gt;&lt;br/&gt;
PS: j'ai tapé le code directement sur le fofo donc s'il a y des fautes prévenez moi^^'
&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-role="contentPageBreak"/&gt;&lt;/div&gt;
&lt;hr data-role="contentPageBreak"/&gt;&lt;/div&gt;
]]></description><link>https://melinyel.net/topic/1853/les-hébergeurs-images</link><guid isPermaLink="true">https://melinyel.net/topic/1853/les-hébergeurs-images</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Wed, 22 Jun 2016 12:16:59 GMT</pubDate></item><item><title><![CDATA[Cours d'initiation aux rudiments du PHP]]></title><description><![CDATA[&lt;div class="ipsType_normal ipsType_richText ipsContained" data-controller="core.front.core.lightboxedImages" itemprop="text"&gt;&lt;p style="text-align:center;"&gt;&lt;img alt="c0d23d2d6769e53e24a1b3136c064577-php_log" src="&lt;base_url&gt;/applications/sslimageproxy/interface/image.php?url=http://www.php.net/manual/fr/images/c0d23d2d6769e53e24a1b3136c064577-php_logo.png"/&gt;&lt;/p&gt;&lt;p style="text-align:center;"&gt;&lt;em&gt;Le PHP est un langage de programmation web permettant d'insérer du contenu dynamique dans vos pages. Ce langage offre de nombreuses possibilités telles que la gestion de news ou encore l'envoie d'eamil et combiné à une base de données, ses performances sont considérables.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Le &lt;strong&gt;PHP &lt;/strong&gt;nécessite de &lt;u&gt;nombreux outils&lt;/u&gt; et de &lt;u&gt;nombreuses heures d’apprentissage&lt;/u&gt;.&lt;/p&gt;&lt;p&gt;Pour commencer, vous aurez besoin de &lt;a data-ipb="nomediaparse" href="http://www.apachefriends.org/fr/index.html" rel="external nofollow" target="_blank"&gt;Xampp &lt;/a&gt;ou &lt;a data-ipb="nomediaparse" href="http://www.wampserver.com/" rel="external nofollow" target="_blank"&gt;Wamp &lt;/a&gt;ou tout autre logiciel incluant &lt;strong&gt;Apache, PHP et MySQL&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Ensuite, je vous conseille vivement de garder la &lt;strong&gt;&lt;a data-ipb="nomediaparse" href="http://www.php.net/manual/fr/" rel="external nofollow" target="_blank"&gt;&lt;u&gt;documentation proposée par PHP&lt;/u&gt;&lt;/a&gt;&lt;/strong&gt; afin de trouver rapidement des fonctions ainsi qu'un &lt;strong&gt;&lt;a data-ipb="nomediaparse" href="http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql" rel="external nofollow" target="_blank"&gt;&lt;u&gt;cours bien rédigé&lt;/u&gt;&lt;/a&gt;&lt;/strong&gt; comme celui de Mateo21 sur OpenClassrooms.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Bien que dans ce cours elles ne sont pas utiles, le PHP requière des connaissances en HTML/CSS. En combinant tous ces langages, vous pourrez obtenir un site à la fois dynamique et élégant. Vous pourrez le rendre encore plus dynamique en utilisant le langage Javascript.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/1760/cours-dinitiation-aux-rudiments-du-php</link><guid isPermaLink="true">https://melinyel.net/topic/1760/cours-dinitiation-aux-rudiments-du-php</guid><dc:creator><![CDATA[Soulalex]]></dc:creator><pubDate>Fri, 04 Sep 2015 22:04:00 GMT</pubDate></item><item><title><![CDATA[Apprendre le PHP]]></title><description><![CDATA[&lt;p style="text-align: center;"&gt;&lt;img alt="c0d23d2d6769e53e24a1b3136c064577-php_log" class="ipsImage" src="https://php.net/manual/fr/images/c0d23d2d6769e53e24a1b3136c064577-php_logo.png"/&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;em&gt;Si vous souhaitez vous lancer dans l'apprentissage du PHP, ce petit guide va vous aider à vous orienter vers les ressources dont vous aurez besoin tout au long de votre formation à ce nouveau langage.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Les outils nécessaire :&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Un éditeur de texte&lt;/strong&gt; (Sublim Text, Notepad++, Bloc note).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Un serveur web avec PHP&lt;/strong&gt; (xampp est un logiciel contenant tous les outils nécessaires pour ce faire).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Un navigateur web&lt;/strong&gt; (Firefox; Chrome) pour accéder à vos applications web avec éventuellement &lt;strong&gt;quelques outils de débug&lt;/strong&gt; (Firebug).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Sur Melinyel :&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="&lt;base_url&gt;/topic/1760-cours-dinitiation-aux-rudiments-du-php/?do=findComment&amp;comment=17266"&gt;Cours d'initation aux rudiments du PHP&lt;/a&gt;&lt;/strong&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt; :&lt;/strong&gt; Ce guide contient l'essentiel pour débuter en PHP. Il va vous permettre d'apprendre les rudiments de ce langage&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Cours :&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;&lt;a href="https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql" rel="external nofollow"&gt;Concevez votre site web avec PHP et MySQL&lt;/a&gt; : &lt;/strong&gt;Ce cours complet créé par Mathieu Nebra d'OpenClassrooms va vous permettre d'atteindre un bon niveau en PHP. Il est a noter que plusieurs mois d'apprentissage sont nécéssaire avant d'acquérir la certification finale.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Tutoriels :&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;a href="&lt;base_url&gt;/topic/437-cr%C3%A9er-un-syst%C3%A8me-de-connexion-inscription-en-php/?do=findComment&amp;comment=4649"&gt;Créer un système de Connexion / Inscription en PHP&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;a href="&lt;base_url&gt;/topic/728-faire-son-propre-bb-code/?do=findComment&amp;comment=7797"&gt;Faire son propre BB-Code&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;a href="&lt;base_url&gt;/topic/469-moteur-de-recherche-de-base/?do=findComment&amp;comment=5088"&gt;Créer un moteur de recherche de base&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;a href="&lt;base_url&gt;/topic/477-gestion-dimage/?do=findComment&amp;comment=5162"&gt;Gestion d'image en PHP&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;Documentations :&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:lucida sans unicode,lucida grande,sans-serif;"&gt;&lt;strong&gt;&lt;a href="https://secure.php.net/manual/fr/index.php" rel="external nofollow"&gt;Documentation officielle en français&lt;/a&gt; :&lt;/strong&gt; Cette documentation est votre amie en toute circonstance. Elle vous permettra de comprendre certaines fonctions dont vous aurez besoin.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
]]></description><link>https://melinyel.net/topic/1733/apprendre-le-php</link><guid isPermaLink="true">https://melinyel.net/topic/1733/apprendre-le-php</guid><dc:creator><![CDATA[Soulalex]]></dc:creator><pubDate>Wed, 19 Aug 2015 17:12:13 GMT</pubDate></item><item><title><![CDATA[Des bouts de code]]></title><description><![CDATA[&lt;p&gt;
Bonjour à tous,
&lt;/p&gt;
&lt;p&gt;
Je fais ce topic pour tout les petits codes pour éviter de faire plein de topic, si vous avez besoin de quelque chose en php vous le dites et je l'ajoute  &lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
1. Tester si un port est ouvert: -&gt; &lt;a href="http://au2.php.net/manual/fr/function.fsockopen.php" rel="external nofollow"&gt;fsockopen&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;div&gt;
 
&lt;/div&gt;
&lt;pre class="ipsCode"&gt;
if (@fsockopen("127.0.0.1", 80, $errno, $errstr, 1) {
// port ouvert
}
#en compact
echo (@fsockopen("127.0.0.1", 80, $errno, $errstr, 1))? "En ligne":"Hors-ligne";
[/php]&lt;/pre&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;p&gt;
- le @ empêche de faire apparaître une erreur si une erreur est rencontré; "127.0.0.1" est à remplacer par l'ip ou le domaine; 80 est à remplacer par le port; $errno et $errstr servent à récupérer l'erreur mais je les mets que pour utiliser le paramètre suivant; 1 est le temps maximum pour que le serveur réponde en seconde (un serveur actuellement prend 0.002sec pour faire un ping à l'opposé du monde en moyen).
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
2. Vérification de base pour un include
&lt;/p&gt;
&lt;blockquote class="ipsQuote" data-cite="AlexMog" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="9737" data-ipsquote-contentid="943" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1406468086" data-ipsquote-username="AlexMog"&gt;
&lt;div class="ipsQuote_citation"&gt;
Le 27/07/2014 à 15:34, AlexMog a dit :
&lt;/div&gt;
&lt;div class="ipsQuote_contents"&gt;
&lt;div&gt;
&lt;p&gt;
Pour ma part, un petit bout de code (j'ai passé pas mal de temps à trouver des solutions pour éviter les failles includes, et j'ai trouvé mon bonheur en travaillant dur en sécu \o/) donc, pour ceux qui ont peur des failles includes:
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
/* on change les // et les .. par rien \o/ (protection++) */
$file = str_replace(array("..", "//"), "", $_GET['file']);
/* Ici, je vérifie que le fichier demandé a bien la même arboressence que l'endroit où je stock mes fichiers*/
if (!file_exists($file) || realpath(dirname($file)) == realpath(".")) { // A noter qu'il faudra changer "." par la racine du des fichiers
echo "File error.";
exit();
}
&lt;/pre&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;
3. Afficher le visage d'un skin minecraft à partir du nom de compte et d'une dimension(optionnel)
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;div&gt;
 
&lt;/div&gt;
&lt;pre class="ipsCode"&gt;
header('Pragma: public');

header('Cache-Control: max-age=86400');

header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400));

header("Content-type: image/png");

$size = (isset($_GET['size'])&amp;amp;&amp;amp;is_numeric($_GET['size'])&amp;amp;&amp;amp;

$_GET['size']&amp;lt;=128&amp;amp;&amp;amp;$_GET['size']&amp;gt;=8) ? $_GET['size'] : 64;

$name = (isset($_GET['name'])) ? $_GET['name'] : "char";

$img = imagecreate($size, $size);

$src = @imagecreatefrompng("http://minecraft.net/skin/{$name}.png");

if(!$src){

$src = @imagecreatefrompng("http://www.minecraft.net/skin/char.png");

}

imagecopyresized($img, $src, 0, 0, 8, 8, $size, $size, 8, 8);

imagepng($img);

imagedestroy($img);

imagedestroy($src);

&lt;/pre&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;p&gt;
- les paramètres (nom et dimension) sont dans l'url (donc en $_GET) la dimension reste carré est s'exprimer à l'aide d'un entier de 8 à 128, si l'utilisateur s'appel "Mars075" et que que l'on veut d'une taille de 32px sur 32px l'url ressemblera à "head.php?name=Mars075&amp;size=32". Si le nom n'est pas spécifié ou si le compte "officiel" n'a pas de skin correspondant le skin par défaut est affiche, si aucune taille n'est spécifiée la taille par défaut est de 64pixels, le site pour les apparences étant assez lent les images sont mises en cache pendant 24 heures (86400 secondes).
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
4. Ma fonction pour charger une image $_FILES sans se soucier de tout les imagecreatefrom*&lt;br/&gt;&lt;/p&gt;
&lt;pre class="ipsCode"&gt;
function imagecreatefromfile($file) {
           $func = "imagecreatefrom".substr($file['name'], strrpos($file['name'], ".")+1);
           $func = stri_replace(array("jpg", "jpe"), "jpeg", $func);
            return (function_exists($func)) ? $func($file['tmp_name']) : false;
}
&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
défaut principal: ne fonctionne pas avec imaged2part mais bon suffit de modifier un peu pour ceux qui l'utilise  &lt;/p&gt;
]]></description><link>https://melinyel.net/topic/943/des-bouts-de-code</link><guid isPermaLink="true">https://melinyel.net/topic/943/des-bouts-de-code</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Sat, 26 Jul 2014 21:04:08 GMT</pubDate></item><item><title><![CDATA[faire son propre BB-Code]]></title><description><![CDATA[&lt;p&gt;
Bonjour à tous,
&lt;/p&gt;
&lt;p&gt;
Donc comme si bien dit dans mon titre je vais vous expliquer comment faire un système de bbcode en php.
&lt;/p&gt;
&lt;p&gt;
Et pour ceux qui ne savent pas ce qu'est le bbcode c'est un système de balise utilisé principalement sur les forums par exemple ici si vous voulez mettre un image avec un lien (si comme moi vous écrivez le bbcode à la main à la place d'utiliser l'interface) vous aurez un "code" comme celui-ci:
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto prettyprinted"&gt;
&lt;span class="pun"&gt;[&lt;/span&gt;&lt;span class="pln"&gt;url&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt;http&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="com"&gt;//mon_utrl/][img=mon_image.png][/url]&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
mais une fois traité il s'affichera sous une forme html:
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint prettyprinted"&gt;
&lt;span class="tag"&gt;&lt;a&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;href&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"http://mon_url/"&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;target&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"_blank"&lt;/span&gt;&lt;span class="tag"&gt;&gt;&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="tag"&gt;&lt;img&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;src&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"mon_image.png"&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;border&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"0"&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="tag"&gt;/&gt;&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="tag"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
ps: dans mon contexte les liens s'ouvrent dans un onglet et le desactive les bords pour IE
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Pourquoi ne pas laisser le code html aux utilisateurs/clients?
&lt;/p&gt;
&lt;p&gt;
Parce que celà fait une faille XSS (&lt;a href="&lt;base_url&gt;/topic/479-faille-de-s%C3%A9curit%C3%A9-les-plus-fr%C3%A9quente-en-relation-directindirect-php/" rel=""&gt;plus d'info sur ce topic&lt;/a&gt;) même si vous pouvez aussi en désactiver/activer certaines seulement.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Je vais donc vous expliquer comment faire:
&lt;/p&gt;
&lt;p&gt;
- une balise orpheline (ex: [ img=], elle n'a aucune fermeture)
&lt;/p&gt;
&lt;p&gt;
- une balise non-orpheline (ex: [ code]
&lt;/p&gt;
&lt;p&gt;
- une balise non-orpheline + paramètre (ex: [ url=], il y a un paramètre en plus dans la balise)
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Donc pour faire notre bbcode vous allons utiliser ce qui s'appel des expressions régulières (aussi appelé "motif de recherche"), un truc que personnellement je n'aime pas car je me trompe souvent... Et donc une expression c'est en réalité une structure dans un texte (par exemple) on peut donc analyser s'il y a des chiffres, une chaîne de caractères ou autre, c'est souvent utilisé pour les e-mails pour voir si ce que vous avez entré ressemble à un e-mail, je ferais donc peut-être (si j'ai le courage un topic sur ça, sinon je connais &lt;a href="http://www.expreg.com/presentation.php" rel="external nofollow"&gt;un site assez bien&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Bref donc nous allons commencer par une balise orpheline:
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-php prettyprinted"&gt;
&lt;span class="com"&gt;// Contexte: J'ai fais une shoutbox et je mettre en place une balise [ img=] donc &lt;img... en html&lt;/span&gt;&lt;span class="pln"&gt;
$msg &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"Bonjour! [img=heart.gif]"&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
$bb &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;'#[ img=(.+)]#iUs'&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
$htm &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;'&lt;img src="$1" border="0" /&gt;'&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
$msg &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; preg_replace&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;$bb&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $htm&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $msg&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Donc l'expression: '##iUs'
&lt;/p&gt;
&lt;p&gt;
- Elle est délimité par des #
&lt;/p&gt;
&lt;p&gt;
- On utilise les antislashes ("") avant certains caractères car ils peuvent être utilisé pour la structure (expression), caractères tels "[", "]", "(", ")", ...
&lt;/p&gt;
&lt;p&gt;
- "(.+)" :
&lt;/p&gt;
&lt;p&gt;
- - les parenthèses "()" symbolise un groupement littéral
&lt;/p&gt;
&lt;p&gt;
- - le point (".") symbolise qu'il peut s'agir de n'importe quel caractère et le plus ("+) symbolise qu'il peut y avoir 1 ou plusieurs caractères
&lt;/p&gt;
&lt;p&gt;
- "#iUs' :
&lt;/p&gt;
&lt;p&gt;
- - "i" effectuer une recherche insensible à la casse (par de différence entre une lettre majuscule et une minuscule).
&lt;/p&gt;
&lt;p&gt;
- - "U" cette option inverse la tendance à la gourmandise des expressions rationnelles.
&lt;/p&gt;
&lt;p&gt;
- - "s" permet au point "." de correspondre à encore plus de caractères et/ou un retour à la ligne.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
&gt; &lt;a href="http://au2.php.net/manual/fr/reference.pcre.pattern.modifiers.php" rel="external nofollow"&gt;Documentation PHP::Options de recherche&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Maintenant une balise pour center donc [centre][/centre] devient &lt;center&gt;&lt;/center&gt;, je vais un peux compacter le code pour avoir plus simple:
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto prettyprinted"&gt;
&lt;span class="pln"&gt;$msg &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"[centre]Coucou![/centre]"&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
$msg &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; preg_replace&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;'#[centre](.+)[/centre]#iUs'&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;'&lt;center&gt;$1&lt;/center&gt;'&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $msg&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Il a donc suffit de déplacer "(.+)" et pour ceux qui n'avait pas encore compris la partie trouvée ici va remplacer le "$1", il sagit en réalité d'un tableau donc quand vous cherchez plusieurs expressions vous avez donc "$2", "$3",.. qui arrive.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Nous allons donc maintenant avoir une balise avec un paramètre et pour complexer un peut on va dire que le paramètre est obligatoirement un chiffre décimal ^-^
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto prettyprinted"&gt;
&lt;span class="com"&gt;// balise [taille=][/taille] remplacée par &lt;font size=""&gt;&lt;/font&gt;&lt;/span&gt;&lt;span class="pln"&gt;
$msg &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"[taille=5]Hello World! [/taille]"&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
$msg &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; preg_replace&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;'#[taille=(\d+)](.+)[/taille]#iUs'&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="str"&gt;'&lt;font size="$1"&gt;$2&lt;/font&gt;'&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $msg&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Comme vous le voyait j'ai mis la mettre "\d" à la place d'un "." donc à la place de chercher n'importe quel caractère je dis que c'est un chiffre décimal et le "+" spécifie qu'il peut-être composé de plusieurs chiffres même si je pense que font-size ne peut prendre que une valeur entre 1 et 5 j'aurais pu mettre directement "([1-2-3-4-5])" mais bon je ferais une explication plus détaillée dans un prochain topic  &lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
PS: pour les smileys c'est un simple str_replace():
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto prettyprinted"&gt;
&lt;span class="pln"&gt;str_replace&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;":D"&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"&lt;img src="images/smiley.gif" /&gt;"&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; $msg&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
PPS: et si vous avez plusieurs balise directement vous pouvez faire un tableau (si vous voulez vous pouvez mettre par exemple $htm[0] = "&lt;b&gt;$1&lt;/b&gt;"; et donc pour reprendre toutes les balises faites + anti-faille XSS dans une fonction:
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-html prettyprinted"&gt;
&lt;span class="pln"&gt;function BBCode($msg = '') {
$msg = htmlentities($msg); // suprresion des caractères spéciaux (html), à placer avant les modifications sinon vous affichez le message avec les balises (en lisible)
$bb = array(
'#[img=(.+)]#iUs',
'#[centre](.+)[/centre]#iUs',
'#[taille=(\d+)](.+)[/taille]#iUs',
'#[url=(.*)](.+)[/taille]#iUs'
);
$htm = array(
'&lt;/span&gt;&lt;span class="tag"&gt;&lt;img&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;src&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"$1"&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;border&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"0"&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="tag"&gt;/&gt;&lt;/span&gt;&lt;span class="pln"&gt;',
'&lt;/span&gt;&lt;span class="tag"&gt;&lt;center&gt;&lt;/span&gt;&lt;span class="pln"&gt;$1&lt;/span&gt;&lt;span class="tag"&gt;&lt;/center&gt;&lt;/span&gt;&lt;span class="pln"&gt;',
'&lt;/span&gt;&lt;span class="tag"&gt;&lt;font&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;size&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"$1"&lt;/span&gt;&lt;span class="tag"&gt;&gt;&lt;/span&gt;&lt;span class="pln"&gt;$2&lt;/span&gt;&lt;span class="tag"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span class="pln"&gt;',
'&lt;/span&gt;&lt;span class="tag"&gt;&lt;a&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;src&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"$1"&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;target&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;"_blank"&lt;/span&gt;&lt;span class="tag"&gt;&gt;&lt;/span&gt;&lt;span class="pln"&gt;$2&lt;/span&gt;&lt;span class="tag"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="pln"&gt;'
);
return preg_replace($bb, $htm, $msg);
}
echo BBCode("[centre]&lt;/span&gt;&lt;span class="tag"&gt;&lt;b&gt;&lt;/span&gt;&lt;span class="pln"&gt;XSS&lt;/span&gt;&lt;span class="tag"&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="pln"&gt;[/centre]");&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;&lt;span style="color:#FF0000;"&gt;/!\j'ai mis des espaces dans les balises pour pouvoir publier (ex: "[ img]")!&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Bonne programmation à tous!
&lt;/p&gt;
&lt;p&gt;
Cordialement,
&lt;/p&gt;
&lt;p&gt;
Mars073
&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/728/faire-son-propre-bb-code</link><guid isPermaLink="true">https://melinyel.net/topic/728/faire-son-propre-bb-code</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Mon, 19 May 2014 16:08:25 GMT</pubDate></item><item><title><![CDATA[[Cours 1 - Débutant] Les bases du PHP.]]></title><description><![CDATA[&lt;p&gt;&lt;span style="color:#000000;"&gt;Yop, donc tout d'abord je fais un petit tutoriel sur les bases du PHP.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Bien sûr ce tutoriel aura une suite, faisons comme si vous étiez des débutants en PHP et que vous devez suivre des tutoriels, cours par cours. Ce tutoriel sera basé sur les choses que j'ai appris, vous pouvez également suivre une formation ailleurs et apprendre les mêmes fonctions qu'il y a sur ce tutoriel.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Le tutoriel reste simple, il faut être un minimum logique et gérer l'HTML.&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;
 &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;strong&gt;&lt;span style="color:#6699ff;"&gt;&lt;span style="font-size:18px;"&gt;I. La différence entre l'XHTML et le PHP&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt; &lt;/p&gt;
&lt;br/&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;Le PHP peut être utilisé sur l'XHTML donc j'explique cela sous forme d'exemple.&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Exemple de code XHTML n'utilisant pas le PHP&lt;/strong&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-html"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"&gt;
&lt;head&gt;
&lt;title&gt;Melinyel&lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
&lt;link rel="stylesheet" href="style.css" media="screen" type="text/css" /&gt;
&lt;/head&gt;
&lt;body&gt;
Bienvenue sur Melinyel !
&lt;/body&gt;
&lt;/html&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Exemple de code XHTML utilisant le PHP&lt;/strong&gt; :&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"&gt;
&lt;head&gt;
&lt;title&gt;Melinyel&lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
&lt;link rel="stylesheet" href="style.css" media="screen" type="text/css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php echo 'Bienvenue sur Melinyel !'; ?&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Donc comme vous l'avez vu, il y a une légère différence et c'est l'affichage de texte.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Pour qu'un texte soit affiché, il faut faire&lt;/span&gt; &lt;strong&gt;&lt;span style="color:#ff8c00;"&gt;&lt;?php echo 'Votre texte'; ?&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;Un autre exemple ?&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Sur votre code HTML&lt;/strong&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
L'affichage d'un texte.
 
Version HTML :
[Vos lignes de code...]
&lt;p&gt;Bienvenue sur Melinyel !&lt;/p&gt;
[Vos lignes de code...]
 
Version PHP :
[Vos lignes de code...]
&lt;?php echo '&lt;p&gt;Bienvenue sur Melinyel !&lt;/p&gt;'; ?&gt;
[Vos lignes de code...]
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Donc ici, votre code est inséré entre les deux &lt;strong&gt;'&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="color:#6699cc;"&gt;&lt;strong&gt;&lt;span style="font-size:18px;"&gt;II. Débuter en PHP&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:14px;"&gt;Un code utilisant le PHP est présenté sur&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff8c00;"&gt;&lt;span style="font-size:14px;"&gt; ces deux balises&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:14px;"&gt; :&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#ff8c00;"&gt;&lt;strong&gt;&lt;span style="font-size:14px;"&gt;&lt;?php&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;// Le code PHP&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#ff8c00;"&gt;&lt;strong&gt;?&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Ce sont des balises &lt;span style="font-family:Verdana, Arial, Helvetica;"&gt;appelées &lt;/span&gt;&lt;strong&gt;tags. &lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;Plus bas, on voit que j'ai utilisé "//", c'est quoi ça ? C'est un commentaire.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Personnellement, j'utilise les // pour me retrouver dans mon code.&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;Exemple  :&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
else
{ // Si l'utilisateur ne demande aucune page
    include "templates/public/accueil.inc.php"; // J'inclus la page d'accueil.
}
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Ensuite, exemple plus simple si vous n'avez pas compris :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"&gt;
&lt;head&gt;
&lt;title&gt;Melinyel&lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
&lt;link rel="stylesheet" href="style.css" media="screen" type="text/css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php echo 'Bienvenue sur Melinyel !'; ?&gt; // Texte de bienvenue
&lt;/body&gt;
&lt;/html&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;En gros, ceci représente les "&lt;!-- texte --&gt;" qu'on utilise en HTML.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="color:#3399ff;"&gt;&lt;strong&gt;&lt;span style="font-size:18px;"&gt;III. Les variables&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br/&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial, helvetica, sans-serif;"&gt;Une variable va contenir des données, ces données pourront changer au fil du temps. &lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Imaginons que vous voulez affiché le prénom d'un visiteur.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Vous ne pouvez pas l'affiché directement comme ceci :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
    echo 'prénom'; 
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Mais là vous pouvez l'affiché :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     $prenom = 'Baptiste'; 
 
     echo $prenom; // Affiche "Baptiste" 
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;En gros &lt;strong&gt;$prenom&lt;/strong&gt; s'affichera sur votre site &lt;strong&gt;Baptiste&lt;/strong&gt;.&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;Autres exemples réunis :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     $nom    = 'Mades'; 
     $prenom = 'Baptiste'; 
 
     echo $nom.$prenom; // Va afficher "MadesBaptiste" 
     echo $nom.' '.$prenom; // Va afficher "Mades Baptiste" 
 
     echo '$nom.$prenom'; // Va afficher "$nom.$prenom" 
     echo '$nom$prenom'; // Va afficher $nom$prenom 
 
     $nom .= $prenom; // est équivalent à $nom = $nom . $prenom 
 
     echo $nom; // Affichera "MadesBaptiste" 
 
     $nom  = 'Mades'; 
 
     $nom .= ' '.$prenom; 
 
     echo $nom; // Affichera "Mades Baptiste" 
?&gt;
&lt;/pre&gt;&lt;p style="text-align:center;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:18px;"&gt;Les opérations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br/&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;+ = Addition&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;- = Soustration&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;* = Multiplication&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;/ = Division&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;% = Division entière (modulo)&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;Exemple d'opération (&lt;strong&gt;qui n'est pas de mo&lt;/strong&gt;i) :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;?php 
     $entier   = 7; 
     $flottant = 2.5; 
     $somme    = 4 + 5; // $somme vaut 9 
     $multiplic= 25;   // $multiplic vaut 10 
     $division = 9/3;   // $division vaut 3 
     $modulo   = 10 % 3 // $modulo vaut 1 
 
     $multi_variables = $entier * $flottant; //7 * 2.5 = 17.5 donc $multi_variables vaut 17.5
?&gt;&lt;/pre&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="color:#990000;"&gt;&lt;span style="font-size:18px;"&gt;Ajouter des paramètres à sa page ?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br/&gt;&lt;br/&gt;&lt;p style="text-align:center;"&gt; &lt;/p&gt;
&lt;br/&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;Pour avoir ceci :&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;&lt;a href="http://loremgraphics.com/index.php?prenom=valeur&amp;amp;style=1" rel="external nofollow"&gt;http://melinyel.net/index.php?prenom=valeur&amp;amp;style=1&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Il faut faire :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     $_GET['prenom'] = 'X'; // Le prénom
     $_GET['style']  = '1'; // Style qui est ici une chaîne de caractères 
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;$_GET &lt;/strong&gt;sont appelés des variables superglobales.&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Exemple de code XHTML&lt;/strong&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-html"&gt;
&lt;form method="post" action="index.php"&gt;
&lt;p&gt;&lt;input type="text" name="age" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;input type="submit" value="Envoyer" /&gt;&lt;/p&gt;
&lt;/form&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Exemple de code PHP&lt;/strong&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     if(isset($_POST['age']) AND ctype_digit($_POST['age']) AND $_POST['age'] &gt; 0) 
     { 
          echo htmlentities($_POST['age']); 
     } 
?&gt;
&lt;/pre&gt;&lt;p style="text-align:center;"&gt;&lt;strong&gt;&lt;span style="color:#6699ff;"&gt;&lt;span style="font-size:18px;"&gt;IV. Les fonctions include et require.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;br/&gt;&lt;p style="text-align:center;"&gt; &lt;br/&gt;&lt;strong&gt;&lt;span style="font-family:tahoma, geneva, sans-serif;color:rgb(0,0,0);text-align:center;"&gt;Sinon, les "include" et "require" servent à quoi ?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;br/&gt;&lt;p&gt; &lt;br/&gt;&lt;span style="color:#000000;"&gt;Tu possèdes un site qui à le même menu sur la droite du site en XHTML et que tu es obligés de copier/coller le même code à chaque fois sur d'autres pages. (Exemple : Ton menu de la page index et le même que celui de la page inscription) Et bien, ces fonctions vont te faciliter la tâche.&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;
 &lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:18px;"&gt;&lt;span style="color:#ff8c00;"&gt;Utilisation de la fonction include&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt; &lt;/p&gt;
&lt;br/&gt;&lt;p&gt;Le code ne doit pas être obligatoirement en PHP, inutile de vous cassez la tête.&lt;br/&gt;
Vous faites le code en HTML mais vous l'enregistrez en .php&lt;br/&gt;
Exemple, je crée un fichier "haut.php"&lt;br/&gt;&lt;strong&gt;Contenu&lt;/strong&gt; :&lt;br/&gt;
 &lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-html"&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"&gt;
&lt;head&gt;
&lt;title&gt;Melinyel&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Bienvenue sur Melinyel !&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;/pre&gt;
&lt;p&gt;Ce qu'il y aura sur votre index.php :&lt;br/&gt;
 &lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     include 'haut.php'; 
 
     echo 'Contenu du site'; // Le contenu du site entier
?&gt;
&lt;/pre&gt;&lt;p style="text-align:center;"&gt;&lt;span style="color:#ff8c00;"&gt;&lt;span style="font-size:18px;"&gt;Utilisation de la fonction require&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br/&gt;&lt;p&gt; &lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;Inutile d'expliquer, des exemples seront mieux que des explications.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Exemple du code&lt;/strong&gt; (pas entier) :&lt;/span&gt;&lt;br/&gt;
 &lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     include 'verif.php'; 
 
     / 
     * Code qui s’exécutera si l'identification est réussi
     / 
 
     echo 'Vous êtes membre !'; 
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Ce qu'il y a sur votre "verif.php"&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     if(!est_membre()) 
     { 
          exit('Vous devez être membre pour accéder à cette page'); 
     } 
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;Sauf qu'ici j'utilise la fonction &lt;strong&gt;include&lt;/strong&gt; si vous avez bien suivis.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;J'utilise la fonction est_membre() qui renvoie au TRUE et si le membre n'est pas identifié elle renvoie au FALSE.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Or, si le fichier "verif.php" n'existe pas, le site affichera "Vous êtes membre !" mais ce n'est pas ce qu'on veut faire.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Donc on utilise la fonction require.&lt;/span&gt;&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php 
     require 'verification.php'; // Coupera l'exécution du code si le fichier n'a pu être inclus par PHP.
 
     / 
     * Code qui s’exécutera si l'identification est réussi
     */ 
 
     echo 'Vous êtes membre !'; 
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial, helvetica, sans-serif;"&gt;En gros, &lt;strong&gt;require&lt;/strong&gt; permet à la différence d'include de couper l'exécution du script PHP si le fichier à inclure n'a pu être inclus.&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
 &lt;br/&gt;&lt;span style="color:#000000;"&gt;Pour l'instant vous en savez plus sur le PHP.&lt;/span&gt;&lt;br/&gt;&lt;span style="color:#000000;"&gt;Pour des questions, merci d'en poser sur le tutoriel.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;strong&gt;&lt;span style="color:#b22222;"&gt;Il est interdit de mettre ce tutoriel sur un autre site, il est fait pour Melinyel ; Millenium-Corp et LoremGraphics.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;br/&gt;&lt;em&gt;Anciennement Mades ; Makaveli sur d'autres forums.&lt;/em&gt;&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/538/cours-1-débutant-les-bases-du-php</link><guid isPermaLink="true">https://melinyel.net/topic/538/cours-1-débutant-les-bases-du-php</guid><dc:creator><![CDATA[JonSnow]]></dc:creator><pubDate>Sat, 19 Apr 2014 14:47:56 GMT</pubDate></item><item><title><![CDATA[Captcha (anti-robot)]]></title><description><![CDATA[&lt;p&gt;Bonjour à tous,&lt;br/&gt;
J'ai fais un topic sur la création d'image et la sécu, et j'ai eu aucun commentaire :E&lt;br/&gt;
mais bon là je vais faire un mélange des 2 je vais vous expliquer comment faire une captcha de base.&lt;br/&gt;&lt;br/&gt;
Pour ceux qui ne qui n'ont jamais entendu parler des captcha, et non chapka (le chapeau russe), c'est le plus nouveau une suite de chiffre ou/et de lettre qu'il faut recopier lorsque l'on inscrit ou que l'on fait appel à un service sur un site.&lt;br/&gt;&lt;br/&gt;
Contexte: On doit généré un code qui fait entre 3 et 5 caractères alphanumérique en majuscule sauf 0 (car c'est lourd mélanger le O et le 0).&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
$chars = "123456789AZERTYUIOPQSDFGHJKLMWXCVBN"; // La liste des caractères possible
$code = "";
$code_len = rand(3, 5); // longueur de code aléatoire
for ($i = 0; $i &lt; $code_len; $i++) {
$code .= $chars[rand(0, strlen($chars)-1)]; // ajout d'un caractère au hasard
}
echo $code;
?&amp;gt;

&lt;/pre&gt;
&lt;p&gt;maintenant on génère un image avec:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
header('Expires: Mon, 1 Jan 2000 01:00:00 GMT'); // date à la quelle l'image doit d'être supprimée (il y a +14 ans xD)
header('Cache-Control: no-store, no-cache, must-revalidate'); // on dit que ça doit pas mettre sauvegardé dans le cache
header('Cache-Control: post-check=0, pre-check=0', false); // même chose
header("Content-type: image/png"); // type d'image png, vous pouvez aussi mettre en jpeg et diminuer la qualité pour avoir un truc pour perturber les robots...
$img = imagecreatetruecolor(120, 30); // génération d'une image de 120px de large et 30px de haut
imagefill($img, 0, 0, 0xFFFFFF); // la couleur de fond est blanc dans ce cas-ci

$chars = "123456789AZERTYUIOPQSDFGHJKLMWXCVBN"; // La liste des caractères possible
$code = "";
$code_len = rand(3, 5); // longueur de code aléatoire
for ($i = 0; $i &amp;lt; $code_len; $i++) {
	$code .= $chars[rand(0, strlen($chars)-1)]; // ajout d'un caractère au hasard
}

imagestring($img, 5, 20, 10, $code, 0x000000);

imagepng($img);
imagedestroy($img);
?&amp;gt;

&lt;/pre&gt;
&lt;p&gt;rendu: &lt;img alt="captcha.old.png" src="http://mars073.zz.mu/demo/captcha/captcha.old.png"/&gt;&lt;br/&gt;
fonction non-vu dans mon autre topic:&lt;br/&gt;


&lt;a href="http://be2.php.net/manual/fr/function.imagecreatetruecolor.php" rel="external nofollow"&gt;imagecratetruecolor()&lt;/a&gt; crée une image avec toute les couleurs (+16 million).&lt;br/&gt;


&lt;a href="http://be2.php.net/manual/fr/function.imagefill.php" rel="external nofollow"&gt;imagefill()&lt;/a&gt; ça vous permet de remplir votre image d'une certaine couleur.&lt;br/&gt;


&lt;a href="http://be2.php.net/manual/fr/function.imagestring.php" rel="external nofollow"&gt;imagestring()&lt;/a&gt; écrire un simple texte sur l'image.&lt;br/&gt;&lt;br/&gt;
0x000000 est l'équivalent du code couleur hexadécimal #000000 le système souvent utilisé en html, css, lua, etc. Normalement on utilise une variable (car les couleurs ne sont pas correctes de mémoire) le code pour le remplissage aurait donc due être:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
$blanc = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $blanc); // la couleur de fond est blanc dans ce cas-ci
?&gt;
&lt;/pre&gt;
&lt;p&gt;la fonction &lt;a href="http://be2.php.net/manual/fr/function.imagecolorallocate.php" rel="external nofollow"&gt;imagecolorallocate()&lt;/a&gt; permet de déclarer une couleur en peu comme en css avec par exemple: "rgb( 255, 255, 255);".&lt;br/&gt;&lt;br/&gt;
une image php peut se mettre au même titre que n'importe quelle image dans un code html:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;!-- Contexte: L'image php s'appel "captcha.php" et se trouve dans le même dossier que le code html --&gt;
&lt;img src="captcha.php" border="0"&gt;
&lt;input type="text" name="antirobot" placeholder="Recopier le code..."&gt;
&lt;/pre&gt;
&lt;p&gt;Mais comment on fait pour connaître code après? simplement avec une variable $_SESSION et au passage on va ajouter entre 2 et 6 lignes en arrière-plan.&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
session_start();
header('Expires: Mon, 1 Jan 2000 01:00:00 GMT'); // date à la quelle l'image doit d'être supprimée (il y a +14 ans xD)
header('Cache-Control: no-store, no-cache, must-revalidate'); // on dit que ça doit pas mettre sauvegardé dans le cache
header('Cache-Control: post-check=0, pre-check=0', false); // même chose
header("Content-type: image/png"); // type d'image png, vous pouvez aussi mettre en jpeg et diminuer la qualité pour avoir un truc pour perturber les robots...
$img = imagecreatetruecolor(120, 30); // génération d'une image de 120px de large et 30px de haut
imagefill($img, 0, 0, 0xFFFFFF); // la couleur de fond et blanc dans ce cas-ci
$chars = "123456789AZERTYUIOPQSDFGHJKLMWXCVBN"; // La liste des caractères possible
$code = "";
$code_len = rand(3, 5); // longueur de code aléatoire
$line_n = rand(2, 6); // nombre de ligne aléatoire entre 2 et 6
for ($i=0; $i &lt; $line_n; $i++) {
// position du point de départ et de fin de la ligne au hasard
imageline($img, rand(1, imagesx($img)), rand(1, imagesy($img)), rand(1, imagesx($img)), rand(1, imagesy($img)), 0x000000);
}
for ($i = 0; $i &lt; $code_len; $i++) {
$code .= $chars[rand(0, strlen($chars)-1)]; // ajout d'un caractère au hasard
}
$_SESSION['code'] = $code;
imagestring($img, 5, 20, 10, $code, 0x000000);
imagepng($img);
imagedestroy($img)
?&gt;
&lt;/pre&gt;
&lt;p&gt;fonctions:&lt;br/&gt;


&lt;a href="http://be2.php.net/manual/fr/function.imageline.php" rel="external nofollow"&gt;imageline()&lt;/a&gt; tracer une ligne sur une image avec un point de départ et un point de fin.&lt;br/&gt;


&lt;a href="http://be2.php.net/manual/fr/function.imagesx.php" rel="external nofollow"&gt;imagesx()&lt;/a&gt; retourne la largeur de l'image.&lt;br/&gt;


&lt;a href="http://be2.php.net/manual/fr/function.imagesy.php" rel="external nofollow"&gt;imagesy()&lt;/a&gt; retourne la hauteur de l'image.&lt;br/&gt;&lt;br/&gt;
Protégé contre les robots? haha t'es marrant, je te tuerais en dernier. En faite il est extrêmement compliqué... enfin les vrai robot pas les trucs en mousse codé en javascript ou en vb.&lt;br/&gt;&lt;br/&gt;
maintenant on va faire en sorte que les lettres soient positionnées un peu aléatoirement:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
session_start();
header('Expires: Mon, 1 Jan 2000 01:00:00 GMT'); // date à la quelle l'image doit d'être supprimée (il y a +14 ans xD)
header('Cache-Control: no-store, no-cache, must-revalidate'); // on dit que ça doit pas mettre sauvegardé dans le cache
header('Cache-Control: post-check=0, pre-check=0', false); // même chose
header("Content-type: image/png"); // type d'image png, vous pouvez aussi mettre en jpeg et diminuer la qualité pour avoir un truc pour perturber les robots...
$img = imagecreatetruecolor(120, 30); // génération d'une image de 120px de large et 30px de haut
imagefill($img, 0, 0, 0xFFFFFF); // la couleur de fond et blanc dans ce cas-ci
$chars = "123456789AZERTYUIOPQSDFGHJKLMWXCVBN"; // La liste des caractères possible
$code = "";
$code_len = rand(3, 5); // longueur de code aléatoire
$line_n = rand(2, 6); // nombre de ligne aléatoire entre 2 et 6
for ($i=0; $i &lt; $line_n; $i++) {
// position du point de départ et de fin de la ligne au hasard
imageline($img, rand(1, imagesx($img)), rand(1, imagesy($img)), rand(1, imagesx($img)), rand(1, imagesy($img)), 0x000000);
}
for ($i = 0; $i &lt; $code_len; $i++) {
$char = $chars[rand(0, strlen($chars)-1)]; // un caractère au hasard
$code .= $char; // ajout du catactère
imagestring($img, 5, 20+($i*12)+rand(-2, 2), 10+rand(-10, 5), $char, 0x000000);
}
$_SESSION['code'] = $code;
imagepng($img);
imagedestroy($img)
?&gt;
&lt;/pre&gt;
&lt;p&gt;maintenant on va mettre des couleurs et flouter l'image avec une matrix:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
session_start();
header('Expires: Mon, 1 Jan 2000 01:00:00 GMT'); // date à la quelle l'image doit d'être supprimée (il y a +14 ans xD)
header('Cache-Control: no-store, no-cache, must-revalidate'); // on dit que ça doit pas mettre sauvegardé dans le cache
header('Cache-Control: post-check=0, pre-check=0', false); // même chose
header("Content-type: image/png"); // type d'image png, vous pouvez aussi mettre en jpeg et diminuer la qualité pour avoir un truc pour perturber les robots...
$img = imagecreatetruecolor(120, 30); // génération d'une image de 120px de large et 30px de haut
imagefill($img, 0, 0, 0xA3A3A3); // la couleur de fond et blanc dans ce cas-ci
$chars = "123456789AZERTYUIOPQSDFGHJKLMWXCVBN"; // La liste des caractères possible
$code = "";
$code_len = rand(3, 5); // longueur de code aléatoire
$line_n = rand(2, 6); // nombre de ligne aléatoire entre 2 et 6
for ($i=0; $i &lt; $line_n; $i++) {
// position du point de départ et de fin de la ligne au hasard
imageline($img, rand(1, imagesx($img)), rand(1, imagesy($img)),
rand(1, imagesx($img)), rand(1, imagesy($img)), "0x".dechex(rand(20, 200)).dechex(rand(20, 200)).dechex(rand(20, 200)));
}
for ($i = 0; $i &lt; $code_len; $i++) {
$char = $chars[rand(0, strlen($chars)-1)]; // un caractère au hasard
$code .= $char; // ajout du catactère
imagestring($img, 5, 20+($i*12)+rand(-2, 2), 10+rand(-10, 5), $char, "0x".dechex(rand(180, 255)).dechex(rand(180, 255)).dechex(rand(180, 255)));
}
$_SESSION['code'] = $code;
$flou = array(
array(1.0, 2.0, 1.0),
array(2.0, 4.0, 2.0),
array(1.0, 2.0, 1.0)
);
imageconvolution($img, $flou, 16, 0);
imagepng($img);
imagedestroy($img)
?&gt;
&lt;/pre&gt;
&lt;p&gt;ps: la fonction &lt;a href="http://be2.php.net/manual/fr/function.dechex.php" rel="external nofollow"&gt;dechex()&lt;/a&gt; permet de transformer un chiffre décimal en hexadécimale pour le code couleur.&lt;br/&gt;
et donc le test de la captcha en requête POST (par exemple) donnerait:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
session_start();
if (isset($_POST['antirobot'])) {
if ($_POST['antirobot']==$_SESSION['code']) {
echo "Le code est valide";
} else {
echo "Le code est incorrect";
}
}
?&gt;
&lt;/pre&gt;
&lt;p&gt;Rendu final: &lt;img alt="captcha.png" src="http://mars073.zz.mu/demo/captcha/captcha.png"/&gt;&lt;br/&gt;
moche et compliqué à lire, c'est ça le principe? non à vous de modifier  &lt;br/&gt;&lt;br/&gt;
Bonne programmation à tous!&lt;br/&gt;
Cordialement,&lt;br/&gt;
Mars073&lt;/p&gt;


]]></description><link>https://melinyel.net/topic/493/captcha-anti-robot</link><guid isPermaLink="true">https://melinyel.net/topic/493/captcha-anti-robot</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Fri, 11 Apr 2014 21:38:50 GMT</pubDate></item><item><title><![CDATA[Failles de sécurité les plus fréquentes en relation directe/indirecte php]]></title><description><![CDATA[&lt;p&gt;Bonjour à tous,&lt;/p&gt;&lt;p&gt;Aujourd'hui je fais essayer de faire un truc plus sérieux, les failles les plus courantes (sql, xss, csrf et exploit cookie).&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Les failles SQL, c'est le fait que le client peut modifier une requête sql sur vote site, ses failles peuvent permettent de modifier, afficher, supprimer toutes les tables voir la base de donnée.&lt;/p&gt;&lt;p&gt;Contexte: J'affiche mes news avec une variable ?page dans l'url&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
$query = mysql_query("SELECT * FROM news LIMIT ".$GET['page'].",10");
?&gt;
&lt;/pre&gt;normalement l'url va ressemble à: &lt;a href="http://mars073.be/faille.php?page=2" rel="external nofollow"&gt;http://mars073.be/faille.php?page=2&lt;/a&gt; .&lt;p&gt;mais si quelqu'un écrit : &lt;a href="http://mars073.be/faille.php?page=2;TRUNCATE `news`#" rel="external nofollow"&gt;http://mars073.be/faille.php?page=2;TRUNCATE `news`#&lt;/a&gt;&lt;/p&gt;&lt;p&gt;bah... vous perdez toutes vos news, la requête sera double:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;SELECT * FROM news LIMIT 2;
TRUNCATE news;
#,10
&lt;/pre&gt;il existe des programmes pour exploiter plus facilement les failles ils permettent aussi de lister les autres tables ..&lt;p&gt;&lt;/p&gt;&lt;p&gt;solution:&lt;/p&gt;&lt;p&gt;1 - vérifier que la variable est un chiffre (numérique);&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
$page = 0;
if (isset($_GET['page'])&amp;&amp;is_numeric($_GET['page'])) $page = $_GET['page'];
$query = mysql_query("SELECT * FROM news LIMIT $page,10");
?&gt;
&lt;/pre&gt;étrangement cette erreur est très fréquente encore... mais bon parfois y a un pare-feu derrière et c'est pas marrant  &lt;p&gt;&lt;/p&gt;&lt;p&gt;2-dans le cadre où il s'agit d'un texte faites appel à la fonction: addslashes(). Exemple: $titre = addslashes($_GET['titre']);&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;3-Simplement coder en pdo mais ça peut-être dérangeant quand vous n'avez pas codé le site et que vous devez donc tout refaire...&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Les failles xss, aussi très courantes c'est une faille qui permet au client d'afficher du code html ou javascript, ce qui permet de faire des forkbomb, redirections, voler les logins, etc.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Contexte: je débute et j'ai fais une chatbox avec une faille xss:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
$query = $cxn-&gt;query("SELECT * FROM chat");
$query-&gt;execute();
while ($msg = $query-&gt;fetch()) {
echo $msg['user']." a dit:".$msg['content'];
}
?&gt;
&lt;/pre&gt;maintenant Jean-Kevin envoie le message suivant:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;meta http-equiv="refresh" content="0;url=http://JeanKevdu06.free.fr/"&gt;
&lt;/pre&gt;ce qui aura pour effet de rediriger une fois la page charger sur un autre site.&lt;p&gt;&lt;/p&gt;&lt;p&gt;pour pallier à ce problème il suffit de faire appel à une fonction: &lt;a href="http://be2.php.net/manual/fr/function.htmlspecialchars.php" rel="external nofollow"&gt;htmlspecialchars()&lt;/a&gt;, il existe d'autre fonction avec plus où moins le même effet, c'est à dire convertir le code en caractère lisible.&lt;/p&gt;&lt;p&gt;exemple avec le code au dessus:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
$query = $cxn-&gt;query("SELECT * FROM chat");
$query-&gt;execute();
while ($msg = $query-&gt;fetch()) {
$msg['content'] = htmlspecialchars($msg['content']);
// Dans le contexte le nom d'utilisateur ne peut pas comporter de caractères spéciaux.
echo $msg['user']." a dit:".$msg['content'];
}
?&gt;
&lt;/pre&gt;je considère les failles "include" comme des failles xss mais si c'est pas totalement vrai, je suppose que vous connaissez tous la fonction &lt;a href="http://be2.php.net/manual/fr/function.include.php" rel="external nofollow"&gt;include()&lt;/a&gt;, vu que c'est la base du php... Bref beaucoup de site utile utilise une variable $_GET (ex: $_GET['p']) et donc il font un code du genre:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
if (isset($_GET['p'])&amp;&amp;is_file($_GET['p'])) include("pages/".$GET['p'].".php");
?&gt;
&lt;/pre&gt;mais bon une fois de plus si le méchant utilisateur change l'url: en ?p=../includes/config bah... ça inclue le fichier config ..&lt;p&gt;il y a beaucoup de façon différente pour résoudre cette faille mais dans le contexte ej vais utiliser le switch()&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
if (isset($_GET['p'])) { //on test si la page est spécifiée
switch (strtolower($_GET['p'])) { // test la valeur de la variable en minuscule pour avoir plus facile
case 'home':
include("pages/home.php"); //l'acccueil
break;
case 'contact':
include("pages/contact.php");
break;
case 'machin':
include("pages/machin.php"); // machin
break;
default:
include("pages/404.php"); //page d'erreur
}
} else {
include("pages/home.php"); //si aucune page spécifiée on met l'accueil
}
?&gt;
&lt;/pre&gt;Les failles csrf, déjà plus rare, ça consiste dans le faire exécuter par le biais d'une image comme une signature sur un forum, je vais prendre pour exemple un forum.&lt;p&gt;Contexte: Je fais une signature qui va vous déconnecter automatiquement quand vous l'afficherait:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;je mets le lien pour se déconnecter comme le lien d'une image.
[img=http://forum.mars073.be/deconnect.php]
&lt;/pre&gt;Dans ce cas ci il faut utiliser un token, c'est une variable qui va contenir une suite aléatoire.&lt;p&gt;Exemple dans votre script de connexion vous allez surement utiliser des variables $_SESSION, donc il suffit d'ajouter dans votre script de connexion:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
// ...
$_SESSION['token'] = dechex(rand(0, 999999))."-".dechex(rand(0, 999999));
?&gt;
&lt;/pre&gt;votre bouton déconnexion:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;a href="deconnect.php?t=&lt;?=$_SESSION['token']?&gt;"&gt;Déconnexion&lt;/a&gt;
&lt;/pre&gt;et le script deconnect.php:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
session_start();
if (isset($_GET['t'])&amp;&amp;$_GET['t']==$_SESSION['token']) {
session_unset();
session_destroy();
echo "Vous avez bien été déconnecté";
} else {
echo "La requête est incorrect";
}
?&gt;
&lt;/pre&gt;Le forum Melinyel a un système similaire mais en plus n'autorise que certaines extensions mais le systèmes d'extension ne sert à rien vu qu'il peut être trompé avec le ".htaccess".&lt;p&gt;&lt;/p&gt;&lt;p&gt;Nous arrivons donc au dernier type de faille les voles de cookies, miam miam...&lt;/p&gt;&lt;p&gt;Contexte: mon script php camouflé en "cookie.png" doit voler le cookie du nom de "autolog" qui permet que le compte se connecter automatiquement.&lt;/p&gt;&lt;p&gt;/!\Rappel: le cookie est stocké du coté client il y a un risque de modification, donc cryptait le un maximum pour pas qu'il puisse détourner sa connexion sur un autre compte, comme pour les variables caché html ou js.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;donc nous allons créer votre cookie avec une protection correcte:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;$crypt = $user['id']."|".md5(sha1($user['name']).$user['haspass']);
setcookie( "autolog", $crypt, time()+606024*31, "./marsLogin", "mars073.be", false, true);
&lt;/pre&gt;donc $crypt dans mon exemple est composé de l'id de l'utilisateur et le cumule crypté du nom d’utilisateur crypté et de son mot de passe crypté, même crypté normalement on ne met pas le mot de passe dans le cookie je dis bien normalement.&lt;p&gt;paramètres de mon cookie:&lt;/p&gt;&lt;p&gt;1 - Son nom: "autolog"&lt;/p&gt;&lt;p&gt;2 - sa valeur: $crypt&lt;/p&gt;&lt;p&gt;3 - sa date d'expiration en seconde: 31jours après création&lt;/p&gt;&lt;p&gt;4 - dossier ou je vais le ranger&lt;/p&gt;&lt;p&gt;5 - le seul site (domaine) qui a le droit d'y accéder: "mars073.be"&lt;/p&gt;&lt;p&gt;6 - si le cookie ne peut être utilisé que par des site en https:// : non (si votre site à le https:// mettez "true" si vous voulez)&lt;/p&gt;&lt;p&gt;7 - Interdit la modification du cookie par du javascript par exemple (ne fonctionne pas tout le temps).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;mais comment faire maintenant pour vérifier l'utilisateur?&lt;/p&gt;&lt;p&gt;Comme ça:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;&lt;?php
if (isset($_COOKIE['autolog'])) {
$data = explode("|", $_COOKIE['autolog'];	// On sépare l'id du reste
if (isset($data[1])&amp;&amp;is_numeric($data[0])) {	// On vérifie la structure du cookie
$query = $db-&gt;query("SELECT * FROM user WHERE id = ".$data[0]." LIMIT 1");
$query-&gt;execute();
$user = $query-&gt;fetch();
if ($data[1] == md5(sha1($user['name']).$user['haspass'])) {
$_SESSION['login'] = $user;
echo "Connexion réussite";
} else {
echo "cookie incorrect";
}
} else {
echo "Cookie corrumpue";
}
}
?&gt;
&lt;/pre&gt;Je pense avoir fait le tour des trucs les plus courant en php...&lt;p&gt;&lt;/p&gt;&lt;p&gt;ps: exemple d'image en php qui passe à travers le filtre du forum avec un simple dossier, quand vous actualisez elle change:&lt;/p&gt;&lt;p&gt;&lt;img alt="mel.png" src="http://mars073.zz.mu/demo/mel.png"/&gt;&lt;/p&gt;&lt;p&gt;Bonne programmation à tous!&lt;/p&gt;&lt;p&gt;Cordialement,&lt;/p&gt;&lt;p&gt;Mars073&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/479/failles-de-sécurité-les-plus-fréquentes-en-relation-directeindirecte-php</link><guid isPermaLink="true">https://melinyel.net/topic/479/failles-de-sécurité-les-plus-fréquentes-en-relation-directeindirecte-php</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Wed, 09 Apr 2014 14:28:06 GMT</pubDate></item><item><title><![CDATA[Gestion d'image]]></title><description><![CDATA[&lt;p&gt;Bonjour all,&lt;br/&gt;
Je vais vous expliquer comment générer une image en php.&lt;br/&gt;
je vais partir directement sur un exemple assez complexe  &lt;br/&gt;&lt;br/&gt;
vous allons nous baser sur l'image suivante (j'avais bien commencé mais bon j'avais la flemme donc j'ai fais un arbre vite fait avec un quadrillage dégeu au dessus trop chiant dessiner à la souris rip mon stylet  &lt;br/&gt;&lt;img alt="island_air-44f87bd.png" src="&lt;base_url&gt;/applications/sslimageproxy/interface/image.php?url=http://img102.xooimage.com/files/1/6/a/island_air-44f87bd.png"/&gt;&lt;br/&gt;
et un petit personnage très mystérieux&lt;br/&gt;&lt;img alt="char-44f8849.png" src="&lt;base_url&gt;/applications/sslimageproxy/interface/image.php?url=http://img107.xooimage.com/files/1/b/a/char-44f8849.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
et donc dans cet exemple nous allons positionner un personnage sur le quadrillage le coté le plus à gauche est le point d'origine (0, 0).&lt;br/&gt;&lt;br/&gt;
contexte: vous avez votre bonhomme à déplacer sur le quadrillage grace à une variable $x et $y que l'on dans l'url ($_GET) et vous devez conserver la transparence des 2 images.&lt;br/&gt;
 &lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
$x = $y = 0; // on initialise la variable $x et $y à zéro
// on test l'existant de ?x et ?y dans l'url et si ils sont compris entre 0 et 6
if (isset($_GET['x'])&amp;amp;&amp;amp;is_numeric($_GET['x'])&amp;amp;&amp;amp;
	$_GET['x']&amp;gt;=0&amp;amp;&amp;amp;$_GET['x']&amp;lt;=6) $x = $_GET['x'];
if (isset($_GET['y'])&amp;amp;&amp;amp;is_numeric($_GET['y'])&amp;amp;&amp;amp;
	$_GET['y']&amp;gt;=0&amp;amp;&amp;amp;$_GET['y']&amp;lt;=6) $y = $_GET['y'];

// on spécifie le type MIME, c'est à dire que le script php va se faire passer pour un autre type de fichier si vous ne mettez pas ça en accédant à la page vous aurez exactement le même résultat que lorsque voys ouvrez l'image avec bloc note
header('Content-Type: image/png');

$map = imagecreatefrompng("island_air.png");	// on charge l'île volante 
$char = imagecreatefrompng("char.png");		// on charge le bonhomme mystèrieux
// on copie l'image du petit bonhomme et on la colle sur le terrain avec la position relative
imagecopy($map, $char, (210 + ($x * 12) + ($y * 13)), 140 + ($y * 14) - ($x * 10), 0, 0, 23, 43);
// on conserve le canal alpha, c'est à dire la transparence
imagealphablending($map, false);
imagesavealpha($map, true);

// on fait le rendu de l'image dans le format MIME
imagepng($map);

// on supprime les calques que l'on a fait (pour vider la mémoire)
imagedestroy($map);
imagedestroy($char);
?&amp;gt;

&lt;/pre&gt;
&lt;p&gt;donc en récapitulatif vous devez:&lt;br/&gt;
-choisir le type MIME (format de rendu) &lt;a href="http://reference.sitepoint.com/html/mime-types-full" rel="external nofollow"&gt;[liste utile]&lt;/a&gt;&lt;br/&gt;
-créer à calque à partir d'une image même si elle est distante (ex: imagecreatefromjpeg("&lt;a href="http://picture.com/A0001.jpg" rel="external nofollow"&gt;http://picture.com/A0001.jpg&lt;/a&gt;")) ou vous pouvez créer un calque vide aux dimensions désirées (exemple: imagecreate(600, 400), pour créer une image de 600px de large et 400px de haut).&lt;br/&gt;
-faire un rendu dans le format que vous aviez choisis (ex: imagejpeg($image))&lt;br/&gt;&lt;br/&gt;
si vous désirez enregistrer votre rendu vous pouvez le faire directement par exemple en rendu jpg ou jpeg vous ajoutez simplement un paramètre avec le nom de destination exemple:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;?php
imagejpeg($image, "rendu.jpg");
// vous pouvez aussi choisir la qualité en ajoutant un troisième paramètre de 0 à 100 ou de 0 à 75 selon le format
imagejpeg($image, "rendu.jpg", 45);
// vous pouvez aussi choisir le rendu sans enregistrer en remplacant la destination par NULL:
imagejpeg($image, NULL, 45);
?&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://be2.php.net/manual/fr/ref.image.php" rel="external nofollow"&gt;&gt; documentation php&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;
si vous avez eu du mal à comprendre la syntaxe de image copie de vous invite à &lt;a href="http://be2.php.net/manual/fr/function.imagecopy.php" rel="external nofollow"&gt;Cliquer ici&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;
Si vous desiez vous pouvez rendre moins mystérieux le bonhomme on lui mettant un nom au dessus de sa tête avec la fonction &lt;a href="http://be2.php.net/manual/fr/function.imagestring.php" rel="external nofollow"&gt;imagestring();&lt;/a&gt; ça vous fera un petit exercice  &lt;br/&gt;&lt;br/&gt;
Bonne programmation à tous!&lt;br/&gt;
Cordialement,&lt;br/&gt;
Mars073&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/477/gestion-dimage</link><guid isPermaLink="true">https://melinyel.net/topic/477/gestion-dimage</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Wed, 09 Apr 2014 00:47:33 GMT</pubDate></item><item><title><![CDATA[Moteur de recherche de base]]></title><description><![CDATA[&lt;p&gt;Bonjour à tous,&lt;br/&gt;
Aujourd’hui je vais vous montrer comment coder un moteur de recherche de base, vous pouvez donc aussi bien améliorer la structure de vos tables que la condition de recherche elle même.&lt;br/&gt;
Contexte: Le moteur de recherche sert à trouver un joueur et afficher ses statistiques.&lt;br/&gt;&lt;br/&gt;
Structure table:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
CREATE TABLE players (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
guild text NOT NULL,
token int(11) NOT NULL,
PRIMARY KEY (id)
) AUTO_INCREMENT=1 ;
&lt;/pre&gt;
&lt;p&gt;Le formulaire de recherche (search.php):&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;form action="./search.php" method="GET"&gt;
&lt;label for="name"&gt;Nom du joueur&lt;/label&gt;
&lt;input type="text" name="name"&gt;
&lt;input type="submit" value="Rechercher"&gt;
&lt;/form&gt;
&lt;/pre&gt;
&lt;p&gt;Je ne m'attarde pas sur le html vu que c'est un tuto php/my-sql.&lt;br/&gt;&lt;br/&gt;
à la suite du code html vous allons ajouter du php:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;table width="100%"&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Nom&lt;/th&gt;
&lt;th&gt;Points&lt;/th&gt;
&lt;/tr&gt;
&lt;?php
$page = 0;
if (isset($_GET['name']) {
$page = 1;	// Page par défaut affichée
$np_page = 25;	// Nom de résultat par page
$name = addslashes($_GET['name']); // suppression faille sql
$icxn = mysqli_connect("127.0.0.1", "root", "toor", "game");	//connexion mySQLi
	// vérification du numéro de la page si elle est indiqué dans l'url en "?page=n"
	if (isset($_GET['page'])&amp;amp;&amp;amp;is_numeric($_GET['page'])&amp;amp;&amp;amp;
		$_GET['page']&amp;gt;0&amp;amp;&amp;amp;$_GET['page']&amp;lt;9999999) $page = $_GET['page'];
	$fourchette = ($page - 1) * $np_page;
	$iquery = mysqli_query($icxn, "SELECT * FROM `players` WHERE `name` LIKE '%$name%' ORDER BY `name` ASC LIMIT $fourchette, $np_page");
	while ($char = mysqli_fetch_array($iquery)) {
		echo &amp;lt;&amp;lt;&amp;lt;LINE
		&amp;lt;tr&amp;gt;
			&amp;lt;td&amp;gt;{$char['id']}&amp;lt;/td&amp;gt;
			&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;{$char['name']}&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;td&amp;gt;{$char['token']}&amp;lt;/td&amp;gt;
		&amp;lt;/tr&amp;gt;

LINE;
}
}
?&gt;
&lt;/table&gt;
&lt;?php
if ($page!=0) {
echo "page(s): ";
$iquery_count = mysqli_query($icxn, "SELECT * FROM players WHERE name LIKE '%$name%'");
$count = mysqli_nums_rows($iquery_count);
for ($i = 1; $i &lt; $count/$np_page; $i++) {
echo '&lt;a href="./search.php?page='.$i.'"&gt;'.$i.'&lt;/a&gt;&amp;nbsp;';
}
}
?&gt;
&lt;/pre&gt;
&lt;p&gt;Conseil pour améliorer:&lt;br/&gt;
-Si la table est beaucoup avec votre moteur faite une colonne de plus où il y a une simplification des caractères (ex: "é" =&gt; "e"; "â" =&gt; "a"; etc).&lt;br/&gt;
-Attention aux caractères html utilisiez la fonction strip_tag() ou autre sur ce qui causer des faille xss par exemple si le client peu choisir le nom de son personnage et mettre du code html dedans c'est mort.&lt;br/&gt;
-Supprimez les caractères "%" et "_" si ils sont présent dans $name et instauré une limite au niveau du nombre de caractères pour la recherche exemple: minimum 4 caractères, pour évites de charger trop de chose.&lt;br/&gt;&lt;br/&gt;
Version pdo pour les gens qui aiment la pdo:&lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
&lt;table width="100%"&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Nom&lt;/th&gt;
&lt;th&gt;Points&lt;/th&gt;
&lt;/tr&gt;
&lt;?php
$page = 0;
if (isset($_GET['name']) {
$page = 1;	// Page par défaut affichée
$np_page = 25;	// Nom de résultat par page
$name = $_GET['name'];
$cxn = new PDO('mysql:host=127.0.0.1;dbname=game', 'root', 'toor'); 	//connexion mySQL
	// vérification du numéro de la page si elle est indiqué dans l'url en "?page=n"
	if (isset($_GET['page'])&amp;amp;&amp;amp;is_numeric($_GET['page'])&amp;amp;&amp;amp;
		$_GET['page']&amp;gt;0&amp;amp;&amp;amp;$_GET['page']&amp;lt;9999999) $page = $_GET['page'];
	$fourchette = ($page - 1) * $np_page;
	$query = $cxn-&amp;gt;prepare("SELECT * FROM players` WHERE `name` LIKE '%:name%' ORDER BY `name` ASC LIMIT :fourchette, :npp");
	$query-&amp;gt;bindValue(':name', $name, PDO::PARAM_STR);
	$query-&amp;gt;bindValue(':fourchette', $fourchette, PDO::PARAM_INT);
	$query-&amp;gt;bindValue(':npp', $np_page, PDO::PARAM_INT);
	$query-&amp;gt;execute();
	while ($char = $query-&amp;gt;fetch()) {
		echo &amp;lt;&amp;lt;&amp;lt;LINE
		&amp;lt;tr&amp;gt;
			&amp;lt;td&amp;gt;{$char['id']}&amp;lt;/td&amp;gt;
			&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;{$char['name']}&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;td&amp;gt;{$char['token']}&amp;lt;/td&amp;gt;
		&amp;lt;/tr&amp;gt;

LINE;
}
}
?&gt;
&lt;/table&gt;
&lt;?php
if ($page!=0) {
echo "page(s): ";
$query_count = $cxn-&gt;prepare("SELECT * FROM players WHERE name LIKE '%:name%'");
$query_count-&gt;bindValue(':name', $name, PDO::PARAM_STR);
$query_count-&gt;execute();
$count = $query_count-&gt;rowCount();
for ($i = 1; $i &lt; $count/$np_page; $i++) {
echo '&lt;a href="./search.php?page='.$i.'"&gt;'.$i.'&lt;/a&gt;&amp;nbsp;';
}
}
?&gt;
&lt;/pre&gt;
&lt;p&gt;Bonne programmation à tous!&lt;br/&gt;
Cordialement,&lt;br/&gt;
Mars073&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/469/moteur-de-recherche-de-base</link><guid isPermaLink="true">https://melinyel.net/topic/469/moteur-de-recherche-de-base</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Tue, 08 Apr 2014 14:50:29 GMT</pubDate></item><item><title><![CDATA[effectuer une requête POST]]></title><description><![CDATA[&lt;p&gt;Bonjour à tous,&lt;br/&gt;
Je vais vous partagez un bout de code (que vous pouvez transformer en fonction) assez utile pour faire des requêtes POST (non pas avec du html) tout en PHP &lt;3&lt;br/&gt;&lt;br/&gt;
à quoi ça sert?&lt;br/&gt;
quand vous désirez faire un système distant un peu sécurisé &lt;span style="font-size:10px;"&gt;&lt;strike&gt;ou quand quelqu'un vous ennuie et qu'il n'a pas d'anti-robot sur sa page d'inscription...&lt;/strike&gt;&lt;/span&gt;&lt;br/&gt;
 &lt;/p&gt;
&lt;pre class="ipsCode prettyprint lang-auto"&gt;
/*
Contexte: ayant bricolé un serveur apache et installé PHP avec beaucoup de mal vous n'arrivez pas à installer un serveur SMTP (gestion d'envoie et de réception d'email).
Alors pour pallier à ce problème vous utilisez un script distant sur un ftp ayant un serveur smtp vous devez effectuer une requête POST avec des variable: l'espéditeur, le destinataire, le sujet ($sujet), le contenu ($content) et une clé de sécurité. le serveur répond "OK" si l'envoie c'est fait, on récupère la réponse dans la variable $result
*/
$data = array(
'exp' =&gt; "contact@mars073.be",		// expéditeur
'dest' =&gt; "john.smith@hotmail.com",	// destinataire
'subject' =&gt; $sujet,			// sujet
'content' =&gt; $content,			// contenu du mail
'key' =&gt; 0258410025412002541200255210	// clé de sécurité
);
$url = "http://mars073.be/smtp.phps";		// url sur la quelle il faut envoyer la requête
$data_url = http_build_query($data);
$data_len = strlen($data_url);
$x = array ('content'=&gt;file_get_contents ($url, false, stream_context_create (array ('http'=&gt;array ('method'=&gt;'POST',
'header'=&gt;"Connection: close\r\nContent-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: $data_len\r\n",
'content'=&gt;$data_url)))),
'headers'=&gt;$http_response_header
);
$result = $x['content'];
if ($result == "OK") {
	echo "L'envoie a été un succés.";
} else {
	echo "t'as foiré #YOLO.";
}

&lt;/pre&gt;
&lt;p&gt;Bonne programmation à tous!&lt;br/&gt;
Cordialement,&lt;br/&gt;
Mars073&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/467/effectuer-une-requête-post</link><guid isPermaLink="true">https://melinyel.net/topic/467/effectuer-une-requête-post</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Tue, 08 Apr 2014 11:17:59 GMT</pubDate></item><item><title><![CDATA[Créer un système de Connexion / Inscription en PHP]]></title><description><![CDATA[&lt;div&gt;Bonjour à tous !&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Aujourd'hui nous nous attaquons à un tutoriel assez long !&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Je vous préviens tout de suite ! Si vous n'avez pas de connaissance en PHP / HTML il est inutile de poursuivre ce tutoriel.&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Nous allons donc comme dit plus haut utilisé du PHP &amp; du HTML pour réaliser ce tutoriel.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;1 - Système de connexion&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;C'est partie ! On s'occupe en premier de la base de donnée :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Nous allons donc créer un table nommer "membre" qui regroupera tous les membres du site.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
CREATE TABLE membre (
id int(11) NOT NULL auto_increment,
login varchar(8) NOT NULL,
password varchar(8) NOT NULL,
PRIMARY KEY (id),
KEY ID_2 (id)
);
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ici on stocke : L'id, le Pseudo &amp; le Password du membre.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ensuite on créer la page LOGIN.PHP &amp; on insére formulaire HTML de connexion :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;form method="post" action=""&gt;
&amp;lt;legend&amp;gt;Connexion au Panel&amp;lt;/legend&amp;gt;

&amp;lt;div class="form-group"&amp;gt;
  &amp;lt;label class="col-lg-2 control-label"&amp;gt;Login&amp;lt;/label&amp;gt;
  &amp;lt;div class="col-lg-10"&amp;gt;
    &amp;lt;input type="text" class="form-control" name="login" placeholder="Login"&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;

&amp;lt;div class="form-group"&amp;gt;
  &amp;lt;label class="col-lg-2 control-label"&amp;gt;Mot de passe&amp;lt;/label&amp;gt;
  &amp;lt;div class="col-lg-10"&amp;gt;
    &amp;lt;input type="password" class="form-control" name="password" placeholder="Mot de passe"&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&lt;br/&gt;&lt;br/&gt;&lt;center&gt;&lt;button type="submit" name="submit" class="btn btn-primary"&gt;Connexion&lt;/button&gt;&lt;/center&gt;
&lt;/form&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ensuite on créer le système qui vas vérifier &amp; nous connecter :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'login', 'password');
mysql_select_db('nomdelabase',$db);
if(isset($_POST) &amp;&amp; !empty($_POST['login']) &amp;&amp; !empty($_POST['password'])) {
$_POST['password'] = hash("sha256", $_POST['password']);
extract($_POST);
// on recupére le password de la table qui correspond au login du visiteur
$sql = "select password from membre where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !&lt;br&gt;'.$sql.'&lt;br&gt;'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $password) {
echo '&lt;div class="alert alert-dismissable alert-danger"&gt;
&lt;button type="button" class="close" data-dismiss="alert"&gt;x&lt;/button&gt;
&lt;strong&gt;Oh Non !&lt;/strong&gt; Mauvais login / password. Merci de recommencer !
&lt;/div&gt;';
}
else {
session_start();
$_SESSION['login'] = $login;
echo '&amp;lt;div class="alert alert-dismissable alert-success"&amp;gt;

&lt;button type="button" class="close" data-dismiss="alert"&gt;×&lt;/button&gt;
&lt;strong&gt;Yes !&lt;/strong&gt; Vous etes bien logué, Redirection dans 5 secondes ! &lt;meta http-equiv="refresh" content="5; URL=dashboard"&gt;
&lt;/div&gt;';
// ici vous pouvez afficher un lien pour renvoyer
// vers la page d'accueil de votre espace membres
}
}
else {
$champs = '&lt;p&gt;&lt;b&gt;(Remplissez tous les champs pour vous connectez !)&lt;/b&gt;&lt;/p&gt;';
}
?&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ensuite nous modifions la ligne : &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
// on se connecte à MySQL
$db = mysql_connect('localhost', 'login', 'password');
mysql_select_db('nomdelabase',$db);
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ici vous entrez les identifiants de connexion à la base de donnée.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Voilà, la connexion est terminée. Maintenant nous passons au plus dur !&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;2 - Système d'inscription&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ici on créer une page REGISTER.PHP &amp; on créer le système d'inscription.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Enfaite ce n'est pas réellement le plus dur car ici nous nous servirons tout simplement d'un système de news en php mais nous le modifierons un petit peut !&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Alors go :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;On créer le formulaire d'inscription et on l'insère dans la page&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;form method="post" action=""&gt;
&amp;lt;legend&amp;gt;S'inscrire sur le site&amp;lt;/legend&amp;gt;

&amp;lt;div class="form-group"&amp;gt;
  &amp;lt;label class="col-lg-2 control-label"&amp;gt;Login&amp;lt;/label&amp;gt;
  &amp;lt;div class="col-lg-10"&amp;gt;
    &amp;lt;input type="text" class="form-control" name="login" placeholder="Login"&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;

&amp;lt;div class="form-group"&amp;gt;
  &amp;lt;label class="col-lg-2 control-label"&amp;gt;Mot de passe&amp;lt;/label&amp;gt;
  &amp;lt;div class="col-lg-10"&amp;gt;
    &amp;lt;input type="password" class="form-control" name="password" placeholder="Mot de passe"&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&lt;br/&gt;&lt;br/&gt;&lt;center&gt;&lt;button type="submit" name="submit" class="btn btn-primary"&gt;S'Inscrire&lt;/button&gt;&lt;/center&gt;
&lt;/form&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Et on créer le système !&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="color:#FF4500;"&gt;IMPORTANT : Ici nous effectuons une connexion MYSQL PDO (beaucoup plus sécurisé) et tout à l'heure le système était fait de sorte à utiliser une connexion MYSQL BASIQUE qui bientôt disparaitra ...&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;C'est partie :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;?php
//Connexion à la BDD
  try
  {
  
   $bdd = new PDO ('mysql:host=localhost;dbname=nomdelabase', 'login', 'password');
  
  }
  
  catch(Exception $e)
  {
   die('Erreur :'.$e-&gt;getMessage());
  }
  
    if(ISSET($_POST['submit']))
{
//On créer les variables
$login =   $_POST['login'];
$password = $_POST['password'];
$password = hash("sha256", $password);
$req = $bdd-&gt;prepare('INSERT INTO membre(login, password) VALUES (:login, :password)');
$req-&gt;execute(array("login" =&gt; $login, "password" =&gt; $password));
if(!empty($login) &amp;&amp; !empty($password))
{
}else{
?&gt;
&lt;b&gt;Pseudo ou MDP vide !&lt;/b&gt;
&lt;?php
}
if(empty($login) &amp;&amp; empty($password))
{
}else{
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: dashboard');
}
}
   
   ?&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;La connexion PDO est ici :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;?php
//Connexion à la BDD
  try
  {
  
   $bdd = new PDO ('mysql:host=localhost;dbname=nomdelabase', 'login', 'password');
  
  }
  
  catch(Exception $e)
  {
   die('Erreur :'.$e-&gt;getMessage());
  }[/php]
Il ne vous reste plus qu'à changer :
[php]('mysql:host=localhost;dbname=nomdelabase', 'login', 'password')[/php]
Et ici aussi pour le lien de redirection une fois que la SESSION à démarrée :
[php] session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: LIEN-DE-REDIRECTION');&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;3 - Système de vérification&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="color:#FF4500;"&gt;ICI nouveau problème : Si on essaye d'accèder à une page qui normalement doit être réservé au personne connectées, par exemple : panel.php. Et bien nous y avons quand même accès même déconnecté !&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Nous allons résoudre ce problème avec une page nommée vérif.php.&lt;/div&gt;
&lt;div&gt;On y inclue ce code :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;?
session_start();
/* 
si la variable de session login n'existe pas cela siginifie que le visiteur 
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo '&lt;h1&gt;Vous n'êtes pas connecté, accés interdit !&lt;/h1&gt; &lt;meta http-equiv="refresh" content="0; URL=index.php"&gt; ';
}
?&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Comme indiqué en haut, on regarde si la SESSION est démarrée, si elle ne l'est pas on interdit l'accès.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ensuite il ne vous reste plus qu'à include ce code sur toutes les pages que vous voulez :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
&lt;?php include ('verif.php') ; ?&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;4 - Système de déconnexion&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Pour finir l'utilisateur doit bien ce déconnecter une fois qu'il à terminé.&lt;/div&gt;
&lt;div&gt;Pour ce faire nous créons  la page logout.php et on y inclue ce code :&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre class="ipsCode prettyprint"&gt;
﻿&lt;?php
session_start();
session_unset();
session_destroy();
header('Location: login.php');
?&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ici on déconnecte l'utilisateur &amp; on le redirige vers la page de login !&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ce tutoriel est maintenant terminé !&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Attention : Je préviens à l'avance avant que tous le monde spam le topic   :&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;strong&gt;Le Topic ne sert en aucun cas de Support ! J'insiste bien la dessus. Vu que je ne suis pas méchant contactez mon plutôt par Mp sur le Forum, c'est quand même mieux !&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;En espérant vous avoir aidez, à la prochaine !&lt;/div&gt;
]]></description><link>https://melinyel.net/topic/437/créer-un-système-de-connexion-inscription-en-php</link><guid isPermaLink="true">https://melinyel.net/topic/437/créer-un-système-de-connexion-inscription-en-php</guid><dc:creator><![CDATA[4Spartan8]]></dc:creator><pubDate>Fri, 04 Apr 2014 20:49:25 GMT</pubDate></item><item><title><![CDATA[le test (no-stress c'est pas pour vous)]]></title><description><![CDATA[&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Shalut all,&lt;/p&gt;&lt;p&gt;Je vais vous expliquer comment faire des tests et c'est super simple&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Il y a juste plein de façon de le faire! xD&lt;/p&gt;&lt;p&gt;Pour faire un test simple, on fait comme ceci:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;If ([valeur à tester] [symbôle du test (voir le bas)] [La valeur à la quelle elle est comparée]) {
[Le code à exécuter si le test se révèle positif];
}
&lt;/pre&gt;exemple:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;If ($check == true)
{
include("W\tourbilol.php");
}
// ou
If ($check == true):
include("W\tourbilol.php");
endif;
// ou
If ($check == true) {
include("W\tourbilol.php");
}
// ou
If ($check == true) {include("W\tourbilol.php");}
// ou
If ($check == true) include("W\tourbilol.php");
// Ces systaxes ont exactement le même effet
// version courte souvent utilisée dans la syntaxe: &lt;?=([condition]) ? 'oui' : 'non'?&gt; :
include ($check == true) ? "W\tourbilol.php" : "W\tourbilol_v2.php";
&lt;/pre&gt;Imaginons que nous programmons un jeu et que vous voulons tester la position_X soit 3 et que le position_Y soit 5 on va faire comme cela:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;If (($position_X=3) AND ($position_Y=5)) {
[Le code à exécuter si le test se révèle positif];
}
// ou
If (($position_X=3) &amp;&amp; ($position_Y=5)) {
[Le code à exécuter si le test se révèle positif];
}
&lt;/pre&gt;Il suffit juste de mettre les 2valeurs entre parenthèse et de mettre un "And"(et) ou "&amp;&amp;" entre les deux.^^&lt;p&gt;&lt;/p&gt;&lt;p&gt;Toujours facile.. alors on va compliquer les choses x)&lt;/p&gt;&lt;p&gt;Imaginons toujours notre petit jeux, cette fois je veux que la position_X soit 3 ou 5 et que que la position_Y soit 5  &lt;/p&gt;&lt;p&gt;toujours simple mais bon :&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;If ((($position_X=3) OR ($position_X=5)) AND ($position_Y=5)) {
[Le code à exécuter si le test se révèle positif];
}
// ou
If ((($position_X=3) || ($position_X=5)) &amp;&amp; ($position_Y=5)) {
[Le code à exécuter si le test se révèle positif];
}
&lt;/pre&gt;on ajoute encore des parenthèses et on met un "Or"(ou) ou "||" même principe que le "And"&lt;p&gt;&lt;/p&gt;&lt;p&gt;On monte encore un peu dans la difficulté  &lt;/p&gt;&lt;p&gt;Cette fois la position_X doit être compris entre 3 et 5 et la position_Y doit doit être 5. è_é&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;If ((($position_X&gt;3) AND ($position_X&lt;5)) &amp;&amp; ($position_Y==5)) {
[Le code à exécuter si le test se révèle positif];
}
&lt;/pre&gt;Cette fois le test demande si le nombre est supérieur et si il est inférieur ^^&lt;p&gt;&lt;/p&gt;&lt;p&gt;Maintenant on va demander que si number est 1 il envoie un message "c'est 1!"; si c'est 2 un message "c'est deux" et si ce n'est pas un des deux, le programme envoie un message "chiffre inconnu", et pour cela on va mettre un "ElseIf":&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;If (number==1) {
echo "c'est 1!";
}
ElseIf (number==2) {
echo "c'est 2!";
}
Else {
echo "chiffre inconnu";
}
&lt;/pre&gt;Il existe aussi la méthode du "Case Of" ou plus communément appellé "Switch()" en PHP:&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;Switch (number) {
Case 1:
echo "c'est 1!";
break; // Important! Il faut mettre un "break;" à la fin du code à exécuter si la condition est remplie.
Case 2:
echo "c'est deux!";
break;
Case 3:
Case 4:
echo "c'est trois ou quatre!";
Break;
Default: // Équivalent d'un "Else"
echo "chiffre inconnu";
}
&lt;/pre&gt;Les symboles de test&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt;=== : est égale exactement... (le plus souvent utilisé lors d'un test avec une fonction par exemple qui retourne une valeur booléen [ true ou false])
!== : n'est pas du tout commun avec ...
==  : égale à ...
&gt;  : supérieur à ...
&lt;  : inférieur à ...
&gt;= : supérieur ou égale à...
&lt;= : inférieur ou égale à...
!= : n'est pas égale à...
&lt;/pre&gt;Fonction utile: empty et isset:&lt;p&gt;Empty sert à tester si une valeur est vide&lt;/p&gt;&lt;p&gt;Isset sert à tester si la variable existe (n'est pas égale à null)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="ipsCode prettyprint lang-auto"&gt; // On test si la variable $text est vide:
if (empty($text)) {echo "Le texte est vide";}
// On test si la variable id contenu dans l'url existe (ex: &lt;a href="http://0.0.0.0/view.php?id=1234&amp;amp;AutreVar=0" rel="external nofollow"&gt;http://0.0.0.0/view.php?id=1234&amp;amp;AutreVar=0&lt;/a&gt;)
if (isset($_GET['id'])) {echo "Article N°", $_GET['id'];}
// ou aussi :
if ($_GET['id']) {echo "Article N°", $_GET['id'];}
&lt;/pre&gt;test en une ligne, afficher "online" si $test = 1 et "offline" dans le cas contraire:&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;pre class="ipsCode"&gt;&lt;/pre&gt;&lt;p&gt;echo ($test==1) ? "online" : "offline";&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Bonne programmation à tous!&lt;/p&gt;&lt;p&gt;Cordialement,&lt;/p&gt;&lt;p&gt;Mars073&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/133/le-test-no-stress-cest-pas-pour-vous</link><guid isPermaLink="true">https://melinyel.net/topic/133/le-test-no-stress-cest-pas-pour-vous</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Thu, 13 Mar 2014 21:39:10 GMT</pubDate></item><item><title><![CDATA[[Mooc] Concevoir des sites web avec le PHP]]></title><description><![CDATA[&lt;p&gt;Bonjour,&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Si ça peut en intéresser quelques uns, voici un Mooc pour apprendre à concevoir son site web dynamique en PHP.&lt;/p&gt;
&lt;p&gt;Voici le lien : &lt;a href="http://fr.openclassrooms.com/mooc/concevez-votre-site-web-avec-php-et-mysql?utm_source=Homepage-OC&amp;amp;utm_medium=Encart A la Une&amp;amp;utm_campaign=Encart-mooc-php" rel="external nofollow"&gt;http://fr.openclassrooms.com/mooc/concevez-votre-site-web-avec-php-et-mysql?utm_source=Homepage-OC&amp;amp;utm_medium=Encart A la Une&amp;amp;utm_campaign=Encart-mooc-php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si ça peut vous donner envie...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Voilà  &lt;/p&gt;
]]></description><link>https://melinyel.net/topic/110/mooc-concevoir-des-sites-web-avec-le-php</link><guid isPermaLink="true">https://melinyel.net/topic/110/mooc-concevoir-des-sites-web-avec-le-php</guid><dc:creator><![CDATA[Eloha]]></dc:creator><pubDate>Thu, 13 Mar 2014 18:25:25 GMT</pubDate></item><item><title><![CDATA[[Sécurité] Sécuriser ses $_POST & $_GET]]></title><description><![CDATA[&lt;p style="text-align:center;"&gt;Bonsoir, vous n'êtes pas sans savoir que, les hackeurs utilisent une méthode appelée "l'injection sql", qui comme son nom l'indique, permet d'injecté du code sql dans une fonction POST ou GET d'une page php.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;Elle est souvent utilisé pour contourner des connexion (par exemple, 'OR "=").&lt;/p&gt;
&lt;p style="text-align:center;"&gt; &lt;/p&gt;
&lt;p style="text-align:center;"&gt;Mais comment se protégé ?&lt;/p&gt;
&lt;p style="text-align:center;"&gt; &lt;/p&gt;
&lt;p style="text-align:center;"&gt;Tout simplement, rajoutez dans votre méthode POST ou GET :&lt;/p&gt;
&lt;pre class="ipsCode prettyprint"&gt;
mysql_escape_string();
&lt;/pre&gt;
&lt;p style="text-align:center;"&gt;Ce qui donnerais au final (avec la variable et la méthode) :&lt;/p&gt;
&lt;pre class="ipsCode prettyprint"&gt;
$user = mysql_escape_string($_POST['user']);
&lt;/pre&gt;
&lt;p style="text-align:center;"&gt;Voila, j'espère que ça vous auras aidé ! ^^&lt;/p&gt;
]]></description><link>https://melinyel.net/topic/33/sécurité-sécuriser-ses-post-get</link><guid isPermaLink="true">https://melinyel.net/topic/33/sécurité-sécuriser-ses-post-get</guid><dc:creator><![CDATA[Brokeos]]></dc:creator><pubDate>Sat, 08 Mar 2014 21:05:22 GMT</pubDate></item></channel></rss>