<?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>SearchNFind</title>
	<atom:link href="http://www.searchnfind.fr/feed" rel="self" type="application/rss+xml" />
	<link>http://www.searchnfind.fr</link>
	<description>Developpement Web</description>
	<lastBuildDate>Tue, 14 Feb 2012 09:29:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Login ajax et Remember login password ?</title>
		<link>http://www.searchnfind.fr/non-classe/40-login-ajax-et-remember-login-password.html</link>
		<comments>http://www.searchnfind.fr/non-classe/40-login-ajax-et-remember-login-password.html#comments</comments>
		<pubDate>Mon, 09 Jan 2012 13:31:15 +0000</pubDate>
		<dc:creator>knx</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[remember]]></category>
		<category><![CDATA[target]]></category>

		<guid isPermaLink="false">http://www.searchnfind.fr/?p=40</guid>
		<description><![CDATA[Chrome vous propose d&#8217;enregistre votre login / mot de passe quand vous submitez un form de connexion. Typiquement il se base sur le fait qu&#8217;il y a un input text, suivi d&#8217;un input password. Le problème est que si on souhaite logger un user sans rechargement de page, on passe par une requete ajax, et [...]]]></description>
			<content:encoded><![CDATA[<p>Chrome vous propose d&#8217;enregistre votre login / mot de passe quand vous submitez un form de connexion.</p>
<p>Typiquement il se base sur le fait qu&#8217;il y a un input text, suivi d&#8217;un input password.</p>
<p>Le problème est que si on souhaite logger un user sans rechargement de page, on passe par une requete ajax, et Chrome ne le detecte pas et donc n&#8217;enregistre pas les login / password du user.</p>
<p>&nbsp;</p>
<p>Pour parer à ce problème, il faut absolument que le form soit submit ! En submitant le form, on recharge la page, ce que l&#8217;on ne veut pas. Il faut donc trouver un moyen pour submit sans recharger !</p>
<p>C&#8217;est possible ! L&#8217;attribut target dans la balise form et une iframe vont nous aider à faire ce petit trick.</p>
<p>On place une iframe en display:none avec un id=&nbsp;&raquo;mon_iframe&nbsp;&raquo;, et dans la balise form, target=&nbsp;&raquo;mon_iframe&nbsp;&raquo;</p>
<p>Dans le form on a normalement notre onsubmit=&nbsp;&raquo;ajaxLogin();return false;&nbsp;&raquo; =&gt; return false permettant de ne pas submit, on l&#8217;enleve car on veut submit !</p>
<p>Puis dans l&#8217;action du form, on renvois sur un page qui ne fait rien : action=&nbsp;&raquo;nothing.php&nbsp;&raquo;.</p>
<p>&nbsp;</p>
<p>Avec tout ça mis en place, le formulaire va envoyer les données à l&#8217;adresse nothing.php et le resultat va s&#8217;afficher dans l&#8217;iframe, et la window ne va pas se recharger !</p>
<p>En parallele, le onsubmit est bien triggered, et notre call vers le login est bien lancé !</p>
<p>Finalement, Chrome (ou autre navigateur) voit l&#8217;action du submit de formulaire et propose donc bien d&#8217;enregistrer les login / password de l&#8217;user !!</p>
<p>&nbsp;</p>
<pre>&lt;?php
if(isset($_POST['submit'])){
echo "true";
exit;
}
?&gt;&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
function ajaxSubmit(){
//ajax call

}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div style="display:block;"&gt;
&lt;form action="ajaxform.php" method="POST" onsubmit="ajaxSubmit();return true;" target="targetform"&gt;
&lt;input type="text" name="blu" value=""/&gt;&lt;br/&gt;
&lt;input type="password" name="blublu" value=""/&gt;&lt;br/&gt;
&lt;input type="submit" name="submit" value="submit"/&gt;
&lt;/form&gt;
&lt;iframe src="ajaxform.php" id="targetform" style="display:none;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.searchnfind.fr/non-classe/40-login-ajax-et-remember-login-password.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Récuperer un fichier effacé sur Aptana / Eclipse</title>
		<link>http://www.searchnfind.fr/non-classe/31-recuperer-un-fichier-efface-sur-aptana-eclipse.html</link>
		<comments>http://www.searchnfind.fr/non-classe/31-recuperer-un-fichier-efface-sur-aptana-eclipse.html#comments</comments>
		<pubDate>Fri, 09 Sep 2011 10:56:59 +0000</pubDate>
		<dc:creator>knx</dc:creator>
				<category><![CDATA[ide]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[fichier]]></category>

		<guid isPermaLink="false">http://www.searchnfind.fr/?p=31</guid>
		<description><![CDATA[Je viens de faire un svn delete sur un fichier que j&#8217;avais pas commit ! J&#8217;ai pas commit le delete&#8230; Ouf.. Eh bah pas ouf en fait, parce que svn delete s&#8217;occupe aussi de delete le fichier en local !! Mais pkoi ???? Et cherchez pas dans la corbeille, il y est pas !! Et [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens de faire un <strong>svn delete sur un fichier que j&#8217;avais pas commit</strong> !<br />
J&#8217;ai pas commit le delete&#8230; Ouf.. Eh bah pas ouf en fait, parce que svn delete s&#8217;occupe aussi de delete le fichier en local !! Mais pkoi ????<br />
Et cherchez pas dans la corbeille, il y est pas !!</p>
<p>Et bien j&#8217;ai trouvé <strong>la solution</strong> ! Par hasard, et ca fait bien plaisir !!</p>
<p>Si votre fichier était ouvert dans Aptana, pas de soucis, il est toujours ouvert, et aptana vous demandera si il faut refresh car il a disparu. DITES NON bien sur&#8230;</p>
<p>Si par contre, il n&#8217;etait pas ouvert, il devrait toujours etre dans l&#8217;arbo d&#8217;aptana, et là il suffit de recreer le fichier vide (meme nom) dans le systeme de fichier de l&#8217;os, puis retourner sur Aptana, l&#8217;ouvrir, vous avez un fichier vide.<br />
Là vous faites clic droit, <strong><em>&laquo;&nbsp;compare with&nbsp;&raquo; => &laquo;&nbsp;local history&nbsp;&raquo;</em></p>
<p></strong></p>
<p> tinlin !!!!</p>
<p>A chaque enregistrement, Aptana / Eclipse enregistre une revision de fichier, c&#8217;est magique, ca &#8216;peut&#8217; bouffer bcp d&#8217;espace, mais c&#8217;est quand meme super SAFE !!</p>
<p>ENFIN, si dans Aptana il n&#8217;existe plus ce ptit fichier, il reste toujours des revisions dans le workspace (normalement, ca j ai pas testé&#8230; mais ca devrait etre bon)<br />
Une simple recherche sur du texte que vous avez ecrit, et vous retrouvez les revisions !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.searchnfind.fr/non-classe/31-recuperer-un-fichier-efface-sur-aptana-eclipse.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bloquer tout le monde sauf un user &#8211; agent particulier</title>
		<link>http://www.searchnfind.fr/htaccess/15-site-en-developpement-et-facebook.html</link>
		<comments>http://www.searchnfind.fr/htaccess/15-site-en-developpement-et-facebook.html#comments</comments>
		<pubDate>Thu, 20 Jan 2011 21:33:44 +0000</pubDate>
		<dc:creator>knx</dc:creator>
				<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://www.searchnfind.fr/?p=15</guid>
		<description><![CDATA[Si comme moi, vous tentez d&#8217;intégrer un plugin facebook like alors que votre site est en développement et que par conséquent vous décidez de bloquer l&#8217;accès par un htaccess / htpasswd à tout le monde sauf les valid user, Vous êtes alors confronté au même problème. Comment faire pour tester l&#8217;affichage du like sur votre profil [...]]]></description>
			<content:encoded><![CDATA[<p>Si comme moi, vous tentez d&#8217;intégrer un <strong>plugin facebook like</strong> alors que votre <strong>site est en développement</strong> et que par conséquent vous décidez de <strong>bloquer l&#8217;accès par un htaccess / htpasswd </strong>à tout le monde sauf les valid user,<br />
Vous êtes alors confronté au même problème.</p>
<p>Comment faire pour tester l&#8217;affichage du like sur votre profil sans temporairement enlever la limite d&#8217;accès ?</p>
<p>En cherchant un peu dans les doc <strong>apache / htaccess</strong>, j&#8217;ai découvert qu&#8217;il était possible de bloquer certain utilisateur mais d&#8217;autoriser des machine sur des <strong>ip spécifiées.</strong></p>
<p>Seulement, en regardant mes logs apache, le scrapper de <strong>Facebook </strong>n&#8217;utilise pas tout le temps la même IP mais elle commence apparemment toujours par :<br />
69.63.180.*</p>
<p>Il est possible d&#8217;autoriser une classe d&#8217;ip comme ceci :<br />
69.63.180.0/255<br />
Pour mon test avec Facebook ca ne marchait pas, j&#8217;ai donc décider de trouver un moyen d&#8217;autoriser seulement facebook en matchant le user agent de son scrapper.</p>
<p>C&#8217;est donc FAISABLE !</p>
<p><strong>Le user-agent du scrapper de facebook est :</strong></p>
<p>&laquo;&nbsp;<span style="color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 18px;">facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)</span>&nbsp;&raquo;</p>
<p>(<a href="http://developers.facebook.com/docs/reference/plugins/like">http://developers.facebook.com/docs/reference/plugins/like</a>)</p>
<p>Pour ce faire, il faut dans le fichier<strong> htaccess, définir une variable &laquo;&nbsp;d&#8217;environnement&nbsp;&raquo;</strong> qui correspondra aux user agent qui matcheront avec l&#8217;expression régulière donnée :</p>
<p><strong>SetEnvIfNoCase User-Agent &laquo;&nbsp;.*(facebookexternalhit).*&nbsp;&raquo; AllowedAgent</strong></p>
<p>Nous pourrions utiliser SetEnvIf (le &#8216;NoCase&#8217; correspond à case insensitive)</p>
<p>Et il suffit ensuite d&#8217;ajouter la ligne :</p>
<p><strong>allow from env=AllowedAgent</strong></p>
<p>Dans mon cas, j&#8217;ai décidé de bloquer tout le monde SAUF soit un utilisateur enregistré, SOIT facebook.</p>
<p>Il faut alors coupler deux types de sécurités:</p>
<p>1/ Bloquer tout le monde : Deny from all</p>
<p>2/ Autoriser les utilisateurs enregistrés (contenus dans le fichier htpasswd) :</p>
<div id="_mcePaste">AuthUserFile /path/to/.htpasswd</div>
<div id="_mcePaste">AuthName &laquo;&nbsp;Veuillez vous identifier&nbsp;&raquo;</div>
<div id="_mcePaste">AuthType Basic<br />
require user user1 user2 user3</div>
<p>3/ Autoriser le user agent spécifié :</p>
<p>allow from env=AllowedAgent</p>
<p>4/ Informer à Apache qu&#8217;il suffit que l&#8217;une des deux conditions soit vérifié pour donner un accès (soit un user, soit le userAgent) :</p>
<p>Satisfy any</p>
<p><span style="text-decoration: underline;">Finalement, le fichier htaccess ressemblera à ça :</span></p>
<pre>SetEnvIfNoCase User-Agent ".*(facebookexternalhit).*" AllowedAgent
AuthUserFile /path/to/.htpasswd
AuthName "Veuillez vous identifier"
AuthType Basic
Satisfy any
Order Deny,Allow
Deny from all
allow from env=AllowedAgent
require user user1 user2 user3</pre>
<p><strong>Mes sources : (à lire ! C&#8217;est interressant !!)</strong></p>
<p>Les bases du htaccess : <a href="http://lebrument.free.fr/wordpress/wordpressfr/?p=50">http://lebrument.free.fr/wordpress/wordpressfr/?p=50</a></p>
<p>Plus complet mais en anglais : <a href="http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/#security">http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/#security</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.searchnfind.fr/htaccess/15-site-en-developpement-et-facebook.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

