Page 1 sur 1

In_Array LIKE %...% ?

Posté : 27 nov. 2016, 16:13
par Couin
Couin !!!

Voilà, une partie de ma page php doit être cachée si celui qui la consulte n'est pas sur une IP en particulier (celle du WAN du boulot).

Le serveur est physiquement derrière une livebox qu'on a au boulot ,mais qui est indépendant du réseau et connexion internet de ceux qui consultent la page.

Seulement voilà, moi, sur un pc qui est sur le même LAN que le serveur, je consulte avec une IP du genre 192.168.0.101 .
Je pourrais mettre l'ip directement, du pc , mais il se peut que la page puisse devenir consultable par d'autres utilisateurs (un prestataire) qui est sur ce même LAN . Donc le filtre doit laisser passer si l'ip client est 192.168.0.xxx .

J'ai un array et un if in_array , mais évidement , si je mets pas une ip complète, ca marche pas .

Voici mon code :
La page ip.php dans laquelle je défini la liste d'ip que je veux autoriser :

Code : Tout sélectionner

<? $ip = array( '89.188.87.57' ,'192.168.0' ,'127.0.0.1' ); $yourip = $_SERVER["REMOTE_ADDR"]; ?>
Et la page du script, qui appelle la page ip.php :

Code : Tout sélectionner

<? require "./ip.php"; if ( in_array($yourip,$ip)) { ?> /// Tout ce qui doit être affiché si IP est parmis celle listées ci dessus <? } else { ?> <br>L'accès n'est pas autorisé depuis votre IP (<? echo $yourip; ?>) <? } ?>
Il faudrait un truc du genre

Code : Tout sélectionner

<? if ( in_array($yourip LIKE %'$ip'%)) { ?>
Evidement avec ce code , je me fais envoyer bouler lol

Si quelqu'un a une idée :)

Merciii

Re: In_Array LIKE %...% ?

Posté : 27 nov. 2016, 16:30
par or 1
if($yourip == "89.188.87.57" || preg_match("/$192\.168\.0\.\d+^/", $yourip))

Re: In_Array LIKE %...% ?

Posté : 27 nov. 2016, 21:52
par Couin
Hello

Merci pour cette réponse, mais cela ne fonctionne :(
Je n'arrive pas à comprendre malgré recherche (pas évident de chercher ^ et $ sur google cependant) , les justement ^et $ \/ #de preg_match pour voir si j'arrive à corriger :(
En gros j'arrive pas à piger comment marche cette fonction :(

MErki :)

Re: In_Array LIKE %...% ?

Posté : 27 nov. 2016, 23:32
par or 1
preg_match("/^192\.168\.0\.\d+$/", $yourip)
dans le bon sens, cela devrait aller mieux.

Re: In_Array LIKE %...% ?

Posté : 27 nov. 2016, 23:34
par or 1
ou plus rapide
strpos($yourip, "192.168.0.") !== false

Re: In_Array LIKE %...% ?

Posté : 29 nov. 2016, 21:20
par Couin
Hello :)

Parfait avec la solution rapide :)

Merci beaucoup !