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

<channel>
	<title>Archives des mysql - La programmation sur le web</title>
	<atom:link href="https://programmation.surleweb-france.fr/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmation.surleweb-france.fr/tag/mysql/</link>
	<description>La programmation gratuite pour tous</description>
	<lastBuildDate>Fri, 03 Mar 2023 16:35:50 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/08/cropped-19518430-icone-de-programmation-pour-votre-site-web-mobile-presentation-et-conception-de-logo-gratuit-vectoriel.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Archives des mysql - La programmation sur le web</title>
	<link>https://programmation.surleweb-france.fr/tag/mysql/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">176210735</site>	<item>
		<title>Python, les modules pour les bases de données</title>
		<link>https://programmation.surleweb-france.fr/python-les-modules-pour-les-bases-de-donnees/</link>
					<comments>https://programmation.surleweb-france.fr/python-les-modules-pour-les-bases-de-donnees/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Mon, 06 Mar 2023 17:30:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[bases de données]]></category>
		<category><![CDATA[connexion]]></category>
		<category><![CDATA[manipulation]]></category>
		<category><![CDATA[méthode close()]]></category>
		<category><![CDATA[méthode commit()]]></category>
		<category><![CDATA[méthode connect()]]></category>
		<category><![CDATA[méthode execute()]]></category>
		<category><![CDATA[méthode fetchall()]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[objet Cursor]]></category>
		<category><![CDATA[Pymysql]]></category>
		<category><![CDATA[Python 3]]></category>
		<category><![CDATA[requête SQL]]></category>
		<category><![CDATA[SQLite]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1640</guid>

					<description><![CDATA[<p>Python 3 dispose de modules puissants pour les bases de données, tels que sqlite3 et Pymysql, qui permettent de se connecter à une base de données, d'interagir avec elle, d'insérer et de récupérer des données, et offrent des fonctions avancées pour gérer les requêtes et les transactions</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/python-les-modules-pour-les-bases-de-donnees/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-les-modules-pour-les-bases-de-donnees/">Python, les modules pour les bases de données</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Retrouvez le sommaire des articles Python sur <a href="https://programmation.surleweb-france.fr/python-tous-les-articles-classes">ce lien</a>.</p>



<p>Les modules liés aux bases de données en Python 3 permettent de se connecter à une base de données, d&rsquo;interagir avec elle, d&rsquo;insérer et de récupérer des données. Voici un aperçu de deux des modules les plus couramment utilisés :</p>



<ul class="wp-block-list">
<li><strong><em>sqlite3</em></strong>: Ce module fournit des fonctions pour travailler avec une base de données SQLite, qui est une base de données légère, rapide et autonome. Voici un exemple d&rsquo;utilisation du module <strong><em>sqlite3</em></strong> pour se connecter à une base de données SQLite, insérer des données et exécuter une requête :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import sqlite3 
conn = sqlite3.connect('ma_base_de_donnees.db') 
c = conn.cursor() 
c.execute("INSERT INTO ma_table (colonne1, colonne2) VALUES ('valeur1', 'valeur2')") conn.commit() 
c.execute('SELECT * FROM ma_table') 
resultats = c.fetchall() 
print(resultats) 
conn.close()</pre>



<p>Dans cet exemple, nous avons utilisé la méthode <strong><em>connect()</em></strong> pour établir une connexion à une base de données SQLite, spécifiant le nom de la base de données en tant qu&rsquo;argument. Nous avons ensuite créé un objet <strong><em>Cursor</em></strong> à l&rsquo;aide de la méthode <strong><em>cursor()</em></strong>. Nous avons inséré des données dans la table en utilisant la méthode <strong><em>execute()</em></strong>, puis nous avons confirmé les changements avec la méthode <strong><em>commit()</em></strong>. Enfin, nous avons exécuté une requête SQL en utilisant la méthode <strong><em>execute()</em></strong> et récupéré les résultats avec la méthode <strong><em>fetchall()</em></strong>. Nous avons finalement fermé la connexion avec la méthode <strong>close()</strong>.</p>



<ul class="wp-block-list">
<li><strong><em>Pymysql </em></strong>: Ce module fournit des fonctions pour travailler avec une base de données MySQL. Voici un exemple d&rsquo;utilisation du module <strong><em>pymysql</em></strong> pour se connecter à une base de données MySQL, insérer des données et exécuter une requête :</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pymysql 
conn = pymysql.connect(host='localhost', user='utilisateur', password='mot_de_passe', db='ma_base_de_donnees') 
c = conn.cursor() 
c.execute("INSERT INTO ma_table (colonne1, colonne2) VALUES ('valeur1', 'valeur2')") 
conn.commit() 
c.execute('SELECT * FROM ma_table') 
resultats = c.fetchall() 
print(resultats) 
conn.close()</pre>



<p>Dans cet exemple, nous avons utilisé la méthode <strong><em>connect()</em></strong> pour établir une connexion à une base de données MySQL, en spécifiant les paramètres de connexion tels que le nom d&rsquo;utilisateur, le mot de passe et le nom de la base de données. Nous avons ensuite créé un objet <strong><em>Cursor</em></strong> et inséré des données dans la table en utilisant la méthode <strong><em>execute()</em></strong>. Nous avons confirmé les changements avec la méthode <strong><em>commit()</em></strong>. Enfin, nous avons exécuté une requête SQL en utilisant la méthode <strong><em>execute()</em></strong> et récupéré les résultats avec la méthode <strong><em>fetchall()</em></strong>. Nous avons finalement fermé la connexion.</p>



<p>Ces modules offrent une grande variété de fonctions et d&rsquo;outils pour les bases de données en Python 3, permettant aux utilisateurs de se connecter à une base de données, d&rsquo;interagir avec elle, d&rsquo;insérer et de récupérer des données.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/python-les-modules-pour-les-bases-de-donnees/">Python, les modules pour les bases de données</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/python-les-modules-pour-les-bases-de-donnees/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1640</post-id>	</item>
		<item>
		<title>Développement Web, les CMS</title>
		<link>https://programmation.surleweb-france.fr/developpement-web-les-cms/</link>
					<comments>https://programmation.surleweb-france.fr/developpement-web-les-cms/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Sat, 27 Nov 2021 17:48:00 +0000</pubDate>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[création]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sgbdd]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1238</guid>

					<description><![CDATA[<p>Les CMS te permettront de publier ton site internet sans plus de connaissances mais voyons ce qu'est un CMS</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/developpement-web-les-cms/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/developpement-web-les-cms/">Développement Web, les CMS</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A moins d&rsquo;être un féru de PHP et HTML, la mise en place d&rsquo;un site internet peut être fastidieuse, connaissance en langage de programmation, le mise en page, des scripts. Tout ses concepts peuvent être déroutant surtout si tu veux faire un site simple pour évoquer tes recettes de cuisine ou tout autre sujet que tu as envie de partager.</p>



<p>De plus, tu peux rapidement avoir des soucis pour la mise en page ou l&rsquo;intégration d&rsquo;outils si tes connaissances sont limitées. Limitées ne veut pas dire que tu es idiot, des personnes font de la programmation leur métier, ils vont étudier des années afin d&rsquo;acquérir les compétences notamment pour créer et/ou administrer et/ou gérer le contenu d&rsquo;un site internet.</p>



<p>Heureusement, des personnes pleines de bon sens et voulant se simplifier la vie ont créées les <strong><a href="https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_contenu" target="_blank" rel="noreferrer noopener">CMS</a></strong> pour<strong> Content Management System</strong> (pour les anglophiles) ou <strong>Système de Gestion de Contenu</strong> (SGC pour les francophiles !!!).</p>



<h2 class="wp-block-heading">CMS, c&rsquo;est quoi ?</h2>



<p>Un CMS est un système de gestion de contenu, il va permettre de mettre à disposition un ensemble d&rsquo;outils pour publier et gérer du contenu que ce soit la mise en page avec bien souvent des thèmes à foison mais aussi pour l&rsquo;administration de la base de données (<a href="https://www.lemagit.fr/definition/Systeme-de-gestion-de-base-de-donnees-distribuees-SGBDD" target="_blank" rel="noreferrer noopener">SGBDD</a>), les actions sur celle-ci seront gérées par le CMS.</p>



<p>Les CMS vont également fournir (dans la majorité des cas), une gestion des utilisateurs que ce soit en tant qu&rsquo;administrateur, auteur ou lecteur avec des droits qui leur seront propres.</p>



<p>Parmi les CMS les plus connus, on va retrouver :</p>



<ul class="wp-block-list"><li><a href="https://wordpress.com/" target="_blank" rel="noreferrer noopener">WordPress</a></li><li><a href="https://www.prestashop.com/fr" target="_blank" rel="noreferrer noopener">Prestashop</a></li><li><a href="https://www.joomla.fr/" target="_blank" rel="noreferrer noopener">Joomla</a></li><li><a href="https://www.drupal.fr/" target="_blank" rel="noreferrer noopener">Drupal</a></li><li><a href="https://magento.com/" target="_blank" rel="noreferrer noopener">Magento</a></li></ul>



<p>Bien que ce sont tous des systèmes de gestion de contenu, ils n&rsquo;ont pas tous le même objectif, WordPress sera plus orienté blog facile à mettre en œuvre avec l&rsquo;intégration de plugins divers et variés (y compris pour y ajouter une petite plateforme d&rsquo;e-commerce) alors que Magento sera bien plus orienté e-commerce.</p>



<h2 class="wp-block-heading">Plus en détails</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Cette partie n&rsquo;est pas présente pour te dégouter, cela reste très intéressant à connaître, elle est simplement faite pour te montrer comment un CMS peut être utile.</p></blockquote>



<p>Quelque soit le type de site internet que nous voulons concevoir, nous allons avoir besoin de compétences dans différents domaines. Pour la mise en page d&rsquo;un site, qu&rsquo;il soit statique (avec des pages qui ne se modifieront pas une fois chargées) ou bien dynamique (avec des pages ayant une interaction avec l&rsquo;utilisateur même si celui-ci n&rsquo;en a pas conscience).</p>



<p>Vous allez avoir donc besoin de connaître au moins le <a href="https://www.boureliou.com/cnam/xhtml/xhtml-01-xhtml-definition.html" target="_blank" rel="noreferrer noopener">XHTML </a>qui est un langage de description avec des balises :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
    &lt;head>
        &lt;meta charset="utf-8" />
        &lt;title>Mon blog&lt;/title>
        &lt;link href="style.css" rel="stylesheet" /> 
    &lt;/head>
        
    &lt;body>
        &lt;h1>Mon super blog !&lt;/h1>
&lt;p>Derniers billets du blog :&lt;/p>


    &lt;div class="news">
        &lt;h3>
            Le PHP à la conquête du monde !            &lt;em>le 20/09/2020 à 19h38min49s&lt;/em>
        &lt;/h3>
        
        &lt;p>
            C'est officiel, l'éléPHPant a annoncé à la radio  hier soir &amp;quot;J'ai l'intention de conquérir le monde&amp;quot;.&lt;br />
Il a en outre précisé que le monde serait serait à sa botte en moins de temps qu'il n'en fallait pour dire &amp;quot;éléPHPant. Pas dur, ceci dit entre nous ...            &lt;br />
            &lt;em>&lt;a href="index.php?action=post&amp;amp;id=1">Commentaires&lt;/a>&lt;/em>
        &lt;/p>
    &lt;/div>
    &lt;div class="news">
        &lt;h3>
            Bienvenu sur mon blog !            &lt;em>le 18/09/2020 à 10h12min00s&lt;/em>
        &lt;/h3>
        
        &lt;p>
            Je vous souhaite à toutes et à tous la bienvenue  sur mon blog qui parlera de ... PHP, bien sûr !            &lt;br />
            &lt;em>&lt;a href="index.php?action=post&amp;amp;id=2">Commentaires&lt;/a>&lt;/em>
        &lt;/p>
    &lt;/div>
    &lt;/body>
&lt;/html></pre>



<p>Cette page aura le rendu suivant dans votre navigateur :</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="933" height="329" src="//i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-32.png" alt="" class="wp-image-1258" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-32.png?w=933&amp;ssl=1 933w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-32.png?resize=300%2C106&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-32.png?resize=768%2C271&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-32.png?resize=150%2C53&amp;ssl=1 150w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption>Exemple en ayant suivi un cours sur <a href="https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql" target="_blank" rel="noreferrer noopener">openclassroom</a></figcaption></figure></div>



<p>Pas très beau, n&rsquo;est-ce pas ?</p>



<p>Pour lui donner un peu plus de forme, nous devons inclure du CSS. Le CSS permettra de faire la mise en forme des balises utilisées dans le code XHTML. Sans chercher à réaliser quoi que ce soit, voici un exemple en utilisant le code HTML précédent :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">body{
  background-color: green;
  margin: auto
}
h1, h2, h3{
  text-align: center;
}
h1{
  font-size: 50px;
  color: red;
}
h2{
  font-size: 40px;
}
h3{
  font-size: 30px;
}</pre>



<p>Cela donnera un rendu (moche) de ce type :</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="//i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33-1024x356.png" alt="" class="wp-image-1259" width="498" height="173" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33.png?resize=1024%2C356&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33.png?resize=300%2C104&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33.png?resize=768%2C267&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33.png?resize=150%2C52&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33.png?resize=1180%2C410&amp;ssl=1 1180w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-33.png?w=1366&amp;ssl=1 1366w" sizes="(max-width: 498px) 100vw, 498px" /></figure></div>



<p>J&rsquo;espère que malgré la pauvreté de cet exemple, tu comprends que les connaissances pour écrire son site sont importantes.</p>



<p>Maintenant, si tu veux en plus ajouter du dynamisme à ta page, tu auras besoin d&rsquo;un langage de programmation, par exemple le <a href="https://www.php.net/manual/fr/intro-whatis.php#:~:text=PHP%20(officiellement%2C%20ce%20sigle%20est,le%20d%C3%A9veloppement%20d'applications%20web." target="_blank" rel="noreferrer noopener">PHP </a>qui sera du côté serveur, le code HTML pourra être différent en fonction de l&rsquo;internaute mais une fois la page chargée, le code ne bougera plus. Pour faire simple, si tu veux simplement créer un espace membre pour afficher le nom de l&rsquo;internaute qu&rsquo;il aura préalablement enregistrer, sur ton serveur, tu devras écrire les lignes pour :</p>



<ul class="wp-block-list"><li>créer un compte</li><li>se connecter au compte</li><li>afficher les données liées au compte</li></ul>



<p>L&rsquo;exemple suivant, provient du site <a href="https://waytolearnx.com/2020/02/creer-un-espace-membre-avec-administration-en-php-et-mysql.html" target="_blank" rel="noreferrer noopener">Waytolearnx.com</a> :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
&lt;head>
&lt;link rel="stylesheet" href="style.css" />
&lt;/head>
&lt;body>
&lt;?php
require('config.php');

if (isset($_REQUEST['username'], $_REQUEST['email'], $_REQUEST['password'])){
  // récupérer le nom d'utilisateur 
  $username = stripslashes($_REQUEST['username']);
  $username = mysqli_real_escape_string($conn, $username); 
  // récupérer l'email 
  $email = stripslashes($_REQUEST['email']);
  $email = mysqli_real_escape_string($conn, $email);
  // récupérer le mot de passe 
  $password = stripslashes($_REQUEST['password']);
  $password = mysqli_real_escape_string($conn, $password);
  
  $query = "INSERT into `users` (username, email, type, password)
        VALUES ('$username', '$email', 'user', '".hash('sha256', $password)."')";
  $res = mysqli_query($conn, $query);

    if($res){
       echo "&lt;div class='sucess'>
             &lt;h3>Vous êtes inscrit avec succès.&lt;/h3>
             &lt;p>Cliquez ici pour vous &lt;a href='login.php'>connecter&lt;/a>&lt;/p>
       &lt;/div>";
    }
}else{
?>
&lt;form class="box" action="" method="post">
  &lt;h1 class="box-logo box-title">
    &lt;a href="https://waytolearnx.com/">WayToLearnX.com&lt;/a>
  &lt;/h1>
    &lt;h1 class="box-title">S'inscrire&lt;/h1>
  &lt;input type="text" class="box-input" name="username" 
  placeholder="Nom d'utilisateur" required />
  
    &lt;input type="text" class="box-input" name="email" 
  placeholder="Email" required />
  
    &lt;input type="password" class="box-input" name="password" 
  placeholder="Mot de passe" required />
  
    &lt;input type="submit" name="submit" 
  value="S'inscrire" class="box-button" />
  
    &lt;p class="box-register">Déjà inscrit? 
  &lt;a href="login.php">Connectez-vous ici&lt;/a>&lt;/p>
&lt;/form>
&lt;?php } ?>
&lt;/body>
&lt;/html></pre>



<p>Pour dynamiser ta page sans la recharger, tu pourras aussi utiliser le <a href="https://developer.mozilla.org/fr/docs/Learn/JavaScript/First_steps/What_is_JavaScript" target="_blank" rel="noreferrer noopener">javascript</a>, il s&rsquo;agit d&rsquo;un autre langage de programmation qui peut être directement utilisé dans ton navigateur sans avoir à recharger la page, voici un exemple provenant de <a href="http://www.outils-web.com/script-javascript/boite-de-news-3/" target="_blank" rel="noreferrer noopener">Outils-web</a> :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;script language="JavaScript1.2">
/*
Source :  http://www.editeurjavascript.com
 Adaptation : http://www.outils-web.com
 */
/*dimensions de la box*/
ejs_scroll_largeur = 200;
ejs_scroll_hauteur = 100;
/*couleur du fond de la box*/
ejs_scroll_bgcolor = '#DDD';
/* chemin de l'image de fond */
ejs_scroll_background = "";
/* temps en secondes */
ejs_scroll_pause_seconde = 3;

ejs_scroll_message = new Array;
/* placez vos liens et messages ici*/
ejs_scroll_message[0]='&lt;a href="lien 1" CLASS=ejs_scroll>message 1&lt;/a>';
ejs_scroll_message[1]='&lt;a href="lien 2" CLASS=ejs_scroll>message 2&lt;/a>';
ejs_scroll_message[2]='&lt;a href="lien 3" CLASS=ejs_scroll>message 3&lt;/a>';
function d(texte)
	{document.write(texte);}
	d('&lt;DIV ID=ejs_scroll_relativ STYLE="position:relative;width:'+ejs_scroll_largeur+';height:'+ejs_scroll_hauteur+';background-color:'+ejs_scroll_bgcolor+';background-image:url('+ejs_scroll_background+')">');
	d('&lt;DIV ID=ejs_scroll_cadre STYLE="position:absolute;width:'+(ejs_scroll_largeur-8)+';height:'+(ejs_scroll_hauteur-8)+';top:4;left:4;clip:rect(0 '+(ejs_scroll_largeur-8)+' '+(ejs_scroll_hauteur-8)+' 0)">');
	d('&lt;div id=ejs_scroller_1 style="position:absolute;width:'+(ejs_scroll_largeur-8)+';left:0;top:0;" CLASS=ejs_scroll>'+ejs_scroll_message[0]+'&lt;/DIV>');
	d('&lt;div id=ejs_scroller_2 style="position:absolute;width:'+(ejs_scroll_largeur-8)+';left:0;top:'+ejs_scroll_hauteur+';" CLASS=ejs_scroll>'+ejs_scroll_message[1]+'&lt;/DIV>');
d('&lt;/DIV>&lt;/DIV>');

ejs_scroll_mode =1;
ejs_scroll_actuel = 0;
/* NE PAS MODIFIER*/
function ejs_scroll_start()
	{if(ejs_scroll_mode == 1)
		{ejs_scroller_haut = "ejs_scroller_1";
		ejs_scroller_bas = "ejs_scroller_2";
		ejs_scroll_mode = 0;}
	else
		{ejs_scroller_bas = "ejs_scroller_1";
		ejs_scroller_haut = "ejs_scroller_2";
		ejs_scroll_mode = 1;}
	ejs_scroll_nb_message = ejs_scroll_message.length-1;
	if(ejs_scroll_actuel == ejs_scroll_nb_message)
		ejs_scroll_suivant = 0;
	else
		ejs_scroll_suivant = ejs_scroll_actuel+1;
	if(document.getElementById)
		document.getElementById(ejs_scroller_bas).innerHTML = ejs_scroll_message[ejs_scroll_suivant];
	ejs_scroll_top = 0;
	if(document.getElementById)
		setTimeout("ejs_scroll_action()",ejs_scroll_pause_seconde*1000)	}
function ejs_scroll_action()
	{ejs_scroll_top -= 1;
	document.getElementById(ejs_scroller_haut).style.top = ejs_scroll_top;
	document.getElementById(ejs_scroller_bas).style.top = ejs_scroll_top+ejs_scroll_hauteur;
	if((ejs_scroll_top+ejs_scroll_hauteur) > 0)
		setTimeout("ejs_scroll_action()",10)
	else
		ejs_scroll_stop()}
function ejs_scroll_stop()
	{ejs_scroll_actuel = ejs_scroll_suivant;
	ejs_scroll_start()}
window.onload = ejs_scroll_start;</pre>



<p>Pour finir cette partie, en reprenant un espace membre, tu auras besoin d&rsquo;un base de données et de faire des requêtes pour lire des données s&rsquo;y trouvant ou en inscrire de nouvelles, tu utiliseras certainement le langage <a href="https://sql.sh/" target="_blank" rel="noreferrer noopener">SQL </a>(oui encore un nouveau). Pour cela, tu auras besoin d&rsquo;un <a href="https://www.lemagit.fr/definition/Systeme-de-gestion-de-base-de-donnees-distribuees-SGBDD" target="_blank" rel="noreferrer noopener">SGBDD </a>comme <a href="https://mariadb.org/" target="_blank" rel="noreferrer noopener">MariaDB </a>ou bien <a href="https://www.mysql.com/fr/" target="_blank" rel="noreferrer noopener">MySQL </a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">INSERT INTO client (prenom, nom, ville, age)
 VALUES
 ('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24),
 ('Aimée', 'Hebert', 'Marigny-le-Châtel', 36),
 ('Marielle', 'Ribeiro', 'Maillères', 27),
 ('Hilaire', 'Savary', 'Conie-Molitard', 58);</pre>



<h2 class="wp-block-heading">Et alors ? Un CMS ?</h2>



<p>Maintenant que tu as vu les connaissances (minimum) à devoir acquérir, tu comprends que pour mettre en ligne tes pages pour simplement les partager sans faire de toi un <a href="https://www.youtube.com/watch?v=rlarCLhzfoU&amp;ab_channel=michel2i" target="_blank" rel="noreferrer noopener">ingénieur informaticien</a>, il sera plus simple d&rsquo;utiliser un CMS qui te donnera tous les outils pour publier ton site.</p>



<p>Si l&rsquo;on prend l&rsquo;interface de WordPress, tu auras accès (via ton navigateur) à ce genre de page :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="401" src="//i1.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-34-1024x401.png" alt="" class="wp-image-1261" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-34.png?resize=1024%2C401&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-34.png?resize=300%2C117&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-34.png?resize=768%2C300&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-34.png?resize=150%2C59&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-34.png?w=1263&amp;ssl=1 1263w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption>Page d&rsquo;accueil</figcaption></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="356" src="//i1.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35-1024x356.png" alt="" class="wp-image-1263" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35.png?resize=1024%2C356&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35.png?resize=300%2C104&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35.png?resize=768%2C267&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35.png?resize=150%2C52&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35.png?resize=1180%2C410&amp;ssl=1 1180w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-35.png?w=1362&amp;ssl=1 1362w" sizes="auto, (max-width: 900px) 100vw, 900px" /><figcaption>Création d&rsquo;un article</figcaption></figure></div>



<p>WordPress se chargera de mettre en base de données tes articles ainsi que la mise en page grâce à l&rsquo;ajout de thème et de plugin.</p>



<p>Pour ce qui est du rendu, je t&rsquo;invite de finir la lecture pour voir les résultats possibles.</p>



<h2 class="wp-block-heading">Quelques exemples</h2>



<h3 class="wp-block-heading">Site WordPress</h3>



<p>Voici quelques sites utilisant les différentes solutions :</p>



<h4 class="wp-block-heading"><a href="https://thewaltdisneycompany.com/" target="_blank" rel="noreferrer noopener">Walt Disney Company</a></h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="476" src="//i3.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-28-1024x476.png" alt="" class="wp-image-1239" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-28.png?resize=1024%2C476&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-28.png?resize=300%2C139&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-28.png?resize=768%2C357&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-28.png?resize=150%2C70&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-28.png?w=1347&amp;ssl=1 1347w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<h4 class="wp-block-heading"><a href="https://news.microsoft.com/" target="_blank" rel="noreferrer noopener">News Microsoft</a></h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="//i1.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-29-1024x472.png" alt="" class="wp-image-1240" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-29.png?resize=1024%2C472&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-29.png?resize=300%2C138&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-29.png?resize=768%2C354&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-29.png?resize=150%2C69&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-29.png?w=1353&amp;ssl=1 1353w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<h3 class="wp-block-heading">Site Prestashop</h3>



<h4 class="wp-block-heading"><a href="https://www.leslipfrancais.fr/" target="_blank" rel="noreferrer noopener">Le slip français</a></h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="455" src="//i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-30-1024x455.png" alt="" class="wp-image-1251" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-30.png?resize=1024%2C455&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-30.png?resize=300%2C133&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-30.png?resize=768%2C341&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-30.png?resize=150%2C67&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-30.png?w=1349&amp;ssl=1 1349w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<h4 class="wp-block-heading"><a href="https://www.naturabox.com/" target="_blank" rel="noreferrer noopener">Naturabox</a></h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="475" src="//i2.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-31-1024x475.png" alt="" class="wp-image-1252" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-31.png?resize=1024%2C475&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-31.png?resize=300%2C139&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-31.png?resize=768%2C356&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-31.png?resize=150%2C70&amp;ssl=1 150w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/11/image-31.png?w=1353&amp;ssl=1 1353w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p>Je pourrais également faire de même pour l&rsquo;ensemble des CMS, mais tu as saisi l&rsquo;idée. Ces 5 solutions sont les plus répandues.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>J&rsquo;espère ne pas t&rsquo;avoir détourner de l&rsquo;apprentissage des connaissances utiles pour la création d&rsquo;un site internet mais simplement t&rsquo;avoir montré que la création d&rsquo;un site peut être simple même pour une personne ne possédant de connaissance en langage informatique.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/developpement-web-les-cms/">Développement Web, les CMS</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/developpement-web-les-cms/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1238</post-id>	</item>
		<item>
		<title>PHP, utiliser l&#8217;extension PDO</title>
		<link>https://programmation.surleweb-france.fr/php-utiliser-lextension-pdo/</link>
					<comments>https://programmation.surleweb-france.fr/php-utiliser-lextension-pdo/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Wed, 12 May 2021 06:00:00 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[connexion]]></category>
		<category><![CDATA[donnée]]></category>
		<category><![CDATA[injection]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=964</guid>

					<description><![CDATA[<p>L'extension PDO permet d'uniformiser la communication entre PHP et presque toutes les base de données. La mise en place est recommandée, rapide et facile</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/php-utiliser-lextension-pdo/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/php-utiliser-lextension-pdo/">PHP, utiliser l&rsquo;extension PDO</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Nous allons voir dans cette article l&rsquo;utilisation de l&rsquo;extension PDO de PHP afin de communiquer avec une base de données en effectuant des requêtes SQL.</p>



<p>Nous verrons également comment se protéger des attaques par injections SQL.</p>



<h2 class="wp-block-heading">Tester la présence de l&rsquo;extension PDO</h2>



<p>Avant de se lancer dans ce petit article, il est toujours bon de savoir comment tester l&rsquo;activation de l&rsquo;extension, dans un fichier php, y inscrire :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?php
if (extension_loaded ('PDO')) {
    echo 'PDO chargée';
} else {
    echo 'PDO non chargée, activée l\'extension';
}
?></pre>



<p>Si besoin de l&rsquo;activer, je vous invite à suivre ce lien qui vous guidera en fonction de votre système : <a href="https://www.php.net/manual/fr/pdo.installation.php" target="_blank" rel="noreferrer noopener">activer PDO</a>.</p>



<p>Pour cette article, j&rsquo;utilise une base de test, tu peux la télécharger en cliquant sur ce <a href="https://github.com/zigomato/ArticlePHP/blob/main/SQL/create-db-test" target="_blank" rel="noreferrer noopener">lien</a>. Pense à créer un utilisateur avec les droits dessus.</p>



<h2 class="wp-block-heading">Connexion à une base de données</h2>



<p>J&rsquo;utilise une base de données MariaDB, pour une base de données MySQL, ce sera la même chose.</p>



<p>Pour la connexion, tu auras besoin de l&#8217;emplacement de ta base de données avec le port (souvent 3306), le nom de la base de données, l&rsquo;identifiant et le mot de passe. Il est fortement conseiller d&rsquo;inclure le jeu de caractère (encodage).</p>



<p>Pour se connecter, la ligne dans le script ressemblera à ça :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$pdo = new PDO('mysql:host=localhost;dbname=NOM_BASE;port=3306','IDENTIFIANT','MOT_DE_PASSE');</pre>



<p>Cette ligne suffit mais pour être plus réactif en cas d&rsquo;apparition d&rsquo;erreur de connexion, on va tout de suite prendre l&rsquo;habitude de gérer les exceptions :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$dsn = 'mysql:host=localhost;dbname=test;port:3306'; //cela rends l'ouverture de l'instance PDO plus propre à lire
try {
	$pdo = new PDO($dsn,'IDENTIFIANT','MOT_DE_PASSE');
        $pdo->exec("SET NAMES 'UTF8'");
} catch (PDOException $exception) {
	echo $exception->getMessage();
	exit('Erreur de connexion');
}</pre>



<h2 class="wp-block-heading">Effectuer une requête</h2>



<p>Nous allons voir différentes requête (INSERT, UPDATE, SELECT, DELETE) et si tu te souviens, j&rsquo;ai parlé plus haut de se protéger contre les injections SQL. Je vais le faire dans cette partie. </p>



<h3 class="wp-block-heading">Requête SELECT</h3>



<p>Tout d&rsquo;abord, le cas où aucune données n&rsquo;est envoyé vers la base (que ce soit sur un filtre ou l&rsquo;insertion de données) :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$reqSelect = $pdo->query("SELECT * FROM `testBase`);
$resultat = $reqSelect->fetchAll(); // Cela récupère dans un tableau l'ensemble des résultats de la requête dans un array
print_r($resultat);</pre>



<p>Pour me protéger des injections SQL, à partir du moment où des données sont envoyées vers la base, j&rsquo;ai pris cette habitude de passer mes paramètres de cette façon :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$id = 1;
$nom = 'Nicolas';
$req = $pdo->prepare("SELECT * FROM `tabletest` WHERE `id` = :tagId AND `nom` = :tagNom;");
$req->bindParam('tagId', $id, PDO::PARAM_INT);
$req->bindParam('tagNom', $nom, PDO::PARAM_STR);
$req->execute();
$res = $req->fetch(); // récupère seulement le premier résultat.
print_r($res);</pre>



<p>Les paramètres PDO::PARAM_INT et PDO::PARAM_STR permettent de bloquer toutes les valeurs qui ne correspondent pas au type. Pour la liste des types, voir<a href="https://www.php.net/manual/fr/pdo.constants.php" target="_blank" rel="noreferrer noopener"> la documentation PHP</a>.</p>



<h3 class="wp-block-heading">Requête INSERT</h3>



<p>Tu peux passer par la méthode <strong><em>query</em></strong> de l&rsquo;instance PDO mais comme je l&rsquo;ai dit à l&rsquo;instant, à partir du moment où des données sont envoyées vers ma base, je me protège :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$nom = 'Noémie';
$req = $pdo->prepare("INSERT INTO `tabletest` (nom) VALUES (:tagNom);");
$req->bindParam('tagNom', $nom, PDO::PARAM_STR);
$req->execute();
$res = $req->rowCount(); // je récupère le nombre de ligne ajoutée
print_r($res); // j'affiche le nombre de ligne ajoutée</pre>



<h3 class="wp-block-heading">Requête UPDATE</h3>



<p>Même principe pour un UPDATE :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$nom = 'Raphaël';
$id = 11;
$req = $pdo->prepare("UPDATE `tabletest` SET `nom` = :tagNom WHERE `id` = :tagId ;");
$req->bindParam('tagNom', $nom, PDO::PARAM_STR);
$req->bindParam('tagId', $id, PDO::PARAM_INT);
$req->execute();
$res = $req->rowCount();
print_r($res);</pre>



<h3 class="wp-block-heading">Requête DELETE</h3>



<p>On finit cet article par un DELETE :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$id = 11;
$req = $pdo->prepare("DELETE FROM `tabletest` WHERE `id` = :tagId ;");
$req->bindParam('tagId', $id, PDO::PARAM_INT);
$req->execute();
$res = $req->rowCount();
print_r($res);</pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Maintenant, tu es prêts à utiliser l&rsquo;extension PDO pour ta connexion à la base de données tout en protégeant un minimum le trafic des données.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/php-utiliser-lextension-pdo/">PHP, utiliser l&rsquo;extension PDO</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/php-utiliser-lextension-pdo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">964</post-id>	</item>
		<item>
		<title>Installer un serveur web complet</title>
		<link>https://programmation.surleweb-france.fr/installer-serveur-web-complet/</link>
					<comments>https://programmation.surleweb-france.fr/installer-serveur-web-complet/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Fri, 15 May 2020 17:00:00 +0000</pubDate>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[création]]></category>
		<category><![CDATA[hébergement]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[serveur web]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=308</guid>

					<description><![CDATA[<p>Pas à pas pour l'installation d'un serveur web complet prêt à l'emploi</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/installer-serveur-web-complet/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/installer-serveur-web-complet/">Installer un serveur web complet</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Te voilà ici, certainement tu as décidé d&rsquo;installer un serveur web sur ta machine. </p>



<p>Tu peux te retrouver dans cette situation (pas dramatique) parce que tu as choisi d&rsquo;héberger ton site chez toi ou bien choisi un hébergeur où tu es maître de tout (voir l&rsquo;article sur <a href="https://programmation.surleweb-france.fr/hebergement-local-ou-exterieur/(ouvre un nouvel onglet)" target="_blank" rel="noreferrer noopener">l&rsquo;hébergement</a>).</p>



<p>Avant que tu ailles plus loin, je te détaille sur quoi j&rsquo;ai fait mon installation :</p>



<ul class="wp-block-list"><li>Raspberry Pi4, voir le <a rel="noreferrer noopener" href="https://amzn.to/2Lf90iF" target="_blank">lien Amazon d&rsquo;un pack complet</a>.</li><li>Disque dur SSD en format M2 avec boitier extérieur, lien Amazon pour <a rel="noreferrer noopener" href="https://amzn.to/2LaEkiE" target="_blank">le disque dur</a> et lien vers le <a rel="noreferrer noopener" href="https://amzn.to/35QXDr3" target="_blank">boitier</a>.</li></ul>



<p>Le Raspberry Pi4 ne permet pas encore (à l&rsquo;écriture de ces lignes) un fonctionnement complet sur un disque externe. En revanche, un démarrage sur la carte SD puis un basculement vers le disque dur est possible, ce qui rallonge grandement la durée de vie de la carte SD.</p>



<p>Tu pourras donc suivre cet article si tu souhaites créer un serveur sur un OS dérivé de <a rel="noreferrer noopener" href="https://www.debian.org/index.fr.html" target="_blank">Debian</a>.</p>



<p>Cette page fait partie d&rsquo;une suite d&rsquo;article consacré à « <a href="https://programmation.surleweb-france.fr/comprendre-creer-site-internet/" target="_blank" rel="noreferrer noopener">Comprendre et créer un site Internet</a>« .</p>



<h2 class="wp-block-heading">Qu&rsquo;est-ce-qu&rsquo;un serveur web</h2>



<p>On distingue deux types de serveur web :</p>



<ul class="wp-block-list"><li>le hardware qui sera une machine dédiée à stocker l&rsquo;ensemble des fichiers qui compose un site</li><li>le software qui contient différents fragments qui contrôlent la façon dont les utilisateurs peuvent accéder aux fichiers hébergés. On trouvera <em>a minima</em> un serveur <em>HTTP</em>. Un serveur HTTP est un logiciel qui comprend les <a href="https://developer.mozilla.org/fr/docs/Glossaire/URL">URL</a> et le protocole <a href="https://developer.mozilla.org/fr/docs/Glossaire/HTTP">HTTP</a> (le protocole utilisé par le navigateur pour afficher les pages web).Vu sur <a href="https://developer.mozilla.org/fr/docs/Apprendre/Qu_est-ce_qu_un_serveur_web" target="_blank" rel="noreferrer noopener">Mozilla.org</a>.</li></ul>



<p>Ici, nous nous intéresserons au côté software.</p>



<h2 class="wp-block-heading">Installation d&rsquo;un serveur web complet</h2>



<p>Il existe plusieurs serveurs ou configuration disponible. Pour ma part, j&rsquo;ai choisi d&rsquo;installer un LAMP pour Linux Apache2, MariaDB, Php (sachant que le M peut être pour MySQL et le P pour Perl).</p>



<p>L&rsquo;installation se fait via le terminal soit en direct soit en SSH (qui sera certainement le cas).</p>



<p>Dans votre terminal, commences par une mise à jour de la liste des paquets et de ton système en saisissant :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>



<p>Ensuite, tu vas installer la base du LAMP (le serveur web complet pour Linux) :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo apt-get install apache2 php libapache2-mod-php mariadb-server php-mysql</pre>



<p>SI tu souhaites installer mysql, tu remplaces simplement mariadb-server par mysql-server.</p>



<p>Pour compléter l&rsquo;installation, je te conseille d&rsquo;installer des modules supplémentaires notamment si tu compte utiliser un CMS comme WordPress :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip</pre>



<p>Ton serveur est maintenant prêt, pour vérifier, dans ton navigateur, tape l&rsquo;adresse suivante : http://localhost, tu dois voir apparaître :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1532" height="757" src="https://i2.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/test-apache-1.png?fit=900%2C445&amp;ssl=1" alt="" class="wp-image-325" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/test-apache-1.png?w=1532&amp;ssl=1 1532w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/test-apache-1.png?resize=300%2C148&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/test-apache-1.png?resize=1024%2C506&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/test-apache-1.png?resize=768%2C379&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/test-apache-1.png?resize=150%2C74&amp;ssl=1 150w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p>Maintenant, il est temps de faire quelques petites choses, notamment niveau sécurité.</p>



<p>De manière optionnelle, tu peux installer PhpMyAdmin qui te permettra de gérer ta base de données via le navigateur :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo apt-get install phpmyadmin</pre>



<h2 class="wp-block-heading">Sécurisation</h2>



<h3 class="wp-block-heading">Apache2</h3>



<p>Il s&rsquo;agit surtout de protéger les informations qui peuvent être transmise à des petits malins. Le but étant de cacher des informations, en cherchant sur internet différentes solutions, celles remontées étaient déjà mise en place dans l&rsquo;installation de base, dans le fichier <strong>/etc/apache2/conf-available/security.conf</strong>, modifies les valeurs :</p>



<ul class="wp-block-list"><li>ServerTokens en mettant Prod</li><li>ServerSignature en mettant Off</li></ul>



<p>J&rsquo;ai pris par habitude de restreindre tous les dossiers se trouvant dans la racine des sites d&rsquo;Apache (sous debian, c&rsquo;est <strong>/var/www</strong>), pour cela, toujours dans le fichier précédent, ajoutes :</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;Directory />
     Order Allow,Deny
     Allow from all
     AllowOverride None
     Options -Indexes -ExecCGI -FollowSymLinks -Includes
     Require all denied
     AllowOverride None
&lt;/Directory></pre>
</div></div>



<h3 class="wp-block-heading">Sécurisation de MariaDB</h3>



<p>De base, MariaDB, lors de l&rsquo;installation crée un utilisateur root sans mot de passe, ce qui n&rsquo;est pas le plus sur.</p>



<p>Dans le terminal, saisir : </p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo mysql_secure_installation</pre>



<p>En répondant Y (oui) à toutes les réponses, tu auras un système bien plus sécurisé, mais dis-toi que ce ne sera jamais assez face aux petits malins et surtout, la première source d&rsquo;erreur, de fuite, se situe entre le clavier et la chaise.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Si tu as suivi cet article, tu as fait un pas de plus à la mise en ligne de ton site.</p>



<p>Il existe d&rsquo;autre serveur http tel Nginx et d&rsquo;autres gestionnaire de base de données, mais j&rsquo;avoue que j&rsquo;ai l&rsquo;habitude d&rsquo;être sur Apache et MariaDb, côté langage de programmation, j&rsquo;aime beaucoup PHP mais ce n&rsquo;est qu&rsquo;un avis personnel.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/installer-serveur-web-complet/">Installer un serveur web complet</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/installer-serveur-web-complet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">308</post-id>	</item>
	</channel>
</rss>
