Salve a tutti
questo è il mio primo post... ma spero sia il primo di tanti visto che mi sono avvicinato al mondo php già da un pò e questo mi appassiona molto!!!
D'altra parte giracchio sul sito già da almeno un annetto: da voi ho appreso le basi sull'HTML, XML e adesso anche del PHP
Comunque veniamo a noi...
Sto realizzando uno script semplice semplice che mi dovrebbe consentire di fare il download di una immagine di cui possiedo l'URL direttamente sul pc ovviamente posizionandola su una cartella da ne specificata.
Già anticipo che, essendo alle prime armi, con qualche difficoltò, sul web ho individuato parti di script mettendoli insieme e caricati su uno spazio web di altervista.
Il risultato è che mi scarica l'immagine sul web server senza dargli alcuna dimensione...quindi neanche leggibile...
...ma io la voglio sul mio pc!!!
Ho capito che sicuramente sbaglio nell'indicare la destinazione ma ho provato di tutto.
Di seguito riporto il mio lavoro:
<?php
if (isset($_POST[dom])){
$root=str_replace($_SERVER["PHP_SELF"],"",$_SERVER["SCRIPT_FILENAME"]);//gia' presente all'inizio
$my_save="C:\Documents and Settings\Administrator\Desktop\IMACROS";//scrivere qui la directory, con permessi 775, in cui intendiamo salvare le immagini
function get_data($url)
{//preleva la pagina web data da $url
$ch = curl_init();//inizializza una nuova sessione e restituisce l'handle $ch
$timeout = 10;//5
curl_setopt($ch,CURLOPT_URL,$url);//$url e' l'URL che si desidera far salvare da PHP
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//con 1 per ottenere il trasferimento invece di stamparlo.
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);//fissa il timeout
$data = curl_exec($ch);//acqisisce il contenuto di URL in $data
curl_close($ch);//termina la sessione curl
return $data;//resituisce il contenuto di URL
}
echo "<h1>Elenco Immagini salvate in directory target</h1>";
$dom = $_POST[dom];
$ste = parse_url($dom);//acquisisce parti URL in array $ste
$sito = "http://".$ste[host];//acquisisce hostname dell'URL in $sito
$source=get_data($dom);//legge il contenuto della pagina Web
$doc = new DOMDocument;//alloca lo spazio per contenere un documento
$doc->loadHTML($source);//carica il documento $source
$xpath = new DOMXPath($doc);//inizializza la funzione query per processare il documento $doc
$nodo = $xpath->query('//img[@src]');//seleziona i tag img
$n=0;
foreach ($nodo as $nodo){
$n++;
$imgsrc = $nodo->getAttribute('src');//aquisisce valore di src nel tag img
$ste=parse_url("$imgsrc");
$hostsrc=$ste[host];
//echo "$imgsrc ";
if(empty($hostsrc)){//se non inizia col nome host del sito forma il corretto URL
if(substr($imgsrc,0,2) == "./"){
$imgsrc=$sito.substr($imgsrc,1);
//echo "trasformo in $imgsrc";
}
else if (substr($imgsrc,0,1) == "/"){
$imgsrc="$sito$imgsrc";
//echo "trasformo in $imgsrc";
}
else{
$imgsrc="$sito/$imgsrc";
//echo "trasformo in $imgsrc";
}
}
$nome_file=urlencode(basename("$imgsrc"));
$file_target=$my_save.$nome_file;
$target=$root.$file_target;
$size = getimagesize($imgsrc);//prende info immagine
$X = $size[0]; //larghezza immagine<br />
$Y = $size[1]; //altezza immagine<br />
$file_type= $size['mime'];//tipo di immagine
if("$file_type" == "image/pjpeg" || "$file_type" == "image/jpeg"){
$img=imagecreatefromjpeg($imgsrc);
$file_target=$file_target.".jpg";
imagejpeg ($img, $target.".jpg",100);// 100 stabilisce la max qualita' dell'immagine, 75 e' un buon compromesso tra qualita' e occupazione spazio
}
else if("$file_type" == "image/x-png" || "$file_type" == "image/png"){
$img=imagecreatefrompng($imgsrc);
$file_target=$file_target.".png";
imagealphablending($img, false);
imagesavealpha ($img, true);//imagealphablending e imagesavealpha per mantenere la trasparenza delle png
imagepng ($img, $target.".png",0);//livello di compressione variabile da 0 (nessuna compressione) a 9 (max compressione)
}
else if("$file_type" == "image/gif"){
$img=imagecreatefromgif($imgsrc);
$file_target=$file_target.".gif";
imagegif ($img,$target.".gif");
}
echo "<img src=\"$file_target\" alt=\"$nome_file\" title=\"$nome_file\" border=\"1\"> ";
imagedestroy($img);
}
echo "<hr>";
}
?>
<h3>Per acquisire immagini da una pagina Web e salvarle in una propria Directory</h3>
<form name="form1" method="post" action="" >
Nome completo della pagina Web: <input type="text" name="dom" value="http://">
<input type="submit" value="Invia">
</form>
Questo è tutto...
attendo consigli e istruzioni per risolvere questo problema ma soprattutto accetto consigli per rendere più facile i miei studi sul php...
Grazie
Fabio

PS: ma questi permessi 775 cosa sarebbero precisamente?
questo è il mio primo post... ma spero sia il primo di tanti visto che mi sono avvicinato al mondo php già da un pò e questo mi appassiona molto!!!
D'altra parte giracchio sul sito già da almeno un annetto: da voi ho appreso le basi sull'HTML, XML e adesso anche del PHP
Comunque veniamo a noi...
Sto realizzando uno script semplice semplice che mi dovrebbe consentire di fare il download di una immagine di cui possiedo l'URL direttamente sul pc ovviamente posizionandola su una cartella da ne specificata.
Già anticipo che, essendo alle prime armi, con qualche difficoltò, sul web ho individuato parti di script mettendoli insieme e caricati su uno spazio web di altervista.
Il risultato è che mi scarica l'immagine sul web server senza dargli alcuna dimensione...quindi neanche leggibile...
...ma io la voglio sul mio pc!!!
Ho capito che sicuramente sbaglio nell'indicare la destinazione ma ho provato di tutto.
Di seguito riporto il mio lavoro:
<?php
if (isset($_POST[dom])){
$root=str_replace($_SERVER["PHP_SELF"],"",$_SERVER["SCRIPT_FILENAME"]);//gia' presente all'inizio
$my_save="C:\Documents and Settings\Administrator\Desktop\IMACROS";//scrivere qui la directory, con permessi 775, in cui intendiamo salvare le immagini
function get_data($url)
{//preleva la pagina web data da $url
$ch = curl_init();//inizializza una nuova sessione e restituisce l'handle $ch
$timeout = 10;//5
curl_setopt($ch,CURLOPT_URL,$url);//$url e' l'URL che si desidera far salvare da PHP
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//con 1 per ottenere il trasferimento invece di stamparlo.
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);//fissa il timeout
$data = curl_exec($ch);//acqisisce il contenuto di URL in $data
curl_close($ch);//termina la sessione curl
return $data;//resituisce il contenuto di URL
}
echo "<h1>Elenco Immagini salvate in directory target</h1>";
$dom = $_POST[dom];
$ste = parse_url($dom);//acquisisce parti URL in array $ste
$sito = "http://".$ste[host];//acquisisce hostname dell'URL in $sito
$source=get_data($dom);//legge il contenuto della pagina Web
$doc = new DOMDocument;//alloca lo spazio per contenere un documento
$doc->loadHTML($source);//carica il documento $source
$xpath = new DOMXPath($doc);//inizializza la funzione query per processare il documento $doc
$nodo = $xpath->query('//img[@src]');//seleziona i tag img
$n=0;
foreach ($nodo as $nodo){
$n++;
$imgsrc = $nodo->getAttribute('src');//aquisisce valore di src nel tag img
$ste=parse_url("$imgsrc");
$hostsrc=$ste[host];
//echo "$imgsrc ";
if(empty($hostsrc)){//se non inizia col nome host del sito forma il corretto URL
if(substr($imgsrc,0,2) == "./"){
$imgsrc=$sito.substr($imgsrc,1);
//echo "trasformo in $imgsrc";
}
else if (substr($imgsrc,0,1) == "/"){
$imgsrc="$sito$imgsrc";
//echo "trasformo in $imgsrc";
}
else{
$imgsrc="$sito/$imgsrc";
//echo "trasformo in $imgsrc";
}
}
$nome_file=urlencode(basename("$imgsrc"));
$file_target=$my_save.$nome_file;
$target=$root.$file_target;
$size = getimagesize($imgsrc);//prende info immagine
$X = $size[0]; //larghezza immagine<br />
$Y = $size[1]; //altezza immagine<br />
$file_type= $size['mime'];//tipo di immagine
if("$file_type" == "image/pjpeg" || "$file_type" == "image/jpeg"){
$img=imagecreatefromjpeg($imgsrc);
$file_target=$file_target.".jpg";
imagejpeg ($img, $target.".jpg",100);// 100 stabilisce la max qualita' dell'immagine, 75 e' un buon compromesso tra qualita' e occupazione spazio
}
else if("$file_type" == "image/x-png" || "$file_type" == "image/png"){
$img=imagecreatefrompng($imgsrc);
$file_target=$file_target.".png";
imagealphablending($img, false);
imagesavealpha ($img, true);//imagealphablending e imagesavealpha per mantenere la trasparenza delle png
imagepng ($img, $target.".png",0);//livello di compressione variabile da 0 (nessuna compressione) a 9 (max compressione)
}
else if("$file_type" == "image/gif"){
$img=imagecreatefromgif($imgsrc);
$file_target=$file_target.".gif";
imagegif ($img,$target.".gif");
}
echo "<img src=\"$file_target\" alt=\"$nome_file\" title=\"$nome_file\" border=\"1\"> ";
imagedestroy($img);
}
echo "<hr>";
}
?>
<h3>Per acquisire immagini da una pagina Web e salvarle in una propria Directory</h3>
<form name="form1" method="post" action="" >
Nome completo della pagina Web: <input type="text" name="dom" value="http://">
<input type="submit" value="Invia">
</form>
Questo è tutto...
attendo consigli e istruzioni per risolvere questo problema ma soprattutto accetto consigli per rendere più facile i miei studi sul php...
Grazie
Fabio

PS: ma questi permessi 775 cosa sarebbero precisamente?