Je cherche à vérifier si dans ma table (access) mes adresses appartiennent aux plages d'adresses privées ou non.
Connaîtriez-vous une fonction permettant cela ?
Je cherche à vérifier si dans ma table (access) mes adresses appartiennent aux plages d'adresses privées ou non.
Connaîtriez-vous une fonction permettant cela ?
A ma connaissance non.
Tu n'as plus qu'à tester les adresses sur les plages privées...
Que veux-tu dire?Envoyé par vever88
A+
Bonjour,
Concrètement: les plages d'adresses ip privées sont 10.0.0.0 à 10.255.255.255, 172.16.0.0 à 172.31.255.255 et 192.168.0.0 à 192.168.255.255 .Envoyé par Immobilis
J'ai une table dans laquelle j'ai des adresses ip. Et je souhaiterais, par exemple, les ecrire en rouge si ce sont des adresses privées et en vert si elles ne le sont pas.
Avec la base de donnée, ça me parait difficile, avec le langage de présentation par dessus, je pense que c'est faisable non ? Genre tu casses la chaîne en 4 en prenant les points comme séparateurs puis tu fais les tests sur les différents nombres pour déterminer s'il s'agit d'adresses privées ou non...
de ta proposition, l'idée est bonne
Mais comment cassée la chaine et comparer chaque "morceaux"
Ha zut, on est sur le forum ASP, là en PHP, ça serait assez simple avec explode(), mais en ASP aucune idée. J'ai vu le message en passant sur les forums et je l'avais regardé par curiosité. Désolé de ne pas pouvoir t'aider plus avant.
Merci tout de même dans ton aide, je vais chercher si je ne trouve pas quelque chose de semblable.
++
apparemment il y a une correspondance entre explode() [php] et split() [asp]
la fonction split sert en effet à découper une chaine de caractères selon un caractère spécifié et de stocker le résultat dans un tableau.
Cela devrait te permettre de faire ce que tu veux.
D'accord,
Je commence donc parEt mes adresses sont en IPv4 donc mon tableau à 4 colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part tbaddr=split(adresse,".")
Comment je fais pour selectionner le 1ère colonne puis la 2ème ... ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 tbadr(0) ' pour la première case tbadr(1) ' pour la seconde case ...
Je viens de taper le code suivantIl ne marche pas tout à fait, il me sort que toutes mes adresses sont privées alors que ce n'est pas le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 '_________________________________________________________________________________________________________________________ ' Private Function fncPrivateAddr(strAddr) dim tbaddr dim prvaddr prvaddr=false tbaddr=split(strAddr,".") If tbaddr(0)=10 Then prvaddr=true ElseIf tbaddr(0)=172 Then If 16<tbaddr(1)<31 Then prvaddr=true End If ElseIf tbaddr(0)=192 and tbaddr(1)=168 Then prvaddr=true Else prvaddr=false End IF fncPrivateAddr=prvaddr End function '_________________________________________________________________________________________________________________________ ' DO UNTIL RS.EOF strAddr=RS("adresse") If instr(fncPrivateAddr(strAddr),"false") = 0 Then Response.Write("<font color=#FF33FF>"&RS(0)&"</font><BR>") Else Response.Write("<font color=#3300FF>"&RS(0)&"</font><BR>") End IF RS.MoveNext LOOP
Pouriez-vous critiquer mon code pour me dire ce qu'il y a de trop, ce qui manque, et si vous le voyez, ce qui pose problème.
essaie dans ton code de faire seulement ceci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DO UNTIL RS.EOF strAddr=RS("adresse") If fncPrivateAddr(strAddr) = false Then Response.Write("<font color=#FF33FF>"&RS(0)&"</font><BR>") Else Response.Write("<font color=#3300FF>"&RS(0)&"</font><BR>") End IF RS.MoveNext LOOP
Bonjour,
si tu testes ton code, tu vas te rendre compte que toutes les adresses commençant par 172 sont considérées comme privées. En effet, ta condition
renvoie toujours True.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If 16<tbaddr(1)<31 Then
Je m'explique : tu demandes au langage d'évaluer la condition 16<tbaddr(1). Celle-ci va renvoyer True (donc -1) ou False (donc 0) en fonction de la valeur de tbaddr(1). Ensuite, ce -1 ou ce 0 va être comparé à 31. Comme -1 et 0 sont tous deux inférieurs à 31, ta condition
va toujours renvoyer True.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 16<tbaddr(1)<31
Tu devrais plutôt écrire
D'ailleurs, d'après ton premier message, ce serait plutôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If 16<tbaddr(1) And tbaddr(1)<31 Then
si j'ai bien compris ce que tu veux faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If 16<=tbaddr(1) And tbaddr(1)<=31 Then
A tester bien sûr.
pour la remarque.
En effet c'est plus juste.
Merci d'avoir jeté un coup d'oeil
++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager