Newsgroup: it.comp.www.php
Titolo: Copiare del testo all'interno di una pagina HTML

Salve a tutti,
ho un problema, vi spiego in quanto dal titolo forse non si capisce molto
bene:
Vorrei creare una pagina in PHP a cui gli passo 2 valori "code" e "id".
La pagina deve collegarsi e scaricare da un'altro sito il codice html dalla
pagina che viene richiesta passandogli perň i 2 valori che ho dato alla mia
pagina e salvare tutto il codice in un file temporaneo.
Poi dovrei copiare all'interno del file temporaneo tutto il codice html
contenuto tra 2 commenti "<!-- Start //--> e <!-- End //-->" e salvare il
testo copiato in un nuovo file di testo.
Riuscite ad aiutarmi?
Grazie in anticipo.

 salvare il testo copiato in un nuovo file di testo.
Tralasciando il fatto che se ne e' parlato decine e decine di volte,
quello che ti serve lo trovi qui:
http://www.php.net/curl
http://www.php.net/fsockopen
e
http://www.php.net/substr
http://www.php.net/strpos
http://www.php.net/preg_match
-- 
I am what I am, I do what I can
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.

Grazie, controllerň sui link.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:G_ubc.105108$Kc3.3...@twister2.libero.it...


Ho un problema, ho preso in considerazione questo esempio:
<?php
$host="localhost" ;
$target="/mypage.php" ;
$port=80 ;
$timeout=60;
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ;
if(!is_resource($sk)){
 exit("Connessione fallita: ".$errnum." ".$errstr) ;
}
else{
fputs ($sk, "GET $target\r\n");
$dati="" ;
while (!feof($sk)) {
$dati.= fgets ($sk,2048);
}
}
fclose($sk) ;
echo($dati) ;
?>
E in ogni prova che ho fatto mi da "Connessione fallita:" senza scrivermi il
tipo di errore.
Come mai?
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:G_ubc.105108$Kc3.3...@twister2.libero.it...


 scrivermi il tipo di errore.
Mi pare strano, l'error reporting come e' impostato? fsockopen e'
abilitato per connettersi? Non e' che hai un firewall attivo sulla
macchina locale?
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Votami! 
http://www.phpclasses.org/vote.html


Si ho controllato, ora in locale funziona, infatti dipendeva dal firewall.
Però ho provato lo script nello spazio gratuito di lycos, cambiando
"localhost" con l'host di lycos, ma anche li non mi funziona, non sò il xkè.
Visto che ci sono e che ho visto che sei esperto di php e mysql, sapresti
consigliari un hosting che mi dia accesso al server mysql da remoto, invece
che in locale?
Grazie di tutto.
PS: Come copio il testo che mi interessa nella pagina? Dovrei copiare tutto
quello che c'è tra i due commenti. Grazie.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:kl0cc.110913$FJ6.4...@twister1.libero.it...


Tutto ok, ora in locale fuziona, dimmi se ho fatto qualche errore e se posso
migliorare il codice in modo che sia + veloce e sicuro.
Dovrei apportare delle modifiche in quanto alla mia pagina gli passo solo
"userid, current_session e code", poi tutti gli
altri dati vengono presi dal database MySQL: come "code -> vcode, date ->
vdate, ecc...".
Ora mi è rimasta solo una cosa da fare, dovrei controllare solo l'orario e
la data di richiesta da parte dell'utente, visto che dal sito dove scarico
la pagina il tracking viene aggiornato ogni 24h dalla data e ora di
spedizione; puoi aiutarmi su questo problema?
Grazie di tutto il tempo che mi hai messo a disposizione.
<html>
<head>
<title>Tracking Order</title>
</head>
<body>
<?php
$host="localhost" ;
$target="/online/ordertracking/request.php" ;
$target = $target."?vcode=".$_GET["code"]."&vdate=".$_GET["date"];
$port=80 ;
$timeout=60;
$sid=md5(uniqid(rand(), true));
$fext=".txt";
$filename=$sid.$fext;            // File Temp
$newfile="new_".$sid."_".$fext;  // Nuovo File
$find_first  = "<!--- START --->"; // Prima stringa da cercare
$find_last  = "<!--- END --->";  // Seconda stringa da cercare
// Connessione
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout);
if(!is_resource($sk)){
  exit("Connessione fallita: ".$errnum." ".$errstr);
} else {
  fputs ($sk, "GET $target\r\n");
  $dati="" ;
  while (!feof($sk)) {
    $dati.= fgets ($sk,2048);
  }
}
fclose($sk);
// Scrivo il file
$file = fopen($filename, "w+t");
fwrite($file, $dati);
fclose($file);
// Apro il file e lo carico in mystring
$mystring = "";
$file = fopen($filename, "r+t");
$mystring = fread($file, filesize($filename));
fclose($file);
// Prima ricerca
$pos_first = strpos($mystring, $find_first);
if ($pos_first === false) {
   // string non trovata
} else {
   // Stringa trovata
}
// Seconda ricerca
$pos_last = strpos($mystring, $find_last);
if ($pos_last === false) {
   // Stringa non trovata
} else {
   // Stringa trovata
}
// Copio il testo che desidero
$newstring = "";
$newstring = substr($mystring, $pos_first + strlen($find_first), $pos_last -
($pos_first + strlen($find_first)));
// Scrivo il nuovo file
$file = fopen($newfile, "w+t");
fwrite($file, $newstring);
fclose($file);
?>
</body>
</html>

 remoto, invece che in locale?
L'unico che mi viene in mente adesso e' Seeweb, ma anche altri, basta
cercare tra le specifiche dei pacchetti.


 fclose($file);
Tutto il codice precedente e' inutile in quanto il contenuto del file
e' gia' presente nella variabile $dati, sostituisci con:
$mystring = $dati;
 
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y


con urlencode ho come risultato:
<HTML><HEAD><TITLE>Bad request</TITLE></HEAD>
<BODY><H1>Bad request</H1>
Your browser sent a query this server could not understand.
</BODY></HTML>
quindi se rimane in memoria su $dati, non mi serve che ogni volta salvo un
file temporaneo diverso; in pratica elimino del codice inutile.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:RJ7cc.111060$FJ6.4...@twister1.libero.it...


 con urlencode ho come risultato:
Come hai usato urlencode? Sei sicuro di averlo usato correttamente?
L'utilizzo corretto e':
$target = $target . "?vcode=". urlencode ($_GET["code"]) . 
			    "&vdate=" . urlencode ($_GET["date"]);
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Votami! 
http://www.phpclasses.org/vote.html


 
hostingplan lo fa fare... dal pannello di controllo dell'hosting basta 
settarlo

 ha scritto nel messaggio
news:Xnmcc.25183$rM4.1...@news4.tin.it...


Si errore mio, non avevo utilizzato bene il codice.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:vo9cc.108027$Kc3.3...@twister2.libero.it...


Effettuo la chiamata alla pagina con fsockopen con metodo GET giusto? Posso
farlo con metodo POST?
Poi come faccio a far visualizzare la grafica della pagina durante il
caricamento, invece che tutto alla fine?
Grazie.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:RJ7cc.111060$FJ6.4...@twister1.libero.it...


 caricamento, invece che tutto alla fine?
http://www.php.net/flush
 (etc.) anche se non sempre funziona.
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Votami! 
http://www.phpclasses.org/vote.html


La pagina, accetta il metodo POST, cmq funziona anche in GET.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:6Pycc.113728$FJ6.4...@twister1.libero.it...
