Détecter une requête AJAX en PHP

<p>Dernièrement j&#39;ai été confronté à une difficulté.</p>

<p>Dans l&#39;un de mes sites je devais installer une visionneuse de pages en Ajax. Seul souci: La page appelée devait comporter certains éléments quand elle était appelée par ajax mais en comporter d&#39;autres si on l&#39;ouvrait par sun Url dirrecte ou dans un nouvel onglet.</p>

<p>après avoir galéré pas mal de temps sur Google pour trouver une réponse, j&#39;ai enfin trouvé quelque chose d&#39;intéressant.</p>

<h2>Comment détecter si une page est ouverte suite à une requête Ajax ou pas?</h2>

<p>Pour le coup, ce qui est souvent le plus difficile, c&#39;est de trouver les bons mots clés à taper dans les moteurs de recherche. en effet, c&#39;était la première fois que j&#39;étais confronté à ce langage (Ajax) et j&#39;ai pas mal tatonné avant de trouver ce qui me servait.</p>

<p>La solution, je l&#39;ai trouvée sur un blog, et elle réside en ça:</p>

<p>Pour détecter si une requête est issue d&#39;un appel AJAX</p>

<div class="line number1 index0 alt2" style="font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace; color: rgb(122, 122, 122); margin: 0px !important; padding: 0px 1em !important; border: 0px !important; outline: 0px !important; vertical-align: baseline !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><code class="php keyword" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important;">if</code> <code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">(isset(</code><code class="php variable" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important;">$_SERVER</code><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">[</code><code class="php string" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: blue !important;">&#39;HTTP_X_REQUESTED_WITH&#39;</code><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">]) &amp;&amp; </code><code class="php functions" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: rgb(255, 20, 147) !important;">strtolower</code><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">(</code><code class="php variable" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important;">$_SERVER</code><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">[</code><code class="php string" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: blue !important;">&#39;HTTP_X_REQUESTED_WITH&#39;</code><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">]) == </code><code class="php string" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: blue !important;">&#39;xmlhttprequest&#39;</code><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">) {</code></div>

<div class="line number2 index1 alt1" style="font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace; color: rgb(122, 122, 122); margin: 0px !important; padding: 0px 1em !important; border: 0px !important; outline: 0px !important; vertical-align: baseline !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><code class="php comments" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: rgb(0, 130, 0) !important;">// Traitement pour une requête AJAX</code></div>

<div class="line number2 index1 alt1" style="font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace; color: rgb(122, 122, 122); margin: 0px !important; padding: 0px 1em !important; border: 0px !important; outline: 0px !important; vertical-align: baseline !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><span style="color:#0000FF;">$jesuisajax </span><span style="color:#000000;">=</span> <span style="color:#FF0000;">&#39;oui&#39;</span><span style="color:#000000;">;</span></div>

<div class="line number3 index2 alt2" style="font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace; color: rgb(122, 122, 122); margin: 0px !important; padding: 0px 1em !important; border: 0px !important; outline: 0px !important; vertical-align: baseline !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><code class="php plain" style="margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; font-size: 1em !important; vertical-align: baseline !important; background: none !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; display: inline !important; color: black !important;">}</code></div>

<div class="line number3 index2 alt2" style="font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace; color: rgb(122, 122, 122); margin: 0px !important; padding: 0px 1em !important; border: 0px !important; outline: 0px !important; vertical-align: baseline !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-radius: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"> </div>

<h2>Comment utiliser ce code de détection de requête AJAX?</h2>

<p>Et bien c&#39;est simple. Placé en tout début de votre fichier php (en tête de votre site), le if(....) détecte si la requête est le résultat d&#39;une requête Ajax. Si c&#39;est le cas, on crée une variable que j&#39;ai appelé <span style="color: rgb(0, 0, 255); font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace; white-space: pre;">$jesuisajax </span>et qui prend la valeur &quot;<span style="color:#FF0000;">oui</span>&quot;. Bien entendu, on aurait pu appeler la variable de n&#39;importe quelle façon, et lui donner la valeur <span style="color:#FF0000;">1</span> par exemple. </p>

<p>Pour la suite, il suffit de détecter cette variable aux endroits nécessaires avec, par exemple:</p>

<div><span style="color:#008000;">if </span>( <span style="color:#0000FF;">$jesuisajax</span> == <span style="color:#FF0000;">&#39;oui&#39; </span>) {</div>

<div><span style="color:#008000;">echo </span><span style="color:#FF0000;">&#39;Tout ce que je veux faire apparaitre suite à une requête AJAX&#39;</span>;</div>

<div>}<span style="color:#008000;">else</span>{</div>

<div><span style="color:#008000;">echo </span><span style="color:#FF0000;">&#39;Tout ce que je veux faire apparaitrequand il n&#39;y a PAS de requête AJAX&#39;</span>;</div>

<div>}</div>

<div> </div>


Sujet écrit par Limporia le samedi 28 mai 2022 à 08:38

[ Imprimer ] - [ Fermer la fenêtre ]