8797 sujets
Tu peux utiliser CURL pour pinger l'URL en question.
Modifié par jb_gfx (01 Jul 2012 - 20:10)
<?php
/**
* Ping an URL
*
* @param string $url The URL to ping
* @return boolean
*/
function ping_url($url) {
$return = true;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (false === curl_exec($ch)) {
$return = false;
} elseif (200 !== curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
$return = false;
}
curl_close($ch);
return $return;
}
/**
* Usage example
*/
$messages = array(
"La page <strong>%s</strong> n'existe pas.<br>",
"La page <strong>%s</strong> existe.<br>"
);
$urls = array(
'http://www.google.fr/',
'http://forum.alsacreations.com/topic-20-62619-1-Tester-lurl-recuperee-dans-un-formulaire.html',
'http://forum.alsacreations.com/topgdfgdfgdfgf.html',
'http://www.dfghhhghgfh.com/truc.html',
);
foreach ($urls as $url) {
printf($messages[(int) ping_url($url)], $url);
}
Modifié par jb_gfx (01 Jul 2012 - 20:10)
Oui, je me doute que c'est pour tester. On utilise toujours echo pour tester quand on développe. Le souci est que cela ne marche pas bien avec l'écho.
Edit: c'est pas clair ce que dis. En fait, je récupère l'URL via $_post et c'est elle que je teste donc. J'ai un vide dans le navigateur.
Si c'est faux j'envoie un truc vide ou avec un message du type "erreur d'URL dans le mail.
L'autre question que je me pose c'est :"est-ce que je dis au type que son URL est mauvaise sachant que c'est pas un champ obligatoire?
Modifié par jmlapam (01 Jul 2012 - 18:28)
Edit: c'est pas clair ce que dis. En fait, je récupère l'URL via $_post et c'est elle que je teste donc. J'ai un vide dans le navigateur.
Si c'est faux j'envoie un truc vide ou avec un message du type "erreur d'URL dans le mail.
L'autre question que je me pose c'est :"est-ce que je dis au type que son URL est mauvaise sachant que c'est pas un champ obligatoire?
Modifié par jmlapam (01 Jul 2012 - 18:28)
Sinon j'ai résolu le souci d'affichage de l'écho et cela venait de XAMPP donc rien à voir.
EDIT : ça marche pas en ligne. J'ai peut-être les neurones en perdition, voici ce que je mets :
Modifié par jmlapam (01 Jul 2012 - 20:13)
EDIT : ça marche pas en ligne. J'ai peut-être les neurones en perdition, voici ce que je mets :
if (true === ping_url($_POST['url'])) {
$url= trim($_POST['url']) ;
} else {
// message d'erreur
}
Modifié par jmlapam (01 Jul 2012 - 20:13)
Oui c'est les neurones.
Le champs peut ne pas être obligatoire ça n'empêche pas de le valider si il a été rempli par l'utilisateur.
Modifié par jb_gfx (01 Jul 2012 - 20:07)

$url = trim($_POST['url']);
if (true === ping_url($url)) {
// traitement si url ok
} else {
// traitement si url pas ok
}
jmlapam a écrit :
L'autre question que je me pose c'est :"est-ce que je dis au type que son URL est mauvaise sachant que c'est pas un champ obligatoire?
Le champs peut ne pas être obligatoire ça n'empêche pas de le valider si il a été rempli par l'utilisateur.
Modifié par jb_gfx (01 Jul 2012 - 20:07)
jb_gfx a écrit :
Dans ce cas regarde si CURL est bien activé sur ton hébergement. Sur 99% des hébergeurs il l'est, mais on sait jamais.
Pas forcement, chez OVH, sur les dédiés, il peut être:
-Installé mais désactivé par défaut
-Installé et activé par défaut
-Pas installé du tout
ça dépends des distribs
Ouep tu as raison :
//Check URL via CURL
function ping_url($url) {
$return = true;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (false === curl_exec($ch)) {
$return = false;
} elseif (200 !== curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
$return = false;
}
curl_close($ch);
return $return;
}
//process URL
if (true === ping_url($_POST['url'])){
$url = trim($_POST['url']) ;
}
else {
$urlError = 'URL doesn\'t exist !';
$hasError = true;
}
Chez moi ça marche.
Pour reprendre le post précédent de jb_gfx, pourquoi utilise tu trim() qu'aprés ton test?
tu devrai aussi tester le http:// de ton adresse (pas pénalisant dans cURL mais ça coute pas grand chose, et ça peut être utile selon ce que tu fait a la suite).
Sinon pour ton problème, pas trop d'idée, si ta variable post est correcte, cURL est bien installé et php_curl activé je sait pas du tout.
J'ai fais le test sur http://www.google.fr et http://www.googleqsdfqfdgq.fr, le premier est bien "pingué" et le second me renvoi bien l'erreur.
Pour reprendre le post précédent de jb_gfx, pourquoi utilise tu trim() qu'aprés ton test?
//process URL
$url = trim($_POST['url']) ;
if (true !== ping_url($url))
{
$urlError = 'URL doesn\'t exist !';
$hasError = true;
unset($url);
}
tu devrai aussi tester le http:// de ton adresse (pas pénalisant dans cURL mais ça coute pas grand chose, et ça peut être utile selon ce que tu fait a la suite).
Sinon pour ton problème, pas trop d'idée, si ta variable post est correcte, cURL est bien installé et php_curl activé je sait pas du tout.
J'ai fais le test sur http://www.google.fr et http://www.googleqsdfqfdgq.fr, le premier est bien "pingué" et le second me renvoi bien l'erreur.