<?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>Luca e Andrea &#187; guida</title>
	<atom:link href="http://www.lucaeandrea.com/tag/guida/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lucaeandrea.com</link>
	<description>Il blog di Luca e Andrea</description>
	<lastBuildDate>Thu, 25 Nov 2010 15:44:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Recuperare la password con ajax</title>
		<link>http://www.lucaeandrea.com/recuperare-la-password-con-ajax/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=recuperare-la-password-con-ajax</link>
		<comments>http://www.lucaeandrea.com/recuperare-la-password-con-ajax/#comments</comments>
		<pubDate>Wed, 05 May 2010 22:00:07 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[js]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[guida]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[passowrd]]></category>

		<guid isPermaLink="false">http://www.lucaeandrea.com/?p=105</guid>
		<description><![CDATA[Oggi vi spiego come poter creare una piccola richiesta di password smarrita utilizzando Jquery e una chiamata ajax. ipotizziamo di avere una tabella degli utenti così strutturata che memorizza le password in chiaro (solo a scopo didattico e per questo articolo). Ora Creaiamo la nostra pagina base come mostrato qui sotto Ora inziamo ad inserire [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.lucaeandrea.com%252Frecuperare-la-password-con-ajax%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fawm38G%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Recuperare%20la%20password%20con%20ajax%22%20%7D);"></div>
<p>Oggi vi spiego come poter creare una piccola richiesta di password smarrita utilizzando <a href="http://www.lucaeandrea.com/tag/jquery/" class="st_tag internal_tag" rel="tag" title="Post taggati con jquery">Jquery</a> e una chiamata <a href="http://www.lucaeandrea.com/tag/ajax/" class="st_tag internal_tag" rel="tag" title="Post taggati con ajax">ajax</a>.</p>
<p>ipotizziamo di avere una tabella degli utenti così strutturata che memorizza le password in chiaro (solo a scopo didattico e per questo articolo).</p>
<pre class="brush: sql; title: ; notranslate">
CREATE TABLE user(
    id bigint AUTO_INCREMENT,
    username varchar(50) NOT NULL,
    password varchar(30) NOT NULL,
    nome varchar(80) NOT NULL,
    cognome varchar(80) NOT NULL,
    ins_date datetime,
    upd_date datetime,
    lastlogin datetime,
    status tinyint(1) DEFAULT 1
    PRIMARY KEY (`id`),
    KEY `username` (`username`,`password`)
) ENGINE=MyISAM
</pre>
<p><span id="more-105"></span>Ora Creaiamo la nostra pagina base come mostrato qui sotto</p>
<pre class="brush: xml; title: ; notranslate">&lt;/p&gt;
&lt;pre&gt;&lt;!DOCTYPE  HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;  &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html;  charset=iso-8859-1&quot;&gt;
    &lt;script  type=&quot;text/javascript&quot;&gt;
        // qui scriveremo la nostra funzione per il recupero
    &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Ora inziamo ad inserire Jquery nell&#8217;head della pagina</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
</pre>
<p>Fatto questo possiamo iniziare a creare la base della form per il recupero della password fornendo l&#8217;indirizzo email dell&#8217;utente registrato.</p>
<pre class="brush: xml; title: ; notranslate">&lt;/p&gt;
&lt;p&gt;Se hai perso la password digita nella casella di testo la tua email e clicca su &quot;RECUPERA PASSWORD&quot;, ti verr&amp;agrave; inviata la password.&lt;/p&gt;
&lt;form action=&quot;/recupero_password.php&quot; method=&quot;post&quot; id=&quot;form&quot;&gt;
    email &lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; /&gt;&lt;br /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;lang&quot; id=&quot;lang&quot; value=&quot;1&quot; /&gt;&lt;br /&gt;
    &lt;input type=&quot;button&quot; value=&quot;Recupera Password&quot; onclick=&quot;recupera()&quot; /&gt;&lt;br /&gt;
    &lt;span class=&quot;colore_rosso&quot; id=&quot;errore&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/form&gt;
&lt;p&gt;</pre>
<p>L&#8217;html, come possiamo vedere è molto semplice abbiamo un <strong>input text</strong> dove inseriremo la nostra email, il <strong>button</strong> che  richiamerà la funzione <em>recupera()</em> per fare la chiamata ajax, infine c&#8217;è uno span per mostrare gli errori. All&#8217;interno dell&#8217;head del nostro documento dove ho messo il commento //qui andremo ad inserire la nostra funzione scriviamo la funzione riportata qui sotto.</p>
<p>La funzione è molto banale ma molto efficace perché è il cuore della  chiamata ajax all&#8217;inizio fa un primo controllo sulla presenza di  qualche valore nell&#8217;input dove inseriamo l&#8217;email e poi possa in POST  l&#8217;email alla nostra pagina PHP recupera_password.php, l&#8217;ultimo parametro  passato a <strong>$.post()</strong> è il dataType che nel nostro caso JSON in  modo da poter utilizzare un array come risposta e non una solo valore.</p>
<pre class="brush: jscript; title: ; notranslate">
function recupera(){
    var email = $('#email').val();
    if(email != ''){
        $('#errore').html('');
        $.post(
        '/recupera_password.php',
        'email='+email,
        function(m){
            $('#errore').html(m.messaggio);
            $('#email').val('');
        },
        'json'
        );
     } else
        $('#errore').html(&quot;&lt;strong&gt;Non &amp;egrave; stata inserita l'email&lt;/strong&gt;&quot;);
}
</pre>
<pre class="brush: php; title: ; notranslate">
&lt;?php // file recupera_password.php
session_start();
require_once('inc/DATABASE.php');
require_once(&quot;inc/phpmailer/class.phpmailer.php&quot;);
require_once(&quot;inc/phpmailer/phpmailer.lang-it.php&quot;);
$db = new DATABASE();
$mail = new PHPmailer();

$errore = false;
if(trim($_POST[&quot;email&quot;]) == &quot;&quot;){
    $errore = true;
    $str_errore .= &quot;Non &amp;egrave; stata inserita l'email&quot;;
}

if(!$errore){
    $sql = &quot;SELECT id, username, password, CONCAT(nome, ' ', cognome) AS nome, email
            FROM user
            WHERE status = 1
            AND email = '&quot;. $_POST[&quot;email&quot;] . &quot;'&quot;;
    $data = $db-&gt;getOneItem($sql);
    if(is_array($data)){
        $mail-&gt;SetFrom(&quot;email@email.it&quot;,&quot;Mittente&quot;);
        $nome = $data[&quot;nome&quot;] . &quot; &quot; . $data[&quot;cognome&quot;];
        $mail-&gt;AddAddress($data[&quot;email&quot;], $nome );
        $mail-&gt;Subject = &quot;Recupero password&quot;;
        $messaggio = str_replace(
            array(&quot;[NOME]&quot;,&quot;[USERNAME]&quot;,&quot;[PASSWORD]&quot;),
            array($data[&quot;nome&quot;],$data[&quot;username&quot;],$data[&quot;password&quot;]),
            $L_testo_mail_rec
        );

        $mail-&gt;msgHtml($messaggio);
        $mail-&gt;AltBody = strip_tags($messaggio);
        $mail-&gt;Sender = &quot;email@email.it&quot;;
        $mail-&gt;WordWrap = 78;
        if(!$mail-&gt;Send()) {
            $str_errore = &quot;Non &amp;egrave; stato possibile recuperare la password ed inviare una mail, riporivare pi&amp;ugrave; tardi&quot;;
        } else{
            $str_errore = &quot;Password recuperata correttamente. A breve riceverai un email&quot;;
        }
    } else     //non eisite l'username
        $str_errore = &quot;Utente inesistente&quot;;
}

print json_encode(
    array(
        &quot;errore&quot;    =&gt; $errore,
        &quot;messaggio&quot;    =&gt; $str_errore
     )
);
?&gt;
</pre>
<p>Il file php include un file con la configurazione del db e una classe per poter fare le query al database e la classe phpMailer per inviare la mail con la password alla persona che ne ha fatto richiesta.</p>
<p>Il php, che riceve in post l&#8217;email controlla l&#8217;esistenza del campo altrimenti restituisce un errore e successivamente fa una query sulla tabella user per cercare le credenziali dell&#8217;utente associato a quell&#8217;email, una volta trovato il record invia una mail.</p>
<p>Alcune considerazioni sul mio articolo</p>
<ul>
<li>Sicuramente non è la miglior cosa utilizzare le <a href="http://www.lucaeandrea.com/tag/passowrd/" class="st_tag internal_tag" rel="tag" title="Post taggati con passowrd">passowrd</a> in chiaro perché se siamo vittima di un attacco hacker avremmo perso tutti gli accessi al sito web.</li>
<li>La password andrebbe resettata, una volta che viene trovato il record nel DB, creandone una casuale di n caratteri ricordando all&#8217;utente di cambiarla il prima possibile perché è stta generata automaticamente dal sistema.</li>
<li>Andrebbe aggiornata la data di modifica del record relativo all&#8217;utente e incrementato il numero di richieste di password e il nostro sito web prevede un massimo di tentativi di accesso al sistema allora dovremmo azzerare quel contatore</li>
</ul>
<p>Per oggi è tutto vi aspetto alla prossima</p>

]]></content:encoded>
			<wfw:commentRss>http://www.lucaeandrea.com/recuperare-la-password-con-ajax/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Seach Engine Optimization</title>
		<link>http://www.lucaeandrea.com/google-seach-engine-optimization/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-seach-engine-optimization</link>
		<comments>http://www.lucaeandrea.com/google-seach-engine-optimization/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 07:48:15 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[guida]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.lucaeandrea.com/?p=41</guid>
		<description><![CDATA[Sicuramente la guida in italiano per il SEO può essere utile a molti che cercano di posizionare il proprio sito il più in alto possibile nelle ricerche di Google. Questa mattina l&#8217;ho ritrovata sul blog di google Italia ed ho deciso di metterla anche qui così i nostri lettori potranno avere sempre a portata di [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.lucaeandrea.com%252Fgoogle-seach-engine-optimization%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Google%20Seach%20Engine%20Optimization%22%20%7D);"></div>
<p>Sicuramente la <a href="http://www.lucaeandrea.com/tag/guida/" class="st_tag internal_tag" rel="tag" title="Post taggati con guida">guida</a> in italiano per il <a href="http://www.lucaeandrea.com/tag/seo/" class="st_tag internal_tag" rel="tag" title="Post taggati con SEO">SEO</a> può essere utile a molti che cercano di posizionare il proprio sito il più in alto possibile nelle ricerche di <a href="http://www.lucaeandrea.com/tag/google/" class="st_tag internal_tag" rel="tag" title="Post taggati con google">Google</a>.</p>
<p>Questa mattina l&#8217;ho ritrovata sul blog di google Italia ed ho deciso di metterla anche qui così i nostri lettori potranno avere sempre a portata di mano questa utile ed importante guida.</p>
<p>la potete trovare qui: http://googleitalia.blogspot.com/2009/04/guida-introduttiva-di-google.html oppure nelal versuione inglese la trovate qui: http://googlewebmastercentral.blogspot.com/2008/11/googles-seo-starter-guide.html</p>

]]></content:encoded>
			<wfw:commentRss>http://www.lucaeandrea.com/google-seach-engine-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

