Per accedere ad url esterni al tuo sito, altervista mette a disposizione 2 funzioni chiamate curl (che in realtà è una libreria) e fsockopen.
Queste funzioni hanno una serie di restrizioni, cioè possono accedere soltanto ad una lista che fornisce altervista stessa.
Per le tue necessità hai bisogno di rimuovere queste restrizioni:
Accedi al pannello di controllo: http://it.altervista.org/cplogin.php
Clicchi su AlterSito -> Risorse & Upgrade -> Server To Server -> Procedi con l'identificazione e segui le istruzioni presenti sul sito.
Ed eccoti il codice nella sua versione finale
Codice PHP:
<?php
error_reporting(E_ALL); // debugger :P
$dir = "img/"; // cartella dove sarà caricata l'immagine
$url = isset($_GET["url"]) ? $_GET["url"] : null
;
if(!preg_match("/(http):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/", $url)) {
exit("Inserisci un url valido!");
}
$consentiti = array("gif", "png", "jpg", "jpeg"); // estensioni consentite aggiungine altre se vuoi.
$tpm_file = rand(0, 9) . time() . rand(10, 20); // genero un nome casuale dove salverò il contenuto dell'immagine.
$info = pathinfo($url); // alcune informazioni, estensione, nome...
$max_kb = 512;
if(!in_array($info["extension"], $consentiti)) {
exit("Estensione non consentita!");
}
$ch = curl_init($url); // apro una connessione verso l'url indicato sopra
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // imposto qualche parametro...
$code = curl_exec($ch); // qui ho il contenuto dell'immagine.
curl_close($ch); // chiudo la connessione
file_put_contents($dir . $tpm_file, $code); // creo il file temporaneo.
$peso = ceil(filesize($dir . $tpm_file) / 1024);
if($peso > $max_kb) {
unlink($dir . $tpm_file);
exit("Il peso del file è superiore a {$max_kb}kb!"); // interrompo lo script
}
$name = $dir . $info["basename"];
$id = 1;
$n = pathinfo($name, PATHINFO_FILENAME);
$e = pathinfo($name, PATHINFO_EXTENSION);
while(file_exists($name)) {
$name = $dir . $n . $id . "." . $e;
$id++;
}
if(file_put_contents($name, $code)) {
unlink($dir . $tpm_file); // cancello il file temporaneo...
echo "File caricato con successo!";
}
?>
Saluti!