user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 17-11-2017 03:19:05

PatSer
Membre

[résolu][PHP]De la technique, au bar...

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” tongue

    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 !). stone

Edit WarLocG 30-05-2019: Renommé le sujet comme résolu.

Hors ligne

#2 17-11-2017 08:52:17

PatSer
Membre

Re : [résolu][PHP]De la technique, au bar...

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

#3 17-11-2017 11:06:25

IceF0x
#! Gourou Linux

Re : [résolu][PHP]De la technique, au bar...

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

#4 17-11-2017 17:49:07

PatSer
Membre

Re : [résolu][PHP]De la technique, au bar...

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

#5 17-11-2017 17:54:24

Archer
Membre

Re : [résolu][PHP]De la technique, au bar...

Salut salut,

En PHP, pour éviter de lancer des exec (tu fais bien de t'en méfier big_smile) tu peux utiliser

$monIPlocale = getHostByName(getHostName());

Cthulhu

Hors ligne

#6 17-11-2017 19:08:41

PatSer
Membre

Re : [résolu][PHP]De la technique, au bar...

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

#7 17-11-2017 19:41:25

Archer
Membre

Re : [résolu][PHP]De la technique, au bar...

Ah, c'est a cause de ton fichier /etc/hosts wink

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 :
obzUDb3.png
Hope it helps wink

Hors ligne

#8 17-11-2017 20:35:20

PatSer
Membre

Re : [résolu][PHP]De la technique, au bar...

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 sad .

Merci encore.

Hors ligne

#9 19-11-2017 03:22:26

JeanCharles
Membre

Re : [résolu][PHP]De la technique, au bar...

Archer a écrit :

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

#10 20-11-2017 15:39:03

PatSer
Membre

Re : [résolu][PHP]De la technique, au bar...

Salut tous,

    Hors sujet... Comment fait-on pour déclarer un sujet "clos" ou "résolu" ???

    Merci.

Hors ligne

#11 20-11-2017 20:24:57

IceF0x
#! Gourou Linux

Re : [résolu][PHP]De la technique, au bar...

PatSer a écrit :

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

Pied de page des forums