<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/24"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/24/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/24/atom/feed</id>
  <updated>2007-11-20T08:56:10+01:00</updated>
  <entry>
    <title>Bloc-note &#039;PHP&#039;</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/24" />
    <id>http://artisan.karma-lab.net/node/24</id>
    <published>2005-12-19T00:03:49+01:00</published>
    <updated>2007-11-20T08:56:10+01:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="PHP" />
    <category term="Aucun" />
    <category term="Note" />
    <category term="OK" />
    <summary type="html"><![CDATA[<p>Quelques astuces en vrac sur PHP.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Quelques astuces en vrac sur PHP.</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>Purge des sessions dépassées</h2>
	
<p>
Si vous cherchez où PHP sous linux gère cette fonctionnalité (session dépassées après 30 minutes), il fallait chercher dans CRON.. En /etc/crond.d/php. 
</p>

	<a name='chapter_2'></a>
  <h2>Authentification via LDAP</h2>
	
<p>
  Le code suivant permet d'effectuer une authentification sur une serveur LDAP via une page PHP.
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  &lt;?php<br />
&nbsp; // Adresse du serveur AD et base de la recherche<br />
&nbsp; $ldapServer = &quot;x.y.z.q&quot;<SEMI><br />
&nbsp; $ldapBase = &quot;DC=DOMAINE,DC=fr&quot;<SEMI><br />
<br />
&nbsp; // mail et mot de passe de l'utilisateur capable de se connecter sur AD et d'en lire le conten<br />
&nbsp; $ldapUsername= &quot;<script>document.write(String.fromCharCode(60,97,32,104,114,101,102,61,39,109,97,105,108,116,111,58,85,83,69,82,95,65,68,64,68,79,77,65,73,78,69,46,102,114,39,62,85,83,69,82,95,65,68,64,68,79,77,65,73,78,69,46,102,114,60,47,97,62));</script>&quot;<SEMI><br />
&nbsp; $ldapPassword= &quot;USER_AD_PASSWORD&quot;<SEMI><br />
<br />
&nbsp; // Coordonnees a identifier<br />
&nbsp; $userLogin=&quot;USER&quot;<SEMI><br />
&nbsp; $userPassword=&quot;LOGIN&quot;<SEMI><br />
<br />
&nbsp; // Connexion au serveur LDAP<br />
&nbsp; $ldap = ldap_connect($ldapServer)<SEMI><br />
&nbsp; ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3)<SEMI><br />
<br />
&nbsp; if ($ldap)<br />
&nbsp; {<br />
&nbsp; print &quot;Connection a AD/LDAP, OK&quot;<SEMI><br />
&nbsp; // Ouverture d'un connexion<br />
&nbsp; $bind = @ldap_bind($ldap, $ldapUsername, $ldapPassword)<SEMI><br />
&nbsp; if (!$bind)<br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;Erreur, impossible de binder l'utilisateur AD/LDAP&quot;<SEMI><br />
&nbsp; &nbsp; exit<SEMI><br />
&nbsp; }<br />
&nbsp; print &quot;Bind de l'utilisateur AD/LDAP, OK&quot;<SEMI><br />
<br />
&nbsp; // Recherche du login a identifier<br />
&nbsp; $result = @ldap_search($ldap, $ldapBase, &quot;sAMAccountName=&quot;.$userLogin)<SEMI><br />
&nbsp; if (ldap_count_entries($ldap, $result)==0)<br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;Erreur, aucun utilisateur de ce nom n'a ete trouve&quot;<SEMI><br />
&nbsp; &nbsp; exit<SEMI><br />
&nbsp; }<br />
<br />
&nbsp; if (ldap_count_entries($ldap, $result)&gt;1)<br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;Erreur, trop d'utilisateur de ce nom trouves&quot;<SEMI><br />
&nbsp; &nbsp; exit<SEMI><br />
&nbsp; }<br />
<br />
&nbsp; // Authentification si un user existe sur AD<br />
&nbsp; if (ldap_count_entries($ldap, $result) == 1)<br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;Utilisateur trouve&quot;<SEMI><br />
&nbsp; &nbsp; $info = ldap_get_entries($ldap, $result)<SEMI><br />
&nbsp; &nbsp; $userDn = $info[0][&quot;dn&quot;]<SEMI><br />
&nbsp; &nbsp; $auth = @ldap_bind($ldap, $userDn, $ldapPassword)<SEMI><br />
&nbsp; }<br />
<br />
&nbsp; if ($auth)<br />
&nbsp; &nbsp; print &quot;Utilisateur authentifie : '&quot; . $username . &quot;' (&quot; . $userDn . &quot;).&quot;<SEMI><br />
&nbsp; else<br />
&nbsp; &nbsp; print &quot;Impossible d'authentifier : '&quot; . $username . &quot;'.&quot;<SEMI><br />
&nbsp; }<br />
&nbsp; else<br />
&nbsp; print &quot;Impossible de se connecter AD/LDAP&quot;<SEMI><br />
<br />
&nbsp; @ldap_close($ldap)<SEMI><br />
?&gt;
  </div>
  
  </div>
</p>


	<a name='chapter_3'></a>
  <h2>Soucis de mémoire lors de l'exécution d'une fonction GD</h2>
	
<p>
  En réalité c'est normal, PHP limite l'utilisation de la mémoire à 8MO par scripte. GD typiquement est gourmand et l'erreur suivante se produit alors :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  Fatal error: Allowed memory size of 5242880 bytes exhausted (tried to allocate 22425 bytes) in ./sources/functions.php on line 2562
  </div>
  
  </div>
</p>

<h3>Methode n°1</h3>
<p>
  La solution est simplement d'augmenter l'espace alouer au scripte dans php.ini:
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  memory_limit = 30M &nbsp;<SEMI> Maximum amount of memory a script may consume (8MB)
  </div>
  
  </div>
</p>

<h3>Methode n°2</h3>
<p>
  Changer dynamiquement cette valeur:
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co1">//valeur initiale</span><br />
<a target="blank" href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;get_cfg_var(memory_limit) = &quot;</span><span class="sy0">.@</span><a target="blank" href="http://www.php.net/get_cfg_var"><span class="kw3">get_cfg_var</span></a><span class="br0">&#40;</span><span class="st0">'memory_limit'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <br />
<a target="blank" href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;ini_get(memory_limit) = &quot;</span><span class="sy0">.@</span><a target="blank" href="http://www.php.net/ini_get"><span class="kw3">ini_get</span></a><span class="br0">&#40;</span><span class="st0">'memory_limit'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <br />
<br />
<span class="co1">//modification</span><br />
<span class="sy0">@</span><a target="blank" href="http://www.php.net/ini_set"><span class="kw3">ini_set</span></a><span class="br0">&#40;</span><span class="st0">&quot;memory_limit&quot;</span><span class="sy0">,</span><span class="st0">'10M'</span><span class="br0">&#41;</span><span class="sy0">;</span> <br />
<span class="co1">// on tente d'allouer 10 M</span><br />
<br />
<span class="co1">//modification prise en compte ?</span><br />
<a target="blank" href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;get_cfg_var(memory_limit) = &quot;</span><span class="sy0">.@</span><a target="blank" href="http://www.php.net/get_cfg_var"><span class="kw3">get_cfg_var</span></a><span class="br0">&#40;</span><span class="st0">'memory_limit'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <br />
<a target="blank" href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;ini_get(memory_limit) = &quot;</span><span class="sy0">.@</span><a target="blank" href="http://www.php.net/ini_get"><span class="kw3">ini_get</span></a><span class="br0">&#40;</span><span class="st0">'memory_limit'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <br />
<span class="co1">// on verifie si l'allocation de 10 M a pu etre possible sur le serveur</span>
  </div>
  
  </div>
</p>


	<a name='chapter_4'></a>
  <h2>Suppression des accents</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="re0">$output</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/strtr"><span class="kw3">strtr</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/utf8_decode"><span class="kw3">utf8_decode</span></a><span class="br0">&#40;</span><span class="re0">$output</span><span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>A1<span class="es0">\x</span>AA<span class="es0">\x</span>BA<span class="es0">\x</span>BF&quot;</span><span class="sy0">.</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>C0<span class="es0">\x</span>C1<span class="es0">\x</span>C2<span class="es0">\x</span>C3<span class="es0">\x</span>C5<span class="es0">\x</span>C7<span class="es0">\x</span>C8<span class="es0">\x</span>C9<span class="es0">\x</span>CA<span class="es0">\x</span>CB<span class="es0">\x</span>CC<span class="es0">\x</span>CD<span class="es0">\x</span>CE<span class="es0">\x</span>CF&quot;</span><span class="sy0">.</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>D0<span class="es0">\x</span>D1<span class="es0">\x</span>D2<span class="es0">\x</span>D3<span class="es0">\x</span>D4<span class="es0">\x</span>D5<span class="es0">\x</span>D8<span class="es0">\x</span>D9<span class="es0">\x</span>DA<span class="es0">\x</span>DB<span class="es0">\x</span>DD&quot;</span><span class="sy0">.</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>E0<span class="es0">\x</span>E1<span class="es0">\x</span>E2<span class="es0">\x</span>E3<span class="es0">\x</span>E5<span class="es0">\x</span>E7<span class="es0">\x</span>E8<span class="es0">\x</span>E9<span class="es0">\x</span>EA<span class="es0">\x</span>EB<span class="es0">\x</span>EC<span class="es0">\x</span>ED<span class="es0">\x</span>EE<span class="es0">\x</span>EF&quot;</span><span class="sy0">.</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>F0<span class="es0">\x</span>F1<span class="es0">\x</span>F2<span class="es0">\x</span>F3<span class="es0">\x</span>F4<span class="es0">\x</span>F5<span class="es0">\x</span>F8<span class="es0">\x</span>F9<span class="es0">\x</span>FA<span class="es0">\x</span>FB<span class="es0">\x</span>FD<span class="es0">\x</span>FF&quot;</span><span class="sy0">,</span><br />
&nbsp; <span class="st0">&quot;!ao?AAAAACEEEEIIIIDNOOOOOUUUYaaaaaceeeeiiiidnooooouuuyy&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$output</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/utf8_encode"><span class="kw3">utf8_encode</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/strtr"><span class="kw3">strtr</span></a><span class="br0">&#40;</span><span class="re0">$output</span><span class="sy0">,</span> <a target="blank" href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\x</span>C4&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;Ae&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>C6&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;AE&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>D6&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;Oe&quot;</span><span class="sy0">,</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>DC&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;Ue&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>DE&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;TH&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>DF&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;ss&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>E4&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;ae&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>E6&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;ae&quot;</span><span class="sy0">,</span><br />
&nbsp; <span class="st0">&quot;<span class="es0">\x</span>F6&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;oe&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>FC&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;ue&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\x</span>FE&quot;</span><span class="sy0">=&gt;</span><span class="st0">&quot;th&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  </div>
  
  </div>


	<a name='chapter_5'></a>
  <h2>Référence au fichier courrant</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://www.php.net/dirname"><span class="kw3">dirname</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/__FILE__"><span class="kw2">__FILE__</span></a><span class="br0">&#41;</span>
  </div>
  
  </div>
</code>    ]]></content>
  </entry>
</feed>
