Linear distance of two world coordinates

dist = arccos( sin(minlat) * sin(maxlat) + cos(minlat) * cos(maxlat) * cos(maxlon – minlon) ) * 6371

<?php
//coordinates of point 1
$lat1=45.12345;
$lon1=10.12345; 

//coordinates of point 2
$lat2=46.12345;
$lon2=11.12345; 

$distance = (3958*3.1415926*sqrt(($lat2-$lat1)*($lat2-$lat1) + cos($lat2/57.29578)*cos($lat1/57.29578)*($lon2-$lon1)*($lon2-$lon1))/180); 

echo $distance;
?>

Remove comments in a php script

This script remove a comments from another php script.
Run script from shell and add name of the php script as argument.

<?php
    $source = $argv[1];
    $fileStr = file_get_contents($source);
    $newStr  = '';
 
    $commentTokens = array(T_COMMENT);
 
    if (defined('T_DOC_COMMENT'))
        $commentTokens[] = T_DOC_COMMENT;   
	
	if (defined('T_ML_COMMENT'))
        $commentTokens[] = T_ML_COMMENT;
    
	$tokens = token_get_all($fileStr);
 
    foreach ($tokens as $token) {
        if (is_array($token)) {
			if (in_array($token[0], $commentTokens))
				continue;
	 
			$token = $token[1];
        }
 
        $newStr .= $token;
    }
 
    $handle = fopen($source, "w");
    if($handle){
        fwrite($handle, $newStr);
        fclose($handle);
        //echo "open";
    }else{
        echo "no fucking handle!!";
    }
?>

Update ip of wordpress in ksweb webserver

If you need a wordpress blog locally on phone,
you could install ksweb on android.

But you phone have a different ip each wireless, then wordpress don’t work because he use absolute path.

you need change ip before using the blog.

You could make a php file that change ip.

<?php
define( 'DB_HOST', 'localhost' );
define( 'DB_USER', 'blog_user' );
define( 'DB_PASSWORD', 'blog_pass');
define( 'DB_NAME', 'blog' );

$i=$_GET['i'];
//connessione al db
$conn_id = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ('KO|500|Internal Server Error');
@mysql_select_db(DB_NAME, $conn_id) or die ('KO|500|Internal Server Error');
// @mysql_query("SET NAMES '".DB_CHARSET."'", $conn_id) or die ('KO|500|Internal Server Error');
 
$query = "update wp_options set option_value='".$i."' where option_id = 1;";
 mysql_query($query, $conn_id);
 
$query = "update wp_options set option_value='".$i."' where option_id = 2;";
 mysql_query($query, $conn_id);
?>

run script before launch blog with:

http://localhost/script.php?i=192.168.0.100

see next post for launch it with tasker

connect in ssh with php

Install needed libraries
apt-get install libssh2-1-dev libssh2-php

$con = ssh2_connect("server", 22);
ssh2_auth_password($con, "user", "pass");
ssh2_exec($con, "rm ..." );

if you need read output:

$con = ssh2_connect("server", 22);
ssh2_auth_password($con, "user", "pass");
$stream = ssh2_exec($con, "ls" );
stream_set_blocking($stream, true);
$data = "";
while ($buffer = fread($stream,4096)) {
    $data .= $buffer;
}
fclose($stream);
echo $data;

Script php estrazione dati da db per tasker

Considerando una tabella nel db fatta così:

Tabella interventi
id | id_cliente	| tipo_intervento	| descrizione&nbsp; 
---------------------------------------------------
1 |	21	| 	a1 		| desc1 
2 | 	25	| 	a2 		| desc2 
3 | 	25 	| 	a3 		| desc3 
4 | 	29 	| 	a4 		| desc4 
5 | 	30 	| 	a5 		| desc5 


Questo è lo script php

define( 'DB_HOST', 'localhost' );
define( 'DB_USER', 'user' );
define( 'DB_PASSWORD', 'pass');
define( 'DB_NAME', 'nomedb' );

//connessione al db
$conn_id = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ('KO|500|problema temporaneo del server (Internal Server Error)1');
@mysql_select_db(DB_NAME, $conn_id) or die ('KO|500|problema temporaneo del server (Internal Server Error)2');
// @mysql_query("SET NAMES '".DB_CHARSET."'", $conn_id) or die ('KO|500|problema temporaneo del server (Internal Server Error)3');

$query = "SELECT * FROM interventi WHERE id_cliente = 25";

$result = mysql_query($query, $conn_id);

while ($data = mysql_fetch_assoc($result)) {
	$arraydati[] = $data;
}

echo json_encode($arraydati);

questo il risultato dello script

[
	{"id":"2","id_cliente":"25","tipo_intervento":"a2","descrizione":"desc2"},
	{"id":"3","id_cliente":"25","tipo_intervento":"a3","descrizione":"desc3"}
]

Ed in fine questo è lo scriptlet

var httpd = global('HTTPD');
var jsonparsed = [];
jsonparsed = JSON.parse(httpd);
setGlobal('TIPO', jsonparsed[0].tipo_intervento);

La differenza è nel tipo di dato generato, nell’esempio di facebook il risultato è un array unidimenzionale invece il risultato di quella query è un array bidimensionale.
Infatti vengono estratte 2 righe dalla tabella, in ogni caso anche se il risultato è una sola riga, per come è strutturato lo script php, lo scriptlet funziona.
La differenza è nel jsonparsed[0].
0 per la prima riga, 1 per la seconda ecc.

Identificare Browser e Sistema operativo di client in php

Browser

function GetBrowser()
{
    $browser = array(
        'MSIE'      => 'Internet Explorer',
        'Firefox'   => 'FireFox',
        'Lynx'      => 'Lynx',
        'Opera'     => 'Opera',
        'WebTV'     => 'WebTV',
        'Konqueror' => 'Konqueror',
        'bot'       => 'Bot',
        'Google'    => 'Bot',
        'slurp'     => 'Bot',
        'scooter'   => 'Bot',
        'spider'    => 'Bot',
        'infoseek'  => 'Bot',
        'Nav'       => 'Netscape',
        'Gold'      => 'Netscape',
        'x11'       => 'Netscape',
        'Netscape'  => 'Netscape'
    );
 
    foreach($browser as $chiave => $valore)
    {
        if(strpos($_SERVER['HTTP_USER_AGENT'], $chiave ))
        {
            return $valore;
        }
    }
 
    return 'Altro';
}

OS

function GetSistemaOperativo()
{
    $os = array(
        'Windows NT 5.1'  => 'Windows XP',
        'Windows NT 5.0'  => 'Windows 2000',
        'Windows NT 4.90' => 'Windows ME',
        'Win95'           => 'Windows 95',
        'Win98'           => 'Windows 98',
        'Windows NT 5.2'  => 'Windows NET',
        'WinNT4.0'        => 'Windows NT',
        'Mac'             => 'Mac',
        'PPC'             => 'Mac',
        'Linux'           => 'Linux',
        'FreeBSD'         => 'FreeBSD',
        'SunOS'           => 'SunOS',
        'Irix'            => 'Irix',
        'BeOS'            => 'BeOS',
        'OS/2'            => 'OS/2',
        'AIX'             => 'AIX',
    );
 
    foreach($os as $chiave => $valore)
    {
        if(strpos($_SERVER['HTTP_USER_AGENT'], $chiave))
        {
            return $valore;
        }
    }
 
    return 'Altro';
}

Leggere e scrivere su file in php

Scrittura Metodo 1

$filename = 'file.txt';
$riga = "Riga da inserire\n";

// Verifica che sia riscrivibile
if (is_writable($filename)) {

    // append mode
    if (!$handle = fopen($filename, 'a')) {
         echo "Non riesco ad aprire file ($filename)";
         exit;
    }

    // Scrive il testo nel file.
    if (fwrite($handle, $riga) === FALSE) {
        echo "Non si riesce a scrivere nel file ($filename)";
        exit;
    }

    echo "OK";

    fclose($handle);

} else {
    echo "Non è scrivibile";
}

Scrittura Metodo 2

file_put_contents ( "file.txt", $riga ,FILE_APPEND);

Lettura

//Legge un file
$handle = fopen("file.txt", "r");


while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    echo $buffer.'<br />';
}

fclose($handle);

Array Php utili

$mesi= array("01"=>"Gennaio","02"=>"Febbraio","03"=>"Marzo","04"=>"Aprile","05"=>"Maggio","06"=>"Giugno","07"=>"Luglio","08"=>"Agosto","09"=>"Settembre","10"=>"Ottobre","11"=>"Novembre","12"=>"Dicembre");
$mesi= array("1"=>"Gennaio","2"=>"Febbraio","3"=>"Marzo","4"=>"Aprile","5"=>"Maggio","6"=>"Giugno","7"=>"Luglio","8"=>"Agosto","9"=>"Settembre","10"=>"Ottobre","11"=>"Novembre","12"=>"Dicembre");
$settimana= array("01"=>"Luned&igrave;","02"=>"Marted&igrave;","03"=>"Mercoled&igrave;","04"=>"Gioved&igrave;","05"=>"Venerd&igrave;","06"=>"Sabato","07"=>"Domenica");