SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Esportare da Firefox le password dei moduli web

Oggi vorrei segnalarvi un plugin di Firefox che permette di creare un file XML con tutte le password, dei vari moduli web, memorizzate da Firefox: Password Exporter

Il sistema è abbastanza semplice. Si installa il plugin, si riavvia Firefox e poi nella sezione “Preferenze”->”Sicurezza” si troverà un nuovo pulsante denominato “Importa/esporta password” che permetterà di creare il file di backup, oppure di reimportarlo successivamente.

enjoy!

PHP 5.3.8 Released!

Ebbene si, un nuovo rilascio di PHP dagli sviluppatori è arrivato il 23.08.2011. Questo post non è tanto per segnalare il rilascio, ma piuttosto per evidenziare che gli sviluppatori informano che la serie 5.2 non sarà più supportata ed invitano ad effettuare l’aggiornamento alla 5.3.8, testualmente:

All PHP users should note that the PHP 5.2 series is NOT supported anymore. All users are strongly encouraged to upgrade to PHP 5.3.8.

E pensare che qualcuno vuole ancora usare PHP 4 :-)

enjoy!

Esportare dati in JSON con AMFPHP

AMFPHP è un’implementazione open-source scritta in PHP per Action Message Format(AMF). Questo framework viene utilizzato per consentire lo scambio di dati tra Flex-Flash e PHP.
Una cosa molto interessante è che questo framework, senza nessuna modifica, può “rispondere” alle chiamate anche in JSON.
Ipotizzando che il framework sia installato su localhost, che il servizio si chiama service e che il metodo da chiamare si chiami elenco, basterà richiamare:

http://localhost/json.php/service.elenco/

Nel caso il metodo elenco, richieda due argomenti, arg1 e arg2, la chiamata sarà:

http://localhost/json.php/service.elenco/arg1/arg2

enjoy

Riconoscere lato server se la navigazione avviene da iPad

Potrebbe essere comodo capire se la navigazione nel proprio sito avviene da iPad, magari per mostrare una pagine web formattata in modo differente.
Questa verifica può essere fatta lato client in JavaScript, oppure lato server in PHP o direttamente tramite rewrite del server web (apache in questo caso).
Il concetto è sempre lo stesso: riconoscere il browser del visitatore dall’UserAgent.

In JavaScript è possibile usare il seguente codice:

var isiPad = navigator.userAgent.match(/iPad/i) != null;
var ua = navigator.userAgent;
var isiPad = /iPad/i.test(ua) || /iPhone OS/i.test(ua);

In PHP è possibile usare il seguente codice:

$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');

Infine con le regole di rewrite da inserire in un file .htaccess, si può usare il seguente codice per attivare il redirect verso un altro indirizzo nel caso il visitatore usi un iPad:

RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.domain.ext [R=301]

Testare l’invio di posta con connessione socket da PHP

Segue un semplice script che uso di tanto in tanto per verificare il corretto invio di posta da parte di un server SMTP autenticato. E’ praticamente la stessa cosa che si può fare manualmente con un telnet sulla porta 25 del server, ma dato che bisogna inviare username e password codificati base64, ho preferito creare uno script ad-hoc che simula tale connessione:

#!/usr/bin/php -q
<?
if ($argc == 4){
$user = $argv[1];// prendo l'argomento passato allo script
$pass =  $argv[2];// prendo l'argomento passato allo script
$server =  $argv[3];// prendo l'argomento passato allo script
$toemail = 'nobody@tophost.it';
echo 'telnet mail.'.$server." 25"."\n";
$smtp_server = fsockopen('mail.'.$server, 25, $errno, $errstr, 30);
if(!$smtp_server)
{
  echo "Impossibile connettersi al server";
  exit;
}

$inn = fgets($smtp_server); // output
echo $inn;

echo "HELO ".$server."\n";
fputs($smtp_server, "HELO ".$server."\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo "AUTH LOGIN"."\n";
fputs($smtp_server, "AUTH LOGIN\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo base64_encode($user)."\n";
fputs($smtp_server, base64_encode($user)."\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo base64_encode($pass)."\n";
fputs($smtp_server, base64_encode($pass)."\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo "MAIL FROM: info@$server"."\n";
fputs($smtp_server, "MAIL FROM: info@$server\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo "RCPT TO: $toemail"."\n";
fputs($smtp_server, "RCPT TO: $toemail\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo "RSET"."\n";
fputs($smtp_server, "RSET\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

echo "QUIT"."\n";
fputs($smtp_server, "QUIT\r\n");
$inn = fgets($smtp_server); // output
echo $inn;

fclose($smtp_server);
echo "\n";


}else{
echo "dati mancanti\nInserire user pass server\n";
}
?>

Ora basta dare i privilegi di esecuzione allo script:

chmod 755 test_smtp.php

e poi eseguirlo come segue:

./test_smtp.php  USER PASS SERVER

dove:
USER: username usato per l’autenticazione
PASS: la relativa password
SERVER: il server verso cui effettuare la connessione

enjoy

PHP 5.3 e $_REQUEST['PHPSESSID'] vuoto

Usando PHP 5.3, avrete notato che $_REQUEST['PHPSESSID'] è vuoto.
A differenza delle precedenti versioni di PHP, per ragioni di sicurezza, $_COOKIE non viene importato in $_REQUEST e quindi non è disponibile il PHPSESSID.

Per ovviare, si può associare il contenuto di $_COOKIE['PHPSESSID'] a $_REQUEST['PHPSESSID'] nel caso sia vuoto, inserendo dopo il “session_start()”:

$_REQUEST['PHPSESSID'] = (!isset($_REQUEST['PHPSESSID']))?$_COOKIE['PHPSESSID']:$_REQUEST['PHPSESSID'];

In alternativa si può modificare il funzionamento di PHP, editando il file di configurazione /etc/php5/apache2/php.ini ed in particolare la nuova direttiva request_order

enjoy!

Page optimized by WP Minify WordPress Plugin