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 :

Limitation à un intervalle d'adresse IP


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Limitation à un intervalle d'adresse IP
    Bonjour à tous,

    Je suis tout nouveau sur le forum alors je vais tout de même me présenter un peu... Seyll Cédric, je suis de Arlon et je suis indépendant dans la création de site internet et service d'impression...

    Je me tourne vers vous car j'ai une question à vous poser, vous professionnel de php...

    Je viens de réaliser un site E-commerce mais la société qui gère les payements en lignes sur cartes de crédit me demande une limitation d'accès à l'interface de réponse immédiate...

    Ce que je peux comprendre vu qu'il faut sécuriser au maximum le site et donc ne pas permettre a une personne mal attentionné ne réponde à la place de de la société qui gère les payements... Pour ne pas que le commerçant pense avoir reçu l'argent, expédie l'article mais en fin de compte n'ai rien reçu du tout...

    Il m'on donc donné un code à implanté dans le site, mais leur exemple de code est en langage Perl mais mon site en PHP... Cela ne colle donc pas et mon site me sort des erreurs...

    Voici le code qu'il me demande d'implanter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    if ($ENV{'REMOTE_ADDR'} !~ /^\Q217.117.193.\E/)
    {
    print "\n\nnot allowed\n";
    exit 0;
    }

    Comme dis, ce code ne fonctionne donc pas vu que la syntaxe n'est pas la bonne, j'ai donc "essayé" avec une synthaxe php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
     
    /*** IP pour Cetrel ***/
     
    if (eregi ("217\.117\.193\.[1-255]", $HTTP_SERVER_VARS["REMOTE_ADDR"]))
    {
    print "not allowed";
           exit();
    }
    Mais je penses avoir fais une erreur, mais je ne sais dire ou... en effet, si je test mon fichier php, j'arrive directement sur une page blanche alors que je devrais d'abord avoir un affichage du texte non ?

    Je vous dis merci d'avance à tous !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    doit faire quoi selon toi ?

    ensuite je suis plus que suspicieux vis à vis de ton intervalle [1-255]

    ton expression régulière devrait plutot ressembler à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ^(([1-9]|[1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))$
    personnellement je passerais plutot par un explode sur l'IP sinon tant au'a le gérer avec une regEx autant le faire en HTaccess


    [edit]code modifié j'avais oublié les centaines ^^

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Oh, du code déprécié (eregi génèrera une erreur E_DEPRECATED sur les versions >= 5.3 en vue de sa future suppression, à remplacer par preg_match, et $HTTP_SERVER_VARS l'est depuis les versions 5 car son existence est liée à la configuration du paramètre register_long_arrays, à remplacer par $_SERVER).

    Ça ne marche pas avec l'extension PCRE justement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!preg_match('/^\Q217.117.193.\E/', $_SERVER['REMOTE_ADDR'])) {
        print "\n\nnot allowed\n";
        exit 0;
    }
    Mais étant donné qu'on accepte toute la place 217.117.193.1/255 autant ne pas tester la fin. D'autant plus qu'avec [1-255], vous n'autorisiez, à la fin de votre motif que la présence d'un seul chiffre parmi 1, 2 et 5.

    Du coup, en réalité, l'utilisation d'une expression régulière n'est pas du tout nécessaire. On peut effectuer le même test avec strpos par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (strpos($_SERVER['REMOTE_ADDR'], '217.117.193.') !== 0) {
        print "\n\nnot allowed\n";
        exit 0;
    }

Discussions similaires

  1. Limiter la bande par adresse IP
    Par amizone dans le forum Administration
    Réponses: 0
    Dernier message: 07/10/2014, 17h56
  2. limite nombre d'adresse email dans un mail
    Par popofpopof dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/02/2008, 12h34
  3. limite de l'intervalle du controle timer
    Par louzar dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/07/2007, 11h13
  4. [Mail] Mail() limit d'envoi et intervalles secondes
    Par thibotus01 dans le forum Langage
    Réponses: 1
    Dernier message: 03/05/2006, 13h34
  5. [JSlider] Limiter l'utilisateur à un intervalle donné
    Par barbu0055 dans le forum Composants
    Réponses: 7
    Dernier message: 25/08/2005, 18h42

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