Vous n'êtes pas identifié(e).
Pages : 1
Bonjours tout le monde,
Je pose une question au bar parce que je ne sais pas où la poser. Le bon modérateur la déplacera au bon endroit, je suppose… Merci à lui.
Il y a quelque temps, à l’occasion d’une étude des WebSockets, j’ai repris un bout de code PHP faisant office de serveur. Aujourd’hui, je voudrais utiliser les WebSockets “pour de vrai”
Le serveur se lance en ligne de commande. Pour les évaluations, l’adresse IP et le numéro de port étaient codés en dur. Après quelques modifications, ils sont passés en paramètres. Mon problème est que je pars du postulat que l’utilisateur final ne connaîtra probablement pas grand-chose à Linux, voire aux systèmes d’exploitations en général. Or, le paramètre "adresse" passé à la commande ne peut malheureusement pas être "localhost", ce qui aurait beaucoup simplifié, mais doit être l’adresse IP locale de la machine qui fera office de serveur. Pour nous, un petit ifconfig serait suffisant mais il faut avoir les droits de root….
Ma question quelles sont les quelques lignes de PHP qui permettraient de connaître cette adresse ?
Une idée ?
Merci pour l’attention que vous aurez portée à ce post, et à la vôtre (c’est ma tournée !).
Edit WarLocG 30-05-2019: Renommé le sujet comme résolu.
Hors ligne
Analiser les contenus des variables suivantes :
[== PHP ==]
$route=file_get_contents("/proc/net/route");
$net=file_get_contents("/proc/net/fib_trie");
J’ai l'impression que c'est possible, mais l'avis d'un coutumier des réseaux serait le bienvenu...
Merci et à pluche...
Hors ligne
Je n'y connais rien en PHP mais si tu utilise hostname -I (attention un i minuscule sur Archlinux et i Majuscule sur Debian) tu as ton adresse IP locale sans droit root.
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Merci Gourou,
Je répugne un peu à utiliser exec() ou fonctions consœurs et particulièrement pour lancer une commande shell, mais c'est bien, Dans mon cas, cette commande me retourne les adresses des deux interfaces, il me faudrait donc un coup de "route" pour trouver la bonne. Mais c'est bien, c'est une ressource supplémentaire...
Edit: supprimer une répétition.
Dernière modification par PatSer (17-11-2017 17:53:26)
Hors ligne
Salut salut,
En PHP, pour éviter de lancer des exec (tu fais bien de t'en méfier ) tu peux utiliser
$monIPlocale = getHostByName(getHostName());
Hors ligne
Merci Archer. Je vais vérifier de ce pas, mais...
Plouf, perdu ! L'adresse retournée est celle de "localhost", soit 127.0.0.1.
Vincent Bernat propose la commande shell :
[== shell ==]
ip route get 1.1.1.1
Qui dans mon cas donne :"1.1.1.1 via 192.168.0.1 dev wlp1s0 src 192.168.0.4". La dernière adresse IP est celle cherchée. Mais je ne lui avais pas parlé d'éviter une commande shell...
Merci à vous tous
Hors ligne
Ah, c'est a cause de ton fichier /etc/hosts
Une autre facon de faire est d'utiliser la variable $_SERVER['REMOTE_HOST']
Exemple : je crée un fichier index.php qui contient
<?php
echo "***";
echo $_SERVER['REMOTE_ADDR'];
echo "***";
?>
Ca va me donner l'IP locale de la machine qui visite la page, donc si je la visite depuis mon serveur, ça me donne ceci :
Hope it helps
Hors ligne
Merci Archer. Là, pas la peine d'essayer : le serveur HTTP ne peut garnir ce champ car le script est lancé en ligne de commande .
Merci encore.
Hors ligne
Une autre facon de faire est d'utiliser la variable $_SERVER['REMOTE_ADDR'];
A travers internet, sur un serveur distant cette ligne retourne seulement l'IP public.
En local 127.0.0.1 il me semble...
$_SERVER['REMOTE_HOST'] par contre ça m'intrigue, je ne l'ai jamais utilisé...
"Un peu répété plusieurs fois fait beaucoup." Benjamin Franklin
Hors ligne
Salut tous,
Hors sujet... Comment fait-on pour déclarer un sujet "clos" ou "résolu" ???
Merci.
Hors ligne
Salut tous,
Hors sujet... Comment fait-on pour déclarer un sujet "clos" ou "résolu" ???
Merci.
Juste éditer le poste initial et mettre résolu dans le titre.
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Pages : 1