[PHP] if ping =

if ping = [PHP] - PHP - Programmation

Marsh Posté le 07-08-2007 à 18:53:07    

Salit salut,
 
voila j'ai créé un intranet dans l'entreprise et tout le monde y a accés, mais dans l'entreprise tout le monde n'a pa internet.
 
Sur la page d'accueil j'ai inséré le champ de recherche google pour pas trop destabilisé ceux qui avait internet, le problème c'est que ceux qui n'ont jamais eu internet viennent me demander toute les 30s si ils ont internet...
 
est il possible de faire un :
 

Code :
  1. <?php if ping google.fr = true
  2. { include 'google.php';
  3. else


 
juste histoire de dire que si le pc a internet on affiche le champ de recherche google sinon non.
 
Merci d'avance :)
 
SeB

Reply

Marsh Posté le 07-08-2007 à 18:53:07   

Reply

Marsh Posté le 07-08-2007 à 18:58:44    

:hello:
 
A ma connaissance, tu ne peux pas vérifier que le client est connecté à internet. tu n'as pas ces informations depuis le serveur, et il est impossible (pour des questions de sécurité) de faire exécuter un ping par le client.
 
la seule chose que tu puisse savoir est si ton serveur PHP est relié à internet. dans ce cas là, tente d'ouvrir une page internet avec un fopen, (ou un truc dans le genre), ou encore en socket... goole est ton ami ;-)
 
:jap:
 

Reply

Marsh Posté le 07-08-2007 à 19:24:53    

arf ok donc c galére. et hum internet est fourni par un proxy est ce que je peux dire en php if proxy enable { include "google.php"
 
non ?

Reply

Marsh Posté le 07-08-2007 à 19:36:33    

Ca doit pouvoir se faire avec du javascript.
 
Je peux pas t'aider là par contre :d

Reply

Marsh Posté le 07-08-2007 à 21:32:06    

pourquoi ne pas faire un file_get_contents et de regarder le contenu recuperé ? mais ça risque de ramer.

Reply

Marsh Posté le 07-08-2007 à 21:39:19    

file_get_contents()? Mais ça ne résoud pas le problème, on ne pourra savoir que si le serveur est connecté à internet de cette manière et non pas le client.
A mon avis ce n'est possible qu'en JS.
Il serait, par exemple, possible de tenter de charger une image sur la page, style logo google. Ensuite avec l'evénemment OnError() on peut déduire si l'utilisateur à un accès à internet ou pas et agir en conséquence.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 08-08-2007 à 15:20:36    

le hic c'est que le javascript je connais pas trop, tu peux m'en dire plus stp ?

Reply

Marsh Posté le 08-08-2007 à 15:29:16    

Il suffit de faire une requete ajax.
Si le contenu retourné n'est pas de taille > 0 ou autre erreur (voir la doc), ne pas afficher le champ.

Reply

Marsh Posté le 11-08-2007 à 12:20:24    

Sauf qu'en ajax, tu ne peux pas faire de requete sur un autre domaine que le tien avec la configuration par defaut du navigateur (protection du navigateur, pour eviter le cross-site scripting).

Reply

Marsh Posté le 11-08-2007 à 14:49:19    

Oui mais la on ne vérifie plus si l'ordinateur client peut accèder au net... On en revient donc au même problème. C'est pourquoi je proposait de faire le teste avec une image.

 

Quelque chose de ce genre :

Code :
  1. <img src="http://www.google.fr/intl/fr_fr/images/logo.gif" alt="" style="display:none;" onerror="pasInternet()" />
 

avec un script js :

 
Code :
  1. function pasInternet()
  2. {
  3.    document.getElementById("IdDuBlocAMasquer" ).style.display ="none";
  4. }


Message édité par dwogsi le 11-08-2007 à 14:51:34

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 11-08-2007 à 14:49:19   

Reply

Marsh Posté le 11-08-2007 à 14:55:01    

en gros,
étape 1 : le doc HTML charge une url externe, un script JS (pas forcément ajax) demande l'étape 2 au serveur interne avec le résultat de la demande d'url externe en param
étape 2 : ben tu sais si y'a accès au net ou pas ...
 
pour l'étape 1, l'url à charger sera un script JS qui contient une variable, on teste la valeur de la variable et roulez jeunesse ...
 
edit : l'idée de dwogsi est bonne aussi


Message édité par TheRom_S le 11-08-2007 à 14:56:06

---------------
The Rom's, à votre service
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed