IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Detecter si client est en local ou a distance


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Detecter si client est en local ou a distance
    Bonjour à tous,

    J’héberge sur mon NAS Synology un site avec les images/vidéos de mes cameras de surveillance.

    Je veux pouvoir y accéder quand je suis chez moi en local, mais aussi quand je suis à l'extérieur.

    Et donc les images/vidéos que je dois charger non pas la même adresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://192.168.0.20:200/image/jpeg.cgi" width="640" height="480" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://monipdynamique:200/image/jpeg.cgi" width="640" height="480" />
    J'essaye avec ceci mais mon code ne veux pas fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	$ip = print($_SERVER['REMOTE_ADDR']);
    	echo $ip;
     
    	if (preg_match("/192/i", $ip)) {
    		echo "Un résultat a été trouvé.";
    		echo "<img src='http://192.168.0.20:200/image/jpeg.cgi' width='640' height='480' />";
    	} 
    	else {
    		echo "Aucun résultat n'a été trouvé.";
    		echo "<img src='http://monipdyn:200/image/jpeg.cgi' width='640' height='480' />";
    	}
    Je pense que c'est au niveau de preg_match, je veux verifier que mon ip contient 192.168 ?

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Il faut lui dire que 192 est le début de la chaîne : if (preg_match("/^(192)/i", $ip)) {A tester, je suis pas né avec l'art des regex.

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Inutile de passer par des regexp pour vérifier la présence d'un préfix dans une chaine, strpos va 100x plus vite:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (strpos($ip, '192.168') === 0)
      echo "{$ip} est une ip locale";

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    La solution de Benjamin fonctionne.
    Du coup je n'ai pas testé celle de Transgrohan. Désolé.

    Benjamin, les 3 =, c'est normal ou il y en a un en trop ?

  5. #5
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Je ne suis pas offusqué que tu n'ai pas essayé.
    Bien au contraire puisque la solution de Benjamin est bien plus légère et performante.

    C'est vrai qu'on à tendance à répondre à des codes de regex par des regex alors que des fois c'est utiliser une usine à gaz pour pas grand chose.

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    strpos renvoie la position de la sous chaine si elle est présente ou false sinon.
    Or false == 0 renvoie true. Il faut donc utiliser l'opérateur de comparaison stricte === qui vérifie également le type.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2009, 10h03
  2. Client/Serveur en Local sans connexion réseau
    Par ramoud dans le forum C++Builder
    Réponses: 8
    Dernier message: 05/07/2007, 14h44
  3. Detecter si Excel est installé
    Par mosquitout dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/05/2007, 18h22
  4. [CLIENT][DB2] configuration locale
    Par fabszn dans le forum DB2
    Réponses: 6
    Dernier message: 31/08/2006, 14h48
  5. [linux] socket comment savoir si est un client est d
    Par Mascos dans le forum Réseau
    Réponses: 14
    Dernier message: 04/08/2004, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo