Http code status d'une url en https via php
romegonic
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
romegonic Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
romegonic Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite mettre au point un petit tool de monitoring d'ip et d'url, en php.
Et ce qui m'intéresse exclusivement c'est le code retour, et non le contenu.
Pour cela je dispose de trois arguments principaux, que je peux passer à une fonction, concaténés, ou séparément :
* l'ip (ou fqdn)
* le port
* le contexte (ex : /admin/accueil.php?user=toto)
J'ai essayé plusieurs fonctions qui fonctionnent correctement, en http, en me fournissant directement un status code, ou une chaîne que je peux tronquer pour garder ce fameux status code.
Pour cela je peux utiliser différentes fonctions telles que :
* file_get_contents($url) avec $http_response_header[0]
* $fp=fsockopen($adresse,$port,$errno,$errstr,5); suivi de fwrite($fp,$sortie);
* Des variantes avec curl : en curl_exec de php ou en exec(commande curl en chemin direct)
Mais problème : Aucune d'entre elles ne me permet de récupérer un status code sur une url en https. Je ne reçois rien, ou au mieux un '€'
J'ai essayé des solutions fournies sur certains forums du genre :
fsockopen(ssl://$ip,443,$errno,$errstr,30) au lieu de fsockopen($ip,443,$errno,$errstr,30)
curl tappe l'url directement et je me pren un connection close sans retour de code status.
Alors je vois une autre possibilité, utiliser un telnet qui peut faire du ssl (attention pas du ssh, ça j'ai déjà), mais je ne trouve rien à télécharger (proxy de la société) dans ce sens, et je ne sais pas si les exec($commande) de php retournera quelque chose.
Le pire c'est qu'en commande msdos, ou sous aix, jobtiens des réponses (ssl handshake, ou can not connect suivant l'erreur), sur la commande curl :
curl -v $url_en_https
Merci par avance si vous avez un pitite solution à me proposer :p
Je souhaite mettre au point un petit tool de monitoring d'ip et d'url, en php.
Et ce qui m'intéresse exclusivement c'est le code retour, et non le contenu.
Pour cela je dispose de trois arguments principaux, que je peux passer à une fonction, concaténés, ou séparément :
* l'ip (ou fqdn)
* le port
* le contexte (ex : /admin/accueil.php?user=toto)
J'ai essayé plusieurs fonctions qui fonctionnent correctement, en http, en me fournissant directement un status code, ou une chaîne que je peux tronquer pour garder ce fameux status code.
Pour cela je peux utiliser différentes fonctions telles que :
* file_get_contents($url) avec $http_response_header[0]
* $fp=fsockopen($adresse,$port,$errno,$errstr,5); suivi de fwrite($fp,$sortie);
* Des variantes avec curl : en curl_exec de php ou en exec(commande curl en chemin direct)
Mais problème : Aucune d'entre elles ne me permet de récupérer un status code sur une url en https. Je ne reçois rien, ou au mieux un '€'
J'ai essayé des solutions fournies sur certains forums du genre :
fsockopen(ssl://$ip,443,$errno,$errstr,30) au lieu de fsockopen($ip,443,$errno,$errstr,30)
curl tappe l'url directement et je me pren un connection close sans retour de code status.
Alors je vois une autre possibilité, utiliser un telnet qui peut faire du ssl (attention pas du ssh, ça j'ai déjà), mais je ne trouve rien à télécharger (proxy de la société) dans ce sens, et je ne sais pas si les exec($commande) de php retournera quelque chose.
Le pire c'est qu'en commande msdos, ou sous aix, jobtiens des réponses (ssl handshake, ou can not connect suivant l'erreur), sur la commande curl :
curl -v $url_en_https
Merci par avance si vous avez un pitite solution à me proposer :p
A voir également:
- Http code status d'une url en https via php
- Http - Guide
- Code ascii - Guide
- Url - Guide
- Http //192.168.l.l - Guide
- Https //www.windows.com/stop code - Guide
3 réponses
Ne réinvente pas la roue.
Regarde get_headers
Exemple:
Regarde get_headers
Exemple:
johand@osiris: ~/tmp $ cat get_headers.php <?php $url = 'http://www.alter.be'; print_r(get_headers($url)); print_r(get_headers($url, 1)); ?> johand@osiris: ~/tmp $ php get_headers.php 2>/dev/null Array ( [0] => HTTP/1.1 200 OK [1] => Date: Mon, 04 Jun 2012 14:46:10 GMT [2] => Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny16 with Suhosin-Patch [3] => X-Powered-By: PHP/5.2.6-1+lenny16 [4] => Set-Cookie: PHPSESSID=820e249d1b7bcb545703474b03d5f298; path=/ [5] => Expires: Thu, 19 Nov 1981 08:52:00 GMT [6] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 [7] => Pragma: no-cache [8] => Vary: Accept-Encoding [9] => Connection: close [10] => Content-Type: text/html ) Array ( [0] => HTTP/1.1 200 OK [Date] => Mon, 04 Jun 2012 14:46:10 GMT [Server] => Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny16 with Suhosin-Patch [X-Powered-By] => PHP/5.2.6-1+lenny16 [Set-Cookie] => PHPSESSID=1d38e5e4d3733e894781d2c767a0d8b2; path=/ [Expires] => Thu, 19 Nov 1981 08:52:00 GMT [Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0 [Pragma] => no-cache [Vary] => Accept-Encoding [Connection] => close [Content-Type] => text/html )
D'abord, merci pour ta réponse, par contre mon problème persiste.
Ma fonction basée sur ta réponse:
function monitorer($url){
echo $url."<br>";
$tab=get_headers($url);
print_r(get_headers($url));
echo "<br>****************************************<br>";
return $tab[0];
}
L'output lors de l'appel "$statut = monitorer($adresse)" :
Une url en http :
http://10.242.92.228:80/
Array ( [0] => HTTP/1.1 200 OK [1] => Date: Mon, 04 Jun 2012 15:39:31 GMT [2] => Server: IBM_HTTP_Server/7.0.0.13 (Unix) [3] => Content-Length: 2727 [4] => Connection: close [5] => Content-Type: text/html;charset=ISO-8859-1 )
****************************************
Une url en https :
https://10.242.92.223:443/
Warning: get_headers() [function.get-headers]: This function may only be used against URLs. in C:\ROMEGONIC\monitoring\fonctions\fonctions.php on line 97
... Et rien d'autre
quid de mon éventuelle erreur/oubli ?
Ma fonction basée sur ta réponse:
function monitorer($url){
echo $url."<br>";
$tab=get_headers($url);
print_r(get_headers($url));
echo "<br>****************************************<br>";
return $tab[0];
}
L'output lors de l'appel "$statut = monitorer($adresse)" :
Une url en http :
http://10.242.92.228:80/
Array ( [0] => HTTP/1.1 200 OK [1] => Date: Mon, 04 Jun 2012 15:39:31 GMT [2] => Server: IBM_HTTP_Server/7.0.0.13 (Unix) [3] => Content-Length: 2727 [4] => Connection: close [5] => Content-Type: text/html;charset=ISO-8859-1 )
****************************************
Une url en https :
https://10.242.92.223:443/
Warning: get_headers() [function.get-headers]: This function may only be used against URLs. in C:\ROMEGONIC\monitoring\fonctions\fonctions.php on line 97
... Et rien d'autre
quid de mon éventuelle erreur/oubli ?
Bon ben tant pis je parlais d'une récupération de code status sur une url en https, je vois que la seule réponse c'est get_headers avec comme exemples qui fonctionnent ... des urls ... en http.
Je ne réinvente pas la roue en fait, plusieurs forums relaient la même question (formulés par différentes personnes), sans réponse.
ps : Je vois que plus on est humble dans la présentation d'un problème, plus les réponses arrivent en mode YAKAFOKEU, en répondant à côté.
Je ne réinvente pas la roue en fait, plusieurs forums relaient la même question (formulés par différentes personnes), sans réponse.
ps : Je vois que plus on est humble dans la présentation d'un problème, plus les réponses arrivent en mode YAKAFOKEU, en répondant à côté.