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

<channel>
	<title>Php &#8211; s2prod ⋮</title>
	<atom:link href="https://s2prod.net/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://s2prod.net</link>
	<description>Pour les concepteurs de sites web</description>
	<lastBuildDate>Tue, 14 Mar 2023 15:35:16 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://s2prod.net/wp-content/uploads/2024/02/cropped-s2prod_icon512-32x32.png</url>
	<title>Php &#8211; s2prod ⋮</title>
	<link>https://s2prod.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Comment afficher l&#8217;adresse IP de vos visiteurs avec JavaScript ?</title>
		<link>https://s2prod.net/comment-afficher-ladresse-ip-de-vos-visiteurs-avec-javascript/</link>
					<comments>https://s2prod.net/comment-afficher-ladresse-ip-de-vos-visiteurs-avec-javascript/#comments</comments>
		
		<dc:creator><![CDATA[s2prod]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 15:31:12 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Adresse IP Javascript]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[tuto]]></category>
		<guid isPermaLink="false">https://s2prod.net/?p=489</guid>

					<description><![CDATA[La question peut paraître saugrenue, pourquoi utiliser JavaScript alors qu&#8217;on peut le faire facilement avec Php ? Dans mon cas de figure, c&#8217;était un projet « Full JS » et je devais trouver un moyen d&#8217;obtenir l&#8217;adresse IP du visiteur du site à travers JavaScript. Utiliser une API pour afficher l&#8217;adresse IP en JavaScript C&#8217;est probablement la [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>La question peut paraître saugrenue, pourquoi utiliser <strong><a href="https://s2prod.net/javascript/" data-type="category" data-id="21">JavaScript </a></strong>alors qu&rsquo;on peut le faire facilement avec <a href="https://s2prod.net/php/" data-type="category" data-id="20"><strong>Php</strong></a> ? </p>



<p>Dans mon cas de figure, c&rsquo;était un projet « Full JS » et je devais trouver un moyen d&rsquo;<strong>obtenir l&rsquo;adresse IP du visiteur du site à travers JavaScript</strong>.</p>



<div class="gutentoc tocactive nostyle"><div class="gutentoc-toc-wrap"><div class="gutentoc-toc-title-wrap"><div class="gutentoc-toc-title">Sommaire</div><div id="open" class="toggletwo">show</div></div><div id="toclist"><div class="gutentoc-toc__list-wrap"><ul class="gutentoc-toc__list"><li><a href="#utiliser-une-api-pour-afficher-ladresse-ip-en-javascript">Utiliser une API pour afficher l&rsquo;adresse IP en JavaScript</a></li><li><a href="#utiliser-php-pour-créer-une-fonction-javascript-qui-retourne-ladresse-ip">Utiliser Php pour créer une fonction JavaScript qui retourne l&rsquo;adresse IP</a></li><ul class="gutentoc-toc__list"><li><a href="#afficher-les-coordonnées-gps-et-la-ville-de-vos-visiteurs">Afficher les coordonnées GPS et la ville de vos visiteurs</a></li></ul><li><a href="#conclusion">Conclusion</a></li></ul></div></div></div></div>



<h2 class="wp-block-heading" id="utiliser-une-api-pour-afficher-ladresse-ip-en-javascript">Utiliser une API pour afficher l&rsquo;adresse IP en JavaScript</h2>



<p>C&rsquo;est probablement la méthode la plus simple (sur papier).</p>



<p>Il existe pléthore d&rsquo;API qui permettent d&rsquo;<strong>afficher l&rsquo;adresse IP des visiteurs de votre site</strong> et même bien plus, comme la <strong>latitude </strong>et le <strong>longitude</strong>, la <strong>région</strong>, la <strong>ville </strong>…</p>



<p>L&rsquo;une des plus connues est <a href="https://www.ipify.org/" target="_blank" rel="noreferrer noopener nofollow">ipify.org</a>. <strong>Ipify </strong>est la plus connue et probablement la plus utilisée car elle propose une offre gratuite et simple  à intégrer qui permet <strong>1000 requêtes par mois</strong>, à l&rsquo;instar de son concurrent <a href="https://ipapi.com/" target="_blank" rel="noreferrer noopener nofollow">ipapi.com</a>.</p>



<p>Pour afficher l&rsquo;adresse IP d&rsquo;un visiteur en JavaScript avec ipify, il suffit d&rsquo;utiliser le code ci-dessous: </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="">// Il faut préalablement s'inscrire sur ipify avant d'utiliser ce code
&lt;script type="application/javascript">
  function getIP(json) {
    document.write("My public IP address is: ", json.ip);
  }
&lt;/script>

&lt;script type="application/javascript" src="https://api.ipify.org?format=jsonp&amp;callback=getIP">&lt;/script></pre>



<p>Sauf que <strong>1000 requêtes c&rsquo;est peanuts </strong>! Et très rapidement votre appel à l&rsquo;API ne fonctionnera plus.</p>



<h2 class="wp-block-heading" id="utiliser-php-pour-créer-une-fonction-javascript-qui-retourne-ladresse-ip">Utiliser Php pour créer une fonction JavaScript qui retourne l&rsquo;adresse IP</h2>



<p>Il est plus que probable qu&rsquo;un codeur expérimenté 🤓 rira en voyant ce hack, mais à mon niveau je l&rsquo;ai trouvé excellent et <strong>incroyablement simple à mettre en place</strong>.  Le simple fait de modifier l&rsquo;en-tête a permis de rendre cela possible ! </p>



<p>Pour se faire, vous devez créer un fichier <strong>ip.php</strong> (vous pouvez le nommer comme vous le souhaiter) et nous allons y coller le code ci-dessous :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="ip.php" data-enlighter-group="">&lt;?php
     header("Content-type: text/javascript");
?>
function getIPAddress(){ return "&lt;?php echo $_SERVER['REMOTE_ADDR']; ?>"; }</pre>



<p>Vous n&rsquo;avez plus qu&rsquo;à appeler cette page avec les balises script </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;!-- Remplacez mon-chemin par le chemin où se trouver votre fichier -->   
&lt;script type="text/javascript" src="mon-chemin/ip.php">&lt;/script>
</pre>



<p>Il ne vous reste plus qu&rsquo;à appeler la fonction <strong>getIpAddress()</strong> à l&rsquo;endroit où vous souhaitez afficher l&rsquo;ip de vos visiteurs.</p>



<p>En l&rsquo;état le code fonctionne parfaitement. Le seul bémol si vous l&rsquo;avez testé, est que le fichier <strong>ip.php</strong> affiche la fonction en clair, et pour cause, c&rsquo;est du javascript. </p>



<p>Autre point négatif, <strong><a href="https://www.tout-le-web.com" target="_blank" rel="noreferrer noopener">tout le web</a> peut appeler la fonction getIPAddress() </strong>en faisant un lien vers cette page. Je doute que vous ayez envie de jouer les <span title="Content Delivery Network">CDN</span>.  L&rsquo;idéal est donc de rajouter une petite condition pour que <strong>le script s&rsquo;exécute uniquement depuis votre nom de domaine</strong>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="ip.php" data-enlighter-group="">&lt;?php
// Remplacer s2prod.net par votre propre nom de domaine
if($_SERVER['HTTP_HOST'] === 's2prod.net') {
  header("Content-type: text/javascript");
?>
function getIPAddress(){ return "&lt;?php echo $_SERVER['REMOTE_ADDR']; ?>"; }
&lt;?php
} else {
  header("HTTP/1.1 403 Forbidden");
}
?></pre>



<h3 class="wp-block-heading" id="afficher-les-coordonnées-gps-et-la-ville-de-vos-visiteurs">Afficher les coordonnées GPS et la ville de vos visiteurs</h3>



<p>Si vous souhaitez afficher les <strong>coordonnées latitude, longitude</strong> ou même<strong> la ville</strong>, vous pouvez utiliser l&rsquo;objet <a href="https://developer.mozilla.org/fr/docs/Web/API/Navigator" target="_blank" rel="noreferrer noopener">Navigator </a>de JavaScript. Il faudra cependant faire appel à une <strong>API de géocodage inversé</strong> comme <a href="https://nominatim.org/" target="_blank" rel="noreferrer noopener"><strong>Nomimatim</strong></a>, qui a la bonne idée d&rsquo;être gratuite et relativement précise.</p>



<p>⚠️ Attention, pour que l&rsquo;appel fonctionne, il faut que votre visiteur <strong>accepte la géolocalisation</strong>, dans le cas contraire, cela générera une erreur.</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="401" height="274" src="https://s2prod.net/wp-content/uploads/2023/03/geolocalisation.png" alt="" class="wp-image-490" srcset="https://s2prod.net/wp-content/uploads/2023/03/geolocalisation.png 401w, https://s2prod.net/wp-content/uploads/2023/03/geolocalisation-300x205.png 300w" sizes="(max-width: 401px) 100vw, 401px" /></figure>



<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="">if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(
    function (position) {
      const lat = position.coords.latitude;
      const lng = position.coords.longitude;

      // Appelle l'API de géocodage inversé de Nominatim
      fetch(
        `https://nominatim.openstreetmap.org/reverse?format=jsonv2&amp;lat=${lat}&amp;lon=${lng}`
      )
        .then((response) => response.json())
        .then((data) => {
          // Récupère le nom de la ville à partir des données renvoyées par l'API
          const ville =
            data.address.city|| data.address.town || data.address.village;
          document.write(`Vous êtes à ${ville}!`);
        })
        .catch((error) => document.write(error));
    },
    function (error) {
      document.write(error);
    }
  );
} else {
  document.write(
    "La géolocalisation n'est pas prise en charge par votre navigateur"
  );
}
</pre>



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



<p>L&rsquo;appel à une<strong> API gratuite et limitée</strong> peut servir dans certains cas de figure. Personnellement je préfère la méthode fait maison pour <strong>obtenir l&rsquo;adresse IP</strong> en modifiant l&rsquo;en-tête avec PHP. <strong>Aucune limitation et simple à mettre à œuvre</strong>. Concernant les autres données, il faudra utiliser l&rsquo;objet <strong>Navigator </strong>qui devrait faire l&rsquo;objet d&rsquo;une autorisation du visiteur contrairement à l&rsquo;usage d&rsquo;une API externe.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://s2prod.net/comment-afficher-ladresse-ip-de-vos-visiteurs-avec-javascript/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Script Php envoi e-mail automatique répété avec Cron</title>
		<link>https://s2prod.net/script-php-envoi-e-mail-automatique-repete-avec-cron/</link>
					<comments>https://s2prod.net/script-php-envoi-e-mail-automatique-repete-avec-cron/#comments</comments>
		
		<dc:creator><![CDATA[s2prod]]></dc:creator>
		<pubDate>Fri, 11 Sep 2020 10:28:45 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[mail bomber]]></category>
		<guid isPermaLink="false">https://s2prod.net/?p=176</guid>

					<description><![CDATA[Je ne vais pas prétendre avoir réinventé la roue. Il ne s&#8217;agit ni plus, ni mois qu&#8217;un simple script d&#8217;envoi d&#8217;e-mail en php utilisant la fonction mail couplé avec une tache cron. Cela a l&#8217;avantage d&#8217;être simple à mettre en place et ça fonctionne très bien. J&#8217;avais utilisé ce script pour pourrir un peu OVH [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Je ne vais pas prétendre avoir réinventé la roue. Il ne s&rsquo;agit ni plus, ni mois qu&rsquo;un simple script d&rsquo;envoi d&rsquo;e-mail en php utilisant la fonction mail couplé avec une tache cron. Cela a l&rsquo;avantage d&rsquo;être simple à mettre en place et ça fonctionne très bien.</p>



<p>J&rsquo;avais utilisé ce script pour pourrir un peu OVH qui m&rsquo;était 3 semaines à répondre entre chaque demande. Ceux qui me suivent sur Twitter on peut-être vu mes déboires avec eux.</p>



<h2 class="wp-block-heading">Le script</h2>



<p>Côté Php rien de plus simple :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="enlighter" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="Envoi e-mail" data-enlighter-group="">&lt;?php
$to      = 'email@destinataire.tld';
$subject = 'Sujet de votre message';
$message = "Votre message en plain/text,
";

$headers = array(
    'From' => 'monemail@expediteur.tld',
    'Reply-To' => 'email@reponse.tld',
    'X-Mailer' => 'PHP/' . phpversion()
);

mail($to, $subject, $message, $headers);
?>

</pre>



<h2 class="wp-block-heading">Tâche Cron</h2>



<p>Là c&rsquo;est à vous de voir à quelle fréquence vous souhaitez envoyer le message. Pour ma part, j&rsquo;avais voulu être raisonnable et me limiter à 4 envois par jour. Ce qui donnait dans mon cas :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Minute : 0 
Hour : 0,4
Day : *
Month : *
Weekday : *</pre>



<figure class="wp-block-image size-large"><img decoding="async" width="892" height="171" src="https://s2prod.net/wp-content/uploads/2020/09/example.png" alt="" class="wp-image-183" srcset="https://s2prod.net/wp-content/uploads/2020/09/example.png 892w, https://s2prod.net/wp-content/uploads/2020/09/example-300x58.png 300w, https://s2prod.net/wp-content/uploads/2020/09/example-768x147.png 768w" sizes="(max-width: 892px) 100vw, 892px" /></figure>



<p>Il faut maintenant renseigner la ligne de commande. Vous devez renseigner le chemin complet du script. Pour obtenir le chemin complet, créer un fichier test.php, copiez le bout de code ci-dessous. Placez le fichier dans le même répertoire que le script d&rsquo;envoi d&rsquo;e-mail. Ouvrez la page  test.php dans votre navigateur.</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 $_SERVER['SCRIPT_FILENAME'] ?>

</pre>



<p>Si vous êtes sur environnement Cpanel cela va vous retourner quelque chose comme :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/home/user/public_html/nomdedomaine.com/mon_script.php

</pre>



<p>Le chemin identifié, vous ferez précéder votre chemin du binary, en l’occurrence php dans notre exemple. Ce qui donne la ligne de commande suivante :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/usr/local/bin/php /home/user/public_html/nomdedomaine.com/mon_script.php

</pre>



<p>Pensez bien à laisser un espace entre php et /home</p>



<figure class="wp-block-image size-large"><img decoding="async" width="819" height="199" src="https://s2prod.net/wp-content/uploads/2020/09/advanced.png" alt="" class="wp-image-184" srcset="https://s2prod.net/wp-content/uploads/2020/09/advanced.png 819w, https://s2prod.net/wp-content/uploads/2020/09/advanced-300x73.png 300w, https://s2prod.net/wp-content/uploads/2020/09/advanced-768x187.png 768w" sizes="(max-width: 819px) 100vw, 819px" /></figure>



<p>Sur un environnement Cpanel, les tâches Cron sont dans le bloc avancé. Si votre environnement est en anglais, c&rsquo;est le bloc <strong>Advanced </strong>et l&rsquo;icone<strong> Cron Jobs</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="540" height="305" src="https://s2prod.net/wp-content/uploads/2020/09/common-settings.png" alt="" class="wp-image-185" srcset="https://s2prod.net/wp-content/uploads/2020/09/common-settings.png 540w, https://s2prod.net/wp-content/uploads/2020/09/common-settings-300x169.png 300w" sizes="auto, (max-width: 540px) 100vw, 540px" /></figure>



<p>Par défaut Cpanel vous propose des configurations comme toutes les minutes, toutes les heures, toutes les 5 minutes&#8230; A vous de choisir ce qu&rsquo;il vous convient le mieux.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://s2prod.net/script-php-envoi-e-mail-automatique-repete-avec-cron/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
