11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

TopGan ha scritto:

ora come si fa a capire ip che invece dovrebbe essere suddiviso?

Se non hai la necessità di convertire l'IP in numero intero, allora puoi non convertirlo affatto e scriverlo nel database su un campo varchar, così come ti viene restituito da context.Request.UserHostAddress.

Puoi fare così: elimina del tutto il metodo GetIPAddressValue e resta solamente con GetClientIPAddress, che modificherai così:

public static string GetClientIPAddress(this HttpContext context){
return context.Request.UserHostAddress;
}

Ora il metodo è diventato talmente semplice che potresti anche farne a meno. Se il tuo scopo è solo quello di ottenere l'ip dell'utente, allora dalla pagina cshtml ti basterà scrivere così:
string indirizzoIP = Request.UserHostAddress;


ciao,
Moreno

Enjoy learning and just keep making
81 messaggi dal 30 giugno 2013
www.topgan.it
Ciao Moreno e davvero Grazie mille volte
Pero io voglio convertirlo l'IP in un numero intero per salvarlo nel database in modo che occupi meno spazio e che rimanga anche più protetto in quando non immediatamente riconoscibile.
Ma un domani per qualsiasi eventualità mi serve poterlo decifrare questo numero intero salvato nel database per riavere l'IP di chi si era registrato al sito.
Come posso fare per decifralo?
Modificato da TopGan il 24 luglio 2014 19.06 -
Modificato da TopGan il 24 luglio 2014 19.07 -

Giuseppe TopGan
Admministratore & Creatore
https://www.topgan.it & https://topgan.altervista.org/forum
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
puoi riconvertirlo con una funzione tipo questa, anch'essa definita nella classe Extensions.
public static string GetIPAddress(this long clientIPAddress) {
  var ottetti = new string[4];
  for (var i = ottetti.Length-1; i>=0; i--){
    ottetti[i] = (clientIPAddress & 0xFF).ToString();
    clientIPAddress = clientIPAddress >> 8;
  }
  return string.Join(".", ottetti);
}

La usi così:
long numero = 3232264190L; //questo l'hai ottenuto dal DB
string indirizzoIP = numero.GetIPAddress(); //la funzione restituirà 192.168.111.254


TopGan ha scritto:

Pero io voglio convertirlo l'IP in un numero intero per salvarlo nel database in modo che occupi meno spazio

Ok ma per questioni di praticità lo memorizzerei come stringa. Almeno, se ti capita di esaminare tutti i record della tabella, potrai vedere l'IP già in un formato leggibile.
Risparmiare qualche byte, in questo caso, potrebbe non portarti alcun beneficio tangibile.

ciao,
Moreno
Modificato da BrightSoul il 26 luglio 2014 00.33 -

Enjoy learning and just keep making
81 messaggi dal 30 giugno 2013
www.topgan.it
Ciao Moreno sei un tesoro e non finirò mai di ringraziarti.
Pero il codice mi da questo errore:
Errore di compilazione

Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente. 

Messaggio di errore del compilatore: CS1518: È prevista una classe, un delegato, un'enumerazione, un'interfaccia o un struct.

Errore nel codice sorgente:


Riga 10: /// Summary description for RestituisceIP
Riga 11: /// </summary>
Riga 12: public static string GetIPAddress(this long clientIPAddress) {
Riga 13:   var ottetti = new string[4];
Riga 14:   for (var i = ottetti.Length-1; i>=0; i--){

File di origine: g:\Siti Web\*****\App_Code\RestituisceIP.cs    Riga: 12 

mi dice che ci vuole una classe come faccio a risolverlo?
Ti metto il codice che ho inserito nella pagina RestituisceIP.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Linq;

/// <summary>
/// Summary description for RestituisceIP
/// </summary>
public static string GetIPAddress(this long clientIPAddress) {
  var ottetti = new string[4];
  for (var i = ottetti.Length-1; i>=0; i--){
    ottetti[i] = (clientIPAddress & 0xFF).ToString();
    clientIPAddress = clientIPAddress >> 8;
  }
  return string.Join(".", ottetti);
}

Giuseppe TopGan
Admministratore & Creatore
https://www.topgan.it & https://topgan.altervista.org/forum
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego :)
Il codice che ti ho inviato non va in un nuovo file, ma dovresti inserirlo nella classe Extensions, in cui si trovano anche le altre funzioni dell'esempio di Riccardo.

ciao,
Moreno
Modificato da BrightSoul il 26 luglio 2014 11.08 -

Enjoy learning and just keep making
81 messaggi dal 30 giugno 2013
www.topgan.it
Ciao Morene e davvero GRAZIE GRAZIE GRAZIE non finirò mai di ringraziarti
Ora funziona tutto alla PERFEZIONE
Sempre a disposizione se posso essere utile in qualcosa.
Cordialmente ti saluto e ti auguro una bellissima serata

Giuseppe TopGan
Admministratore & Creatore
https://www.topgan.it & https://topgan.altervista.org/forum

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.