Ciao,
per un'applicazione che sto costruendo ho bisogno di verificare gli url inseriti in un form dagli utenti.
Sono url generici, tecnicamente persino questa pagina di forum, costruito un file php che DOVREBBE fare questo: verificare se l'url esiste, se esiste emettere lo status code, se questo è 200 ( OK ci sono! ) leggerne gli eventuali metatags e trasmette il tutto in versione json al form sul client che: emetterà un segnale rosso o verde a seconda dell'url ( se esiste o meno ) e se esiste e ci sono dei metatags scriverli in textarea predisposte.
Semplice? La seconda parte sì, la prima non tanto!
Il motivo non lo so, sto diventando pazzo perché ho iniziato a usare le funzioni predefinite del PHP ma non sempre danno il risultato sperato
Faccio un esempio:
se scrivo il semplice codice:
e gli passo come $url = http://ciccio va be che secondo le RFC ciccio è un url valido, ma è anche vero che nel web non esiste! Forse...Codice PHP:
$url = parse_url( $url );
$ip = gethostbyname( $url['host'] );
$risposta = array();
if ( $ip == $url['host'] ) {
$risposta['exists'] = 'no';
} else {
$risposta['exists'] = 'si';
}
Infatti il programma mi rispondeDove se lo status code è ovviamente 404 non trovato, exists è SI' il motivo?{"exists":"si","status_code":"http\/1.0 404 not found"}
Se faccio il var_dump( $url, $ip ); mi risponde:
dove quel numero IP corrisponde a http://it.altervista.org/ che è il server sul quale il programma gira.array(2) { ["scheme"]=> string(4) "http" ["host"]=> string(6) "ciccio" } string(12) "176.9.149.41"
Mi chiedo perché? Semplice, perché ciccio.altervista.org esiste anche se archiviato esiste su quel server e quindi immagino che il problema sia quello.
Infatti se invece lo richiamo con una stringa casuale la risposta è questa:
che è quella giusta.array(2) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "gfdsgfdgsfdg" } string(12) "gfdsgfdgsfdg" {"exists":"no"}
Ovviamente posso ovviare mettendo il programma su un altro server, ma ogni server ha le sue impostazioni, sul mio ad esempio si viene reindirizzati alla homepage del sito, insomma non se ne esce.
Idee?
Sono graditi suggerimenti come freegeoip.net che però riportino anche le informazioni di cui ho bisogno![]()