  <?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; paologironi blog</title>
	<atom:link href="https://www.gironi.it/blog/tag/php-it/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.gironi.it/blog</link>
	<description>Appunti sparsi di (retro) informatica, analisi dei dati, statistica, seo, e cose che cambiano</description>
	<lastBuildDate>Fri, 20 Sep 2024 13:11:48 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Spedire email da Xampp</title>
		<link>https://www.gironi.it/blog/spedire-email-da-xampp/</link>
					<comments>https://www.gironi.it/blog/spedire-email-da-xampp/#comments</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 05 Jan 2012 22:21:53 +0000</pubDate>
				<category><![CDATA[sviluppo web]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[Xampp]]></category>
		<guid isPermaLink="false">http://gironi.it/blog/sviluppo-web/spedire-email-da-xampp/</guid>

					<description><![CDATA[Quante volte ci è capitato di sviluppare in locale, usando Xampp e di non riuscire a testare i vari contact form? La soluzione è molto semplice. Si edita il file php.ini (nella mia installazione di Xampp è in xampp/php, ma in altre installazioni potrebbe essere in un&#8217;altra directory) e si cerca la riga contenente &#8220;SMTP&#8221;. &#8230; <a href="https://www.gironi.it/blog/spedire-email-da-xampp/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Spedire email da Xampp"</span></a>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft size-full wp-image-311" alt="handy-icon_11" src="http://gironi.it/blog/wp-content/uploads/2012/01/handy-icon_11.png" width="127" height="129" />Quante volte ci è capitato di sviluppare in locale, usando Xampp e di non riuscire a testare i vari contact form?</p>
<p>La soluzione è molto semplice. Si edita il file php.ini (nella mia installazione di Xampp è in xampp/php, ma in altre installazioni potrebbe essere in un&#8217;altra directory) e si cerca la riga contenente &#8220;SMTP&#8221;. Dovreste trovare qualcosa tipo:</p>
<p><code>SMTP = localhost<br />
smtp_port = 25</code></p>
<p><span id="more-177"></span></p>
<p>cambiate localhost con il server SMTP del vostro provider e riavviate Xampp</p>
<p>Ora fate una prova semplicissima. Preparate un file che potreste chiamare mailer.php:</p>
<pre>$headers = 'MIME-Version: 1.0′ . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1′ . "\r\n";
$headers .= 'From: vostronome@vostrodominio.com' . "\r\n";
mail("tu@tuodominio.com","test soggetto","test body",$headers);</pre>
<p>ovviamente sostituite gli indirizzi email con quelli reali e caricate la pagina. La mail dovrebbe essere stata spedita!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/spedire-email-da-xampp/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>un po&#8217; di redirect 301</title>
		<link>https://www.gironi.it/blog/un-po-di-redirect-301/</link>
					<comments>https://www.gironi.it/blog/un-po-di-redirect-301/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Mon, 05 Sep 2011 09:16:24 +0000</pubDate>
				<category><![CDATA[sviluppo web]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[cold fusion]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[redirect 301]]></category>
		<guid isPermaLink="false">http://gironi.it/blog/2011/09/un-po-di-redirect-301/</guid>

					<description><![CDATA[questo più che un post è un memo. Invece di cercare tra i fogli il cheatsheet con i redirect 301 (e magari non trovarlo), oppure per risparmiarmi i 5 secondi della ricerca google, aggiungo questo post. Allora: con php &#60;? Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location: http://www.gironi.it/" ); ?&#62; con cold fusion &#60;cfheader &#8230; <a href="https://www.gironi.it/blog/un-po-di-redirect-301/" class="more-link">Leggi tutto<span class="screen-reader-text"> "un po&#8217; di redirect 301"</span></a>]]></description>
										<content:encoded><![CDATA[<p>questo più che un post è un memo. Invece di cercare tra i fogli il cheatsheet con i redirect 301 (e magari non trovarlo), oppure per risparmiarmi i 5 secondi della ricerca google, aggiungo questo post. Allora:</p>
<h2>con <strong>php</strong></h2>
<pre class="brush: xml; ruler: true;">&lt;?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.gironi.it/" );
?&gt;</pre>
<p><span id="more-134"></span></p>
<h2>con <strong>cold fusion</strong></h2>
<p><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 16px; background-color: #ffffff;"> </span></p>
<pre class="brush: xml; ruler: true;">&lt;cfheader statuscode="301" statustext="Moved Permanently"&gt;
&lt;cfheader name="Location" value="http://www.gironi.it"&gt;
&lt;cfabort&gt;</pre>
<h2>con <strong>asp</strong></h2>
<pre class="brush: xml; ruler: true;">&lt;%@ Language=VBScript %&gt;
&lt;%
response.status="301 moved permanently"
Response.AddHeader "Location", "http://www.gironi.it"
%&gt;</pre>
<h2><strong>Meta http-equiv</strong></h2>
<pre class="brush: xml; ruler: true;">&lt;meta http-equiv="refresh" content="0;url=http://www.gironi.it" /&gt;</pre>
<h2>In <strong>Perl</strong></h2>
<pre class="brush: xml; ruler: true;">#!/usr/bin/perl      -w
use strict;
print "Status: 301 Moved Permanently\n";
print "Location: http://mia/pagina.htm\n\n";
exit;</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/un-po-di-redirect-301/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Attivare cURL in XAMPP</title>
		<link>https://www.gironi.it/blog/attivare-curl-in-xampp/</link>
					<comments>https://www.gironi.it/blog/attivare-curl-in-xampp/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 01 Sep 2011 08:35:10 +0000</pubDate>
				<category><![CDATA[sviluppo web]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Xampp]]></category>
		<guid isPermaLink="false">http://gironi.it/blog/?p=127</guid>

					<description><![CDATA[In Xampp non è attivato di default il supporto per cURL. cURL è un tool utilissimo da riga di comando per trasferire file con la sintassi URL. cURL ha una libreria per php, la cui presenza è richiesta, ad esempio, da molti ottimi plugin per wordpress. Attivare cURL in Xampp è questione di pochi istanti. &#8230; <a href="https://www.gironi.it/blog/attivare-curl-in-xampp/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Attivare cURL in XAMPP"</span></a>]]></description>
										<content:encoded><![CDATA[<p>In Xampp non è attivato di default il supporto per cURL. cURL è un tool utilissimo da riga di comando per trasferire file con la sintassi URL. cURL ha una libreria per php, la cui presenza è richiesta, ad esempio, da molti ottimi plugin per wordpress.</p>
<p><strong>Attivare cURL in Xampp è questione di pochi istanti</strong>. Ecco la procedura da seguire:</p>
<ol>
<li>Ci si porta nella directory <em><strong>xampp</strong></em> sul proprio pc</li>
<li>Si va nella cartella <strong><em>php</em></strong></li>
<li>Si edita il file <strong>php.ini</strong> con un editor di testo</li>
<li>Si cerca la riga <strong>extension=php_curl.dll </strong>e si cancella il punto e virgola<strong> ;</strong> davanti alla riga stessa<strong></strong></li>
<li>Si riavvia il server Apache</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/attivare-curl-in-xampp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pagine con piu&#8217; scopi in php</title>
		<link>https://www.gironi.it/blog/pagine-con-piu-scopi-in-php/</link>
					<comments>https://www.gironi.it/blog/pagine-con-piu-scopi-in-php/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Wed, 02 Mar 2011 21:37:10 +0000</pubDate>
				<category><![CDATA[sviluppo web]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sviluppo]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">http://gironi.it/blog/?p=55</guid>

					<description><![CDATA[Pagine con piu&#8217; scopi, ovvero pagine che possono decidere cosa mostrare in base a una o piu&#8217; condizioni. La lettura del bel libro di Kevin Yank e&#8217; stata illuminante&#8230; Vediamo un esempio: &#60;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&#62; &#60;html xmlns="http://www.w3.org/1999/xhtml"&#62; &#60;head&#62; &#60;title&#62;Sample Page&#60;/title&#62; &#60;meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /&#62; &#60;/head&#62; &#60;body&#62; &#60;?php if (!isset($_GET['name'])): &#8230; <a href="https://www.gironi.it/blog/pagine-con-piu-scopi-in-php/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Pagine con piu&#8217; scopi in php"</span></a>]]></description>
										<content:encoded><![CDATA[<p>Pagine con piu&#8217; scopi, ovvero pagine che possono decidere cosa mostrare in base a una o piu&#8217; condizioni. La lettura del <a href="http://education.mondadori.it/Libri/SchedaLibro.asp?IdLibro=88-04-53965-8" target="_blank" rel="noopener">bel libro di Kevin Yank</a> e&#8217; stata illuminante&#8230;</p>
<p>Vediamo un esempio:</p>
<pre class="brush: xml; ruler: true;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;title&gt;Sample Page&lt;/title&gt;
&lt;meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;?php if (!isset($_GET['name'])): ?&gt;

  &lt;!-- Nessun nome assegnato, per cui viene richiesto all'utente --&gt;

  &lt;form action="&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;" method="get"&gt;
  &lt;label&gt;Please enter your name: &lt;input type="text" name="name" /&gt;&lt;/label&gt;
  &lt;input type="submit" value="GO" /&gt;
  &lt;/form&gt;

&lt;?php else: ?&gt;

  &lt;p&gt;Your name: &lt;?php echo $_GET['name']; ?&gt;&lt;/p&gt;

  &lt;p&gt;This paragraph contains a &lt;a href="newpage.php?name=&lt;?php echo urlencode($_GET['name']); ?&gt;"&gt;link&lt;/a&gt; that passes the name variable on to the next document.&lt;/p&gt;

&lt;?php endif; ?&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p><span id="more-55"></span></p>
<p>Qualche picola nota:</p>
<p>E&#8217; da da notare, l&#8217;uso della funzione <strong>isset</strong>.<br />
Questa funzione ritorna un valore &#8220;vero&#8221; se alla variabile e&#8217; assegnato un valore e &#8220;falso&#8221; se la variabile non esiste.</p>
<p>Interessante anche l&#8217;uso della variabile $_SERVER[&#8216;PHP_SELF&#8217;], utilizzata per specificare l&#8217;attributo <em>action</em> del form.</p>
<p>$_SERVER[&#8216;PHP_SELF&#8217;] e&#8217; sempre configurata sull&#8217;URL della pagina corrente, quindi il form, una volta inviato, carichera&#8217; sempre la stessa pagina, ma con la variabile settata.</p>
<hr />
<p>&nbsp;</p>
<p>Immaginiamo ora di avere un sito gestito attraverso database. Il problema e&#8217; quello di creare due differenti versioni di ciascuna pagina: una per l&#8217;utente non loggato (con la form per fare il login), una per l&#8217;utente regolarmente loggato.<br />
Usando la tecnica delle pagine con piu&#8217; scopi il problema ha in php una soluzione semplice ed elegante. L&#8217;esempio che riporto e&#8217; tratto da un articolo di Kevin Yank (<a href="http://www.devarticles.com/c/a/PHP/Developing-Multipurpose-Pages-With-PHP" target="_blank" rel="noopener">questo il link all&#8217;articolo originale</a>).</p>
<p>Bob ha una pagina con delle news e un piccolo riquadro di login. Ecco il codice:</p>
<p>&nbsp;</p>
<pre class="brush: xml; ruler: true;">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Bob's Login Site&lt;/title&gt;
&lt;body bgcolor="#00cc00"&gt;
&lt;?php
if ($_POST['login'] == "do") {
$name = $_POST['name'];
$pass = $_POST['password'];
$db_cnct = mysql_connect("localhost", "user", "pass") or die("Could not connect to the database!");
$db = mysql_db_select("users", $db_cnct);
$sql = "SELECT user, pass FROM users WHERE user = \"$name\" and pass = \"md5($pass)\"";
// This is for an encrypted password-protection database
$check_user = mysql_query($sql);
$users = mysql_num_rows($check_user);
if ($users &lt; 1) {
echo ("&lt;center&gt;Invalid Password!&lt;/center&gt;");
echo ('&lt;form action="'.$PHP_SELF.'" method="post"&gt;');
echo ('&lt;input type="text" name="name"&gt;&lt;br /&gt;');
echo ('&lt;input type="password" name="password"&gt;&lt;br /&gt;');
echo ('&lt;input type="hidden" name="login" value="do"&gt;');
echo ('&lt;input type="submit" value="Log-in"&gt;');
echo ('&lt;/form&gt;');
}
else {
echo ("Welcome, $name!");
}
}
else {
echo ('&lt;form action="'.$PHP_SELF.'" method="post"&gt;');
echo ('&lt;input type="text" name="name"&gt;&lt;br /&gt;');
echo ('&lt;input type="password" name="password"&gt;&lt;br /&gt;');
echo ('&lt;input type="hidden" name="login" value="do"&gt;');
echo ('&lt;input type="submit" value="Log-in"&gt;');
echo ('&lt;/form&gt;');
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
<p>Lo script controlla se ci sono username e password (passati tramite il metodo HTTP POST).<br />
Se non ci sono, lo script mostrera&#8217; il codice che chiedera&#8217; di loggarsi.</p>
<p>Se ci sono, lo script interroga il database per controllare se si tratta di una coppia di valori validi.<br />
Se e&#8217; tutto ok, verra&#8217; mostrata la scritta &#8220;Welcome, $name!&#8221;, altrimenti verra&#8217; stampata a schermo una indicazione di errore e verra&#8217; riproposto il modulo di login.</p>
<p>Ed ecco un esempio pratico un po&#8217; piu&#8217; evoluto:</p>
<p>&nbsp;</p>
<pre class="brush: xml;">&lt;?PHP
$forum = $_GET['forum'];
if (!isset ($forum) ) {
$sql = "SELECT forums, ID FROM master_list";
$get_forums = mysql_query($sql);
while ($forums = mysql_fetch_array($get_forums) ) {
echo ('&lt;a href="forums.php?forum'.$forums["ID"].'"&gt;'.$forums["forums"].'&lt;/a&gt;&lt;br /&gt;');
}
}

else {
$thread = $_GET['thread'];
if (!isset ($thread) ) {
$sql = "SELECT thread, ID FROM forum".$forum;
$get_threads = mysql_query($sql);
while ($threads = mysql_fetch_array($get_forums) ) {
echo ('&lt;a href="forums.php?forum='.$forum.'&amp;thread='.$threads["ID"].'"&gt;');
echo ($threads["thread"].'&lt;/a&gt;&lt;br /&gt;');
}
}
else {
$sql = "SELECT messages FROM thread".$thread;
$get_messages = mysql_query($sql);
while ($messages = mysql_fetch_array($get_messages) ) {
echo ('&lt;table&gt;&lt;tr&gt;&lt;td&gt;'.$messages["message"].'&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;');
}
}
?&gt;</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/pagine-con-piu-scopi-in-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
