<?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"
	>

<channel>
	<title>PHProject</title>
	<atom:link href="http://www.phproject.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phproject.fr</link>
	<description>Un projet ENSISA</description>
	<pubDate>Sun, 06 Jul 2008 20:48:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Evolution du site</title>
		<link>http://www.phproject.fr/2008/07/06/evolution-du-site/</link>
		<comments>http://www.phproject.fr/2008/07/06/evolution-du-site/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 20:48:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[adresse mail]]></category>

		<category><![CDATA[ensisa]]></category>

		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=20</guid>
		<description><![CDATA[Depuis peu, le projet qui a donné lieu à ce site s&#8217;est terminé d&#8217;une note positive. Comme ce travail nous a passionné durant ce petit mois, nous avons décidés de continuer ce projet. La partie &#8220;avancement&#8221; ne sera désormais plus mise à jour, vu que le site est complet, et nous nous efforcerons de faire [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Evolution du site", url: "http://www.phproject.fr/2008/07/06/evolution-du-site/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Depuis peu, le projet qui a donné lieu à ce site s&#8217;est terminé d&#8217;une note positive. Comme ce travail nous a passionné durant ce petit mois, nous avons décidés de continuer ce projet. La partie &#8220;avancement&#8221; ne sera désormais plus mise à jour, vu que le site est complet, et nous nous efforcerons de faire évoluer les tutoriaux ! N&#8217;oubliez pas que vous pouvez nous adresser toutes vos question à l&#8217;adresse mail suivante : projet.Ensisa.1A@gmail.com<br />
à bientôt</p>
 <span class="post2pdf_span" style="border: 0px solid gray; width: 160px; text-align: left; "><a href="http://www.phproject.fr/wp-content/plugins/post2pdf/generate.php?post=20" rel="nofollow"><img src="http://www.phproject.fr/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convertir ce post en pdf.</a></span><p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Evolution+du+site&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F07%2F06%2Fevolution-du-site%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/07/06/evolution-du-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tutorial : Php et Mysql</title>
		<link>http://www.phproject.fr/2008/06/11/tutorial-php-et-mysql/</link>
		<comments>http://www.phproject.fr/2008/06/11/tutorial-php-et-mysql/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 14:48:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Non classé]]></category>

		<category><![CDATA[@mysql_connect()]]></category>

		<category><![CDATA[@mysql_query()]]></category>

		<category><![CDATA[@mysql_select_db()]]></category>

		<category><![CDATA[base]]></category>

		<category><![CDATA[connect]]></category>

		<category><![CDATA[idconnexion]]></category>

		<category><![CDATA[include()]]></category>

		<category><![CDATA[mysql_close()]]></category>

		<category><![CDATA[serveur]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=19</guid>
		<description><![CDATA[Le tutorial d&#8217;aujourd&#8217;hui traitera comme promis de requêtes SQL. Pour vraiment comprendre le principe, nous avons décidé de simuler une vente en ligne avec affichage des articles présents dans la base de donnée. Télécharger la base Ouvrez PHPMyAdmin et insérez le fichier. Il est important d&#8217;installer cette base sur votre serveur avec les droits root [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Tutorial : Php et Mysql", url: "http://www.phproject.fr/2008/06/11/tutorial-php-et-mysql/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Le tutorial d&#8217;aujourd&#8217;hui traitera comme promis de requêtes SQL. Pour vraiment comprendre le principe, nous avons décidé de simuler une vente en ligne avec affichage des articles présents dans la base de donnée. <a href="http://www.phproject.fr/wp-content/plugins/download-monitor/download.php?id=7" title="Version 1 downloaded 483 times" >Télécharger la base</a> Ouvrez PHPMyAdmin et insérez le fichier. Il est important d&#8217;installer cette base sur votre serveur avec les droits root sans mot de passe, sur l&#8217;adresse localhost (tout ceci est par défaut sur WampServer). Venons-en à la connexion à la base : pour cela, nous devons disposer de trois fichiers distincts : connexion.inc.php, connexion.php, parametres.inc.php. Les fichiers disposant d&#8217;un inc permettent d&#8217;être insérés dans un autre fichier php, en l&#8217;occurrence connexion.php. Observons les codes : le code ci-dessous montre les choses suivantes : le fichier de connexion inclut directement un second fichier et lui transmet la variable $id_connex, correspondant au nom de la base ainsi que le nom du second fichier à intégrer, ce qui peut être pratique lors d&#8217;un changement de serveur. Enfin, mysql_close($id_connex) fermera la base de donnée.
<pre class="syntax-highlight:php">
&lt;?php
include(&quot;connexion.inc.php&quot;);
$id_connex=connex(&quot;magasin&quot;,&quot;parametres&quot;);
echo &quot;$id_connex&lt;br /&gt;&quot;;
echo mysql_close($id_connex);
?&gt;
</pre>
<p>  On retrouve ci-dessous la variable connex instanciée plus haut avec $base et $param. Suivent les deux fonctions primordiales de php-mysql : @mysql_connect(HOST,USER,PASS) et @mysql_select_db($base). La première permet de se connecter au service mysql, et le second permet de sélectionner la base dans laquelle la requête s&#8217;effectuera. De plus, nous avons implémenté une petite fonction permettant d&#8217;afficherun message lorsque la base n&#8217;est pas trouvée.   </p>
<pre class="syntax-highlight:php">
&lt;?php
function connex($base,$param)
{
include_once($param.&quot;.inc.php&quot;);
$idconnexion=@mysql_connect(HOST,USER,PASS);
$choix_base=@mysql_select_db($base);
if(!$idconnexion|!$choix_base)
{
echo &quot;&lt;script type=text/javascript&gt;&quot;;
echo &quot;alert('Connexion impossible à la base $base')&lt;/script&gt;&quot;;
}
return $idconnexion;
}
?&gt;
</pre>
<p>Le dernier fichier : parametres.php transmet le host, l&#8217;utilisateur et le pass, qui est modifiable.  </p>
<pre class="syntax-highlight:php">
&lt;?php
define(&quot;HOST&quot;,&quot;localhost&quot;);
define(&quot;USER&quot;,&quot;root&quot;);
define(&quot;PASS&quot;,&quot;&quot;);
?&gt;
</pre>
<p>  Enfin, nous devons créer un fichier php qui effectue les requêtes sur la table. L&#8217;entête de ce fichier sera le suivant :
<pre class="syntax-highlight:php">
include(&quot;connexion.inc.php&quot;);
$id_connex=connex(&quot;magasin&quot;,&quot;parametres&quot;);
$requete=&quot;SELECT * FROM article ORDER BY prix&quot;;
$result=@mysql_query($requete,$id_connex);
</pre>
<p>  Comme vous pouvez le constater, ici aussi il faut inclure le fichier connexion et transmettre la variable connex. La nouveauté ici, est la requete : il faut l&#8217;affecter à une variable (ici $requete), et transmettre celle-ci avec la fonction @mysql_query($requete,$id_connex). Le reste du code n&#8217;est qu&#8217;une mise en forme du résultat. Je vous invite à télécharger le dossier complet, car nous y avons intégré d&#8217;autres fonctions intéressantes, à savoir la recherche de clients dans une base, l&#8217;affichage des articles précis de la base&#8230; Voilà, vous savez désormais comment requêter une base SQL. <a href="http://www.phproject.fr/wp-content/plugins/download-monitor/download.php?id=8" title="Version 1 downloaded 489 times" >Télécharger tutorial mysql</a> <!--post2pdf_exclude--></p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Tutorial+%3A+Php+et+Mysql&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F06%2F11%2Ftutorial-php-et-mysql%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/06/11/tutorial-php-et-mysql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avancement au 09-06-2008</title>
		<link>http://www.phproject.fr/2008/06/09/avancement-au-09-06-2008/</link>
		<comments>http://www.phproject.fr/2008/06/09/avancement-au-09-06-2008/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 09:45:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Avancement]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=18</guid>
		<description><![CDATA[Cette matinée nous a permis de mettre en ligne les nouvelles statistiques du site : les visites deviennent moins fréquentes mais les accès directs augmentent, avant tout à partir du moteur de recherche, ce qui laisse à penser que le site est connu, car recherché directement. La page « tutoriaux » a été enrichie pour [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Avancement au 09-06-2008", url: "http://www.phproject.fr/2008/06/09/avancement-au-09-06-2008/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Cette matinée nous a permis de mettre en ligne les nouvelles statistiques du site : les visites deviennent moins fréquentes mais les accès directs augmentent, avant tout à partir du moteur de recherche, ce qui laisse à penser que le site est connu, car recherché directement. La page « tutoriaux » a été enrichie pour expliquer aux visiteurs que pour atteindre les tutoriaux, la bande latérale doit être utilisée. C&#8217;est un peu un inconvénient, mais le site ne le permet pas autrement. Enfin, des mots clés correspondants aux fonctions des tutoriaux ont été rajoutés. D&#8217;ici mercredi nous tenterons tout de même de publier encore un tutorial utilisant MYSQL, l&#8217;utilisation principale avec php&#8230; Nous attendons également quelques réactions de votre part concernant les derniers tutoriaux publiés !</p>
 <span class="post2pdf_span" style="border: 0px solid gray; width: 160px; text-align: left; "><a href="http://www.phproject.fr/wp-content/plugins/post2pdf/generate.php?post=18" rel="nofollow"><img src="http://www.phproject.fr/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convertir ce post en pdf.</a></span><p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Avancement+au+09-06-2008&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F06%2F09%2Favancement-au-09-06-2008%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/06/09/avancement-au-09-06-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avancement au 06-06-2008</title>
		<link>http://www.phproject.fr/2008/06/06/avancement-au-06-06-2008/</link>
		<comments>http://www.phproject.fr/2008/06/06/avancement-au-06-06-2008/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 15:52:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Avancement]]></category>

		<category><![CDATA[visibilité]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=16</guid>
		<description><![CDATA[La journée de vendredi nous a permis de rechercher différents tutoriaux à réaliser, ils seront disponibles sous peu. Le site a été entre autres enrichi de deux logos des sites principaux traitant du PHP, pour augmenter leur visibilité. Le blog se faisant un peu trop long, nous avons décidés de raccourcir l&#8217;affichage des pages à [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Avancement au 06-06-2008", url: "http://www.phproject.fr/2008/06/06/avancement-au-06-06-2008/" });</script>]]></description>
			<content:encoded><![CDATA[<p>La journée de vendredi nous a permis de rechercher différents tutoriaux à réaliser, ils seront disponibles sous peu. Le site a été entre autres enrichi de deux logos des sites principaux traitant du PHP, pour augmenter leur visibilité. Le blog se faisant un peu trop long, nous avons décidés de raccourcir l&#8217;affichage des pages à 4 articles par pages : la présentation est alors moins lourde. Au niveau des visites, nous avons constatés des pics de visites le week-end, mais nous en avons pas vraiment d&#8217;explication. En somme, le site est opérationnel et n&#8217;attend qu&#8217;à être enrichi de tutoriaux divers !</p>
 <span class="post2pdf_span" style="border: 0px solid gray; width: 160px; text-align: left; "><a href="http://www.phproject.fr/wp-content/plugins/post2pdf/generate.php?post=16" rel="nofollow"><img src="http://www.phproject.fr/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convertir ce post en pdf.</a></span><p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Avancement+au+06-06-2008&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F06%2F06%2Favancement-au-06-06-2008%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/06/06/avancement-au-06-06-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tutorial : envoi d&#8217;images sur un serveur</title>
		<link>http://www.phproject.fr/2008/06/04/tutorial-envoi-dimages-sur-un-serveur/</link>
		<comments>http://www.phproject.fr/2008/06/04/tutorial-envoi-dimages-sur-un-serveur/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 12:36:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[avancé]]></category>

		<category><![CDATA[ereg()]]></category>

		<category><![CDATA[formulaire]]></category>

		<category><![CDATA[images]]></category>

		<category><![CDATA[include()]]></category>

		<category><![CDATA[move_uploaded_file()]]></category>

		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=15</guid>
		<description><![CDATA[Voici le premier tutorial pour utilisateurs avancés : l&#8217;upload d&#8217;images (ou envoi d&#8217;images).
Ce tutorial est un peu plus complexe que les autres publiés jusqu&#8217;à maintenant car il fait appel à une multitude de fonctions que nous tenterons d&#8217;éclaircir pour vous. Ce script sera composé de deux fichiers utiles à la gestion d&#8217;erreur. Au finale le [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Tutorial : envoi d&#8217;images sur un serveur", url: "http://www.phproject.fr/2008/06/04/tutorial-envoi-dimages-sur-un-serveur/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Voici le premier tutorial pour utilisateurs avancés : l&#8217;upload d&#8217;images (ou envoi d&#8217;images).<br />
Ce tutorial est un peu plus complexe que les autres publiés jusqu&#8217;à maintenant car il fait appel à une multitude de fonctions que nous tenterons d&#8217;éclaircir pour vous. Ce script sera composé de deux fichiers utiles à la gestion d&#8217;erreur. Au finale le script sera capable de : reconnaître que le fichier est une image, limiter la taille de l&#8217;image, afficher un texte d&#8217;upload raté/réussi ainsi que l&#8217;image uploadée et le lien static de celle-ci pour l&#8217;intégrer à d&#8217;autres sites par exemple.<br />
Débutons par le formulaire :</p>
<p>
Le formulaire d&#8217;envoi doit spécifier en action : action=&#8221;Envoi_images.php&#8221;. Ceci est nécessaire pour spécifier au formulaire que Envoi_images.php sera le fichier qui traitera la commande. Ensuite, nous entrons la taille maximale du fichier. Son type est à « hidden », cela signifie qu&#8217;il est invisible à l&#8217;utilisateur mais pas pour le serveur. Le reste est du HTML standard.  </p>
<p><pre class="syntax-highlight:html">
&lt;form enctype=&quot;multipart/form-data&quot; action=&quot;Envoi_images.php&quot; method=&quot;POST&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;MAX_FILE_SIZE&quot; value=&quot;5000000&quot;&gt;
&lt;input type=&quot;file&quot; name=&quot;img&quot; size=&quot;50&quot;&gt;
&lt;p&gt;&lt;input type=&quot;submit&quot; name=&quot;envoi&quot; value=&quot;Envoyer l'image&quot;&gt;
&lt;/form&gt;
</pre>
<p>
Comme tout script PHP avec formulaire, il faut tester si le bouton « envoyer » a bien été cliqué</p>
<p><pre class="syntax-highlight:php">
if(!isset($_POST['envoi']))
</pre>
<p>
Si envoi a été cliqué, il faut inclure le fichier secondaire pour afficher le formulaire !</p>
<p><pre class="syntax-highlight:php">
include(&quot;formulaire_envoi.inc&quot;);
</pre>
<p>
Il paraît évident que si le fichier est trop grand, que ce n&#8217;est pas une image, ou qu&#8217;il y a eu une erreur quelconque, l&#8217;utilisateur doit en être informé</p>
<p><pre class="syntax-highlight:php">
	if($_FILES['img']['tmp_name'] == &quot;none&quot;)
	{
		echo &quot;&lt;b&gt;Il y a eu un problème. Soit votre fichier n'est pas une image, soit il dépasse les 5Mo.&lt;br&gt;&quot;;
		include(&quot;formulaire_envoi.inc&quot;);
		exit();
	}
	if(!ereg(&quot;image&quot;,$_FILES['img']['type']))
	{
		echo &quot;&lt;b&gt;Le fichier n'est pas une image!&lt;/b&gt;&lt;br&gt;&quot;;
		include(&quot;formulaire_envoi.inc&quot;);
		exit();
	}
</pre>
<p>
Dans le code ci-dessus,$_FILES[&#8217;img&#8217;][&#8217;tmp_name&#8217;] == &#8220;none&#8221; teste si le fichier temporaire créé lors de l&#8217;upload est disponible. S&#8217;il ne l&#8217;est pas, une erreur est survenue! On informe l&#8217;utilisateur. Ensuite, le test suivant !ereg(&#8221;image&#8221;,$_FILES[&#8217;img&#8217;][&#8217;type&#8217;]) va essayer de voir si le fichier est une image. «int ereg ( string $pattern, string $string [,array &#038;$regs]): recherche dans la chaîne string les séquences de caractères qui correspondent au masque pattern, en tenant compte de la casse ». (PHP.net) </p>
<p>
Quand tous les tests ont réussis :<br />
Il faut dorénavant specifier la destination d&#8217;enregistrement de l&#8217;image : ici nous la mettrons à la racine du dossier dans lequel se trouve le script. Il est également de rigueur de définir un fichier temporaire lors de l&#8217;upload. </p>
<p><pre class="syntax-highlight:php">
$destination = $_FILES['img']['name'];
$fichier_temporaire = $_FILES['img']['tmp_name'];
</pre>
<p>
« move_uploaded_file ( string $filename , string $destination ) s&#8217;assure que le fichier filename est un fichier téléchargé par HTTP POST. Si le fichier est valide, il est déplacé jusqu&#8217;à destination. Ce type de vérification est spécialement important s&#8217;il est possible que les fichiers téléchargés révèlent leur contenu à l&#8217;utilisateur, ou même aux utilisateurs du même système ». (PHP.net) </p>
<p><pre class="syntax-highlight:php">
move_uploaded_file($fichier_temporaire,$destination);
</pre>
<p>
Enfin, les quelques lignes supplémentaires sont uniquement pour la commodité de l&#8217;utilisateur : confirmation de l&#8217;envoi avec taille de fichier, affichage de l&#8217;image envoyée, affichage du lien statique de l&#8217;image (attention, ici l&#8217;image es stockée dans ../fich/upload/image.jpg, ce qui peut différer sur votre serveur!)</p>
<p><pre class="syntax-highlight:php">
echo &quot;&lt;p&gt;&lt;b&gt;L'image a bien été envoyée: &lt;/b&gt;{$_FILES['img']['name']} ({$_FILES['img']['size']} octets)&lt;/p&gt;&quot;;
echo &quot;&lt;img src=&quot;.$destination.&quot; width='400' /&gt;&quot;;
echo &quot;&lt;p&gt;Le lien de l'image est: http://&quot;.$_SERVER[&quot;SERVER_NAME&quot;].&quot;/fich/upload/&quot;.$destination;
echo &quot;&lt;p&gt; &lt;a href='Envoi_images.php'&gt;retour&lt;/a&gt;&quot;;
</pre>
<p><a href="http://www.phproject.fr/wp-content/plugins/download-monitor/download.php?id=6" title="Version 1 downloaded 257 times" >Télécharger Envoi d&#8217;images</a><br />
<!--post2pdf_exclude--></p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Tutorial+%3A+envoi+d%26%238217%3Bimages+sur+un+serveur&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F06%2F04%2Ftutorial-envoi-dimages-sur-un-serveur%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/06/04/tutorial-envoi-dimages-sur-un-serveur/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tutorial : accès privé</title>
		<link>http://www.phproject.fr/2008/06/04/tutorial-acces-prive/</link>
		<comments>http://www.phproject.fr/2008/06/04/tutorial-acces-prive/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 08:54:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[accès privé]]></category>

		<category><![CDATA[connexion]]></category>

		<category><![CDATA[débutant]]></category>

		<category><![CDATA[formulaire]]></category>

		<category><![CDATA[login]]></category>

		<category><![CDATA[php session]]></category>

		<category><![CDATA[session]]></category>

		<category><![CDATA[utilisateur]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=13</guid>
		<description><![CDATA[Aujourd&#8217;hui nous allons nous familiariser avec les accès privés. Pour bien comprendre le principe, nous allons prendre le cas d&#8217;une connexion à un seul utilisateur (comme un admin par exemple) et tester l&#8217;accès à des pages privées. Pour ce faire, il est nécessaire d&#8217;avoir des connaissances en HTML, en effet il faut réaliser un formulaire [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Tutorial : accès privé", url: "http://www.phproject.fr/2008/06/04/tutorial-acces-prive/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui nous allons nous familiariser avec les accès privés. Pour bien comprendre le principe, nous allons prendre le cas d&#8217;une connexion à un seul utilisateur (comme un admin par exemple) et tester l&#8217;accès à des pages privées. Pour ce faire, il est nécessaire d&#8217;avoir des connaissances en HTML, en effet il faut réaliser un formulaire de connexion. Cette technique ne sera pas développée ici, mais sera disponible dans les sources plus bas.<br />
Commençons :<br />
Dans la page accessible au serveur, index.html, nous développerons deux parties : un accès publique et un accès privée. Comme c&#8217;est un exemple, nous ne considérons pas la forme de la chose (pas de CSS attaché).  </p>
<p><pre class="syntax-highlight:html">
&lt;p&gt;&lt;a href=&quot;pagepublique.html&quot;&gt;accès public&lt;/a&gt;
&lt;a href=&quot;accesprive.php&quot;&gt;accès privé&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;accesprive.php&quot; class=&quot;Style1&quot;&gt;un&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;accesprive.php&quot; class=&quot;Style2&quot;&gt;deux&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;accesprive.php&quot; class=&quot;Style3&quot;&gt;trois&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;accesprive.php&quot; class=&quot;Style4&quot;&gt;quatre&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;accesprive.php&quot; class=&quot;Style5&quot;&gt;cinq&lt;/a&gt;
</pre>
<p>
Cette page très sommaire peut être enrichie, mais ce n&#8217;est pas le but. Vous remarquerez l&#8217;accès aux différents fichiers PHP d&#8217;accès privé.<br />
Justement, passons aux choses sérieuses :<br />
L&#8217;accès privé. PHP impose à ses utilisateurs de mettre tout en haut d&#8217;un fichier à accès privé la chose suivante :</p>
<p><pre class="syntax-highlight:php">
&lt;?php
session_start();
?&gt;
</pre>
<p>
« session_start() crée une session (ou restaure celle trouvée sur le serveur, via l&#8217;identifiant de session passé dans une requête GET, POST ou par un cookie) » (PHP.net)<br />
Au final, il est important de vérifier si les champs login et mot de passe sont bien renseignés avec les bonnes données dans quel cas on enverra &#8220;$_SESSION[&#8217;acces&#8217;]=&#8221;oui&#8221; et le nom de l&#8217;utilisateur sera transféré par la même occasion :  $_SESSION[&#8217;nom&#8217;]=$_POST[&#8217;login&#8217;]. (un test vrai-faux est nécessaire : if/else)</p>
<p><pre class="syntax-highlight:php">
&lt;?php
session_start();
if($_POST['login']==&quot;benoit&quot; &amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp; $_POST['pass']==&quot;remi&quot;)
{
$_SESSION['acces']=&quot;oui&quot;;
$_SESSION['nom']=$_POST['login'];
echo &quot;Vous avez été authentifié&quot;;
}else echo &quot;Vous n'êtes pas authentifié&quot;;
?&gt;
</pre>
<p>
Une fois connecté avec le bon login et mot de passe (ici login: benoit, mot de passe: remi) toutes les pages privées doivent débuter avec le session_start() expliqué plus haut. De plus, il faut tester si la personne qui visite la page, dispose des droits nécessaires, c&#8217;est à dire si l&#8217;accès a été accordé.</p>
<p><pre class="syntax-highlight:php">
if($_SESSION['acces']!=&quot;oui&quot;)
{
header(&quot;Location:accesprive.php&quot;);
}
</pre>
<p>D&#8217;autres fonctionnalités annexes ont été rajoutées ici comme par exemple le nombre de visites sur les pages privées, ou encore l&#8217;affichage du statut de la connexion (connecté, non connecté). Il faut néanmoins savoir qu&#8217;il est beaucoup plus intéressant de créer des logins par MYSQL. Ce point sera traité ultérieurement.</p>
<p>Vous pouvez télécharger les sources ici :<br />
<a href="http://www.phproject.fr/wp-content/plugins/download-monitor/download.php?id=5" title="Version 1 downloaded 262 times" >Télécharger Accès privé</a><br />
<!--post2pdf_exclude--></p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Tutorial+%3A+acc%C3%A8s+priv%C3%A9&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F06%2F04%2Ftutorial-acces-prive%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/06/04/tutorial-acces-prive/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avancement au 29/05/2008</title>
		<link>http://www.phproject.fr/2008/05/29/avancement-au-29052008/</link>
		<comments>http://www.phproject.fr/2008/05/29/avancement-au-29052008/#comments</comments>
		<pubDate>Thu, 29 May 2008 14:49:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Avancement]]></category>

		<category><![CDATA[logiciel]]></category>

		<category><![CDATA[wampserver]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=12</guid>
		<description><![CDATA[Comme vous avez pu le constater, le premier tutorial est en ligne. Le prochain en préparation traitera de l&#8217;envoi d&#8217;images sur votre site! Mis à part cela, le site n&#8217;a pas évolué grandement au niveau du fonctionnement, wampserver, le logiciel de test des codes a été ajouté dans la rubrique « turoriaux », de plus [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Avancement au 29/05/2008", url: "http://www.phproject.fr/2008/05/29/avancement-au-29052008/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Comme vous avez pu le constater, le premier tutorial est en ligne. Le prochain en préparation traitera de l&#8217;envoi d&#8217;images sur votre site! Mis à part cela, le site n&#8217;a pas évolué grandement au niveau du fonctionnement, wampserver, le logiciel de test des codes a été ajouté dans la rubrique « turoriaux », de plus si vous cherchez des tutoriaux, veuillez utiliser la colonne de droite à cet effet! Des mots clés « débutant, avancé et expert » ont été ajoutés dans le nuage de tags pour définir tout les tutoriaux et le niveaux qu&#8217;ils requierent (cliquez sur le mot clé pour accéder aux tutoriaux correspondants).<br />
Bonne lecture!</p>
 <span class="post2pdf_span" style="border: 0px solid gray; width: 160px; text-align: left; "><a href="http://www.phproject.fr/wp-content/plugins/post2pdf/generate.php?post=12" rel="nofollow"><img src="http://www.phproject.fr/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convertir ce post en pdf.</a></span><p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Avancement+au+29%2F05%2F2008&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F05%2F29%2Favancement-au-29052008%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/05/29/avancement-au-29052008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Turorial : compteur de visites</title>
		<link>http://www.phproject.fr/2008/05/26/turorial-compteur-de-visites/</link>
		<comments>http://www.phproject.fr/2008/05/26/turorial-compteur-de-visites/#comments</comments>
		<pubDate>Mon, 26 May 2008 16:46:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[avancé]]></category>

		<category><![CDATA[compteur visites]]></category>

		<category><![CDATA[fclose()]]></category>

		<category><![CDATA[flock()]]></category>

		<category><![CDATA[fopen()]]></category>

		<category><![CDATA[fread()]]></category>

		<category><![CDATA[fwrite()]]></category>

		<category><![CDATA[lecture fichier]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=11</guid>
		<description><![CDATA[Pour le compteur de visites il est important de connaître les fonctions suivantes : fopen(), fclose(), flock(), fwrite() dont on peut observer les fonctionnalités sur PHP.net.
Sachant que le nombre de visites est enregistré dans un fichier texte, le but du tutorial sera de lire le fichier correspondant et d&#8217;y incrémenter les visites :
Tout d&#8217;abord, il [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Turorial : compteur de visites", url: "http://www.phproject.fr/2008/05/26/turorial-compteur-de-visites/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Pour le compteur de visites il est important de connaître les fonctions suivantes : fopen(), fclose(), flock(), fwrite() dont on peut observer les fonctionnalités sur PHP.net.<br />
Sachant que le nombre de visites est enregistré dans un fichier texte, le but du tutorial sera de lire le fichier correspondant et d&#8217;y incrémenter les visites :</p>
<p>Tout d&#8217;abord, il faut tester si le fichier existe ou non</p>
<pre class="syntax-highlight:php">
if(file_exists(&quot;compteur.txt&quot;))
</pre>
<p>s&#8217;il existe, l&#8217;ouvrir en lecture (r)  </p>
<pre class="syntax-highlight:php">
	if($id_file=fopen(&quot;compteur.txt&quot;,&quot;r&quot;))
</pre>
<p>« flock() permet de réaliser un système simple de verrous écriture/lecture, qui peut être utilisé sur n&#8217;importe quelle plate-forme (Unix et Windows compris). Le verrou est également levé avec la fonction fclose()  (qui est également automatiquement appelée lors de la fin du script).<br />
PHP dispose d&#8217;un système complet de verrouillage de fichiers. Tous les programmes qui accèdent au fichier doivent utiliser la même méthode de verrouillage pour qu&#8217;il soit efficace » (PHP.net)</p>
<pre class="syntax-highlight:php">
		flock($id_file,1);
</pre>
<p>« fread() retourne la chaîne lue, ou FALSE si une erreur survient » (PHP.net) 10 = nombre d&#8217;octets lus<br />
Il faut incrémenter le compteur à chaque fois que la fonction est appelée.</p>
<pre class="syntax-highlight:php">
		$nb=fread($id_file,10);
$nb++;
</pre>
<p>fclose() ferme le fichier entré en paramètres.</p>
<pre class="syntax-highlight:php">
		fclose($id_file);
</pre>
<p>« fopen() crée une ressource nommée, spécifiée par le paramètre filename(&quot;compteur.txt&quot;), sous la forme d&#8217;un flux. W = ouverture en écriture » (PHP.net)</p>
<pre class="syntax-highlight:php">
		$id_file=fopen(&quot;compteur.txt&quot;,&quot;w&quot;);
</pre>
<p>«fwrite() écrit le contenu de la chaîne $nb dans le fichier pointé $id_file » (PHP.net)</p>
<pre class="syntax-highlight:php">
		fwrite($id_file,$nb);
</pre>
<p>Verrou lecture/écriture et fermeture du fichier.</p>
<pre class="syntax-highlight:php">
		flock($id_file,3);
		fclose($id_file);
</pre>
<p>Si le fichier n&#8217;existe pas, afficher cette phrase.</p>
<pre class="syntax-highlight:php">
		echo &quot; fichier introuvable&quot;;
</pre>
<p>Si le fichier n&#8217;existe pas, il faut en créer un nouveau qui commence à 1.</p>
<pre class="syntax-highlight:php">
		$nb = 1;
		$id_file=fopen(&quot;compteur.txt&quot;,&quot;w&quot;);
		fwrite($id_file,$nb);
		fclose($id_file);
</pre>
<p>Affichage du résultat</p>
<pre class="syntax-highlight:php">
		echo &quot;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Voici déjà &lt;/td&gt;&lt;td&gt;$nb&lt;/td&gt;&lt;td&gt;visites sur le site&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&quot;;
</pre>
<p>Au final, il faut mettre tout cela en forme. Le principe est simple, voir la source ci-dessous :</p>
<p><a href="http://www.phproject.fr/wp-content/plugins/download-monitor/download.php?id=3" title="Version 1 downloaded 268 times" >télécharger compteur_visites.php (268)</a></p>
<p>Au final, ce script donnera cela :<br />
<table><tr><td>Voici d&eacute;j&agrave; </td><td>13767</td><td>visites sur le site</td></tr></table>
<br />
<!--post2pdf_exclude--></p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Turorial+%3A+compteur+de+visites&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F05%2F26%2Fturorial-compteur-de-visites%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/05/26/turorial-compteur-de-visites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avancement au 20-05-2008</title>
		<link>http://www.phproject.fr/2008/05/20/avancement-au-20-05-2008/</link>
		<comments>http://www.phproject.fr/2008/05/20/avancement-au-20-05-2008/#comments</comments>
		<pubDate>Tue, 20 May 2008 19:22:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Avancement]]></category>

		<category><![CDATA[accessibilité]]></category>

		<category><![CDATA[cv]]></category>

		<category><![CDATA[mail]]></category>

		<category><![CDATA[pdf]]></category>

		<category><![CDATA[scribd]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=10</guid>
		<description><![CDATA[La journée de jeudi a été utilisée pour ajouter quelques fonctionnalités au site, avant tout d’amélioration et d’accessibilité, mais aussi différentes fonctions d’affichage de codes ainsi que de téléchargement de fichiers. Ce téléchargement de fichiers est utile pour proposer les sources aux internautes, ainsi que nos CV attachés dans la partie « Qui sommes-nous ? [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Avancement au 20-05-2008", url: "http://www.phproject.fr/2008/05/20/avancement-au-20-05-2008/" });</script>]]></description>
			<content:encoded><![CDATA[<p>La journée de jeudi a été utilisée pour ajouter quelques fonctionnalités au site, avant tout d’amélioration et d’accessibilité, mais aussi différentes fonctions d’affichage de codes ainsi que de téléchargement de fichiers. Ce téléchargement de fichiers est utile pour proposer les sources aux internautes, ainsi que nos CV attachés dans la partie « Qui sommes-nous ? ».</p>
<p>Par rapport à la partie « A propos de nous », nous voulions proposer une visionneuse de PDF intégrée grâce au site « scribd » avec lequel nous trouvons que nos CV sont bien mis en valeur : possibilité de zoomer, d’afficher sur une grande page, et même de faire circuler celui-ci aisément par mail. Nous avons implémenté les mêmes fonctionnalités pour le référencement.</p>
<p>Enfin, quelques tutoriaux sont en cours de test : un tutorial sur l’upload (envoi vers le serveur) de fichiers, une calculatrice simple…Ceux-ci seront intégrés après avoir été testés à 100%.</p>
 <span class="post2pdf_span" style="border: 0px solid gray; width: 160px; text-align: left; "><a href="http://www.phproject.fr/wp-content/plugins/post2pdf/generate.php?post=10" rel="nofollow"><img src="http://www.phproject.fr/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convertir ce post en pdf.</a></span><p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=Avancement+au+20-05-2008&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F05%2F20%2Favancement-au-20-05-2008%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/05/20/avancement-au-20-05-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;One app a week&#8221;</title>
		<link>http://www.phproject.fr/2008/05/09/one-app-a-week/</link>
		<comments>http://www.phproject.fr/2008/05/09/one-app-a-week/#comments</comments>
		<pubDate>Fri, 09 May 2008 08:30:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Avancement]]></category>

		<category><![CDATA[application]]></category>

		<category><![CDATA[aujourd hui]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[phproject]]></category>

		<category><![CDATA[préparation]]></category>

		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.phproject.fr/?p=9</guid>
		<description><![CDATA[Dès aujourd’hui nous lançons l’idée « one app a week » (« une application par semaine »). Cette idée a pour but de proposer toutes les semaines un tutorial intéressant en PHP destiné aussi bien aux débutants qu’aux experts.
Pour ce qui est de l’avancement : le SEO (Search Engine Optimisation : optimisation de moteurs de [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "&#8220;One app a week&#8221;", url: "http://www.phproject.fr/2008/05/09/one-app-a-week/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Dès aujourd’hui nous lançons l’idée « one app a week » (« une application par semaine »). Cette idée a pour but de proposer toutes les semaines un tutorial intéressant en PHP destiné aussi bien aux débutants qu’aux experts.<br />
Pour ce qui est de l’avancement : le SEO (Search Engine Optimisation : optimisation de moteurs de recherches) porte ses fruits, première place dans Google en tapant « phproject ». Création des différentes rubriques et développement des extensions.<br />
Préparation des premiers tutoriaux.</p>
 <span class="post2pdf_span" style="border: 0px solid gray; width: 160px; text-align: left; "><a href="http://www.phproject.fr/wp-content/plugins/post2pdf/generate.php?post=9" rel="nofollow"><img src="http://www.phproject.fr/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convertir ce post en pdf.</a></span><p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=14015593-620d-4d58-ab50-749c420c82ab&amp;title=%26%238220%3BOne+app+a+week%26%238221%3B&amp;url=http%3A%2F%2Fwww.phproject.fr%2F2008%2F05%2F09%2Fone-app-a-week%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phproject.fr/2008/05/09/one-app-a-week/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

