[RESOLU] In_Array LIKE %...% ?

Avatar du membre
Eléphant du PHP | 224 Messages

27 nov. 2016, 16:13

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
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Mammouth du PHP | 2703 Messages

27 nov. 2016, 16:30

if($yourip == "89.188.87.57" || preg_match("/$192\.168\.0\.\d+^/", $yourip))

Avatar du membre
Eléphant du PHP | 224 Messages

27 nov. 2016, 21:52

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 :)
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Mammouth du PHP | 2703 Messages

27 nov. 2016, 23:32

preg_match("/^192\.168\.0\.\d+$/", $yourip)
dans le bon sens, cela devrait aller mieux.

Mammouth du PHP | 2703 Messages

27 nov. 2016, 23:34

ou plus rapide
strpos($yourip, "192.168.0.") !== false

Avatar du membre
Eléphant du PHP | 224 Messages

29 nov. 2016, 21:20

Hello :)

Parfait avec la solution rapide :)

Merci beaucoup !
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen: