Ottimo script!

Ormai programmano tutti... ma la professionalità appartiene a pochi
103 messaggi dal 04 ottobre 2010
Volevo chiedere, per caso ci sta un qualcosa di valido anche per l'IPv6, o è memorizzato diversamente e non ha bisogno di un parsing simile? Dati i 4 ottetti ed il 256, suppongo che questa parte di codice possa risolvere solo IPv4... Dato che si sta parlando tanto di IPv6 in questo periodo, qualcosa mi dice che può essere utile sapere se è possibile usare una conversione simile per il nuovo protocollo. Grazie in anticipo
La risoluzione dell'IP tramite la classe Dns serve proprio a questo, ovvero a gestire tutte le possibili casistiche, anche IPv6.

Lo script funziona sia con IPv4 che IPv6, per esempio su server web con Windows 2008 e IPv6 attivato, tanto per capirci.

Provare per credere...

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
81 messaggi dal 30 giugno 2013
www.topgan.it
Ciao in una pagina cshtml di registrazione come posso usare questo per salvare anche ip nel database della persona? puoi farmi un esempio di codice da inserire nella pagina?

Giuseppe TopGan
Admministratore & Creatore
https://www.topgan.it & https://topgan.altervista.org/forum
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, non dovresti farlo nella view .cshtml ma nella action che riceve i dati del POST. Subito prima di salvare l'utente nel database, valorizza la sua proprietà IndirizzoIp (o altro nome che hai scelto di dargli) con il valore ottenuto dallo script di Riccardo.

Enjoy learning and just keep making
81 messaggi dal 30 giugno 2013
www.topgan.it
Ciao e scusa ancora
Se non ho capito male verrebbe una cosa del genere:

@{
public static class Extensions
{
public static long GetClientIPAddress(this HttpContext context)
{
return context.Request.UserHostAddress.GetIPAddressValue();
}

public static long GetIPAddressValue(this string clientIPAddress)
{
long value = 0L;

if (clientIPAddress == null)
{
throw new ArgumentNullException("clientIPAddress");
}

// Risolvi l'indirizzo IP del client
IPAddress address = Dns.GetHostAddresses(clientIPAddress)
.FirstOrDefault(
x => x.AddressFamily.Equals(AddressFamily.InterNetwork));

// Genera il valore numerico (intero a 64 bit)
if (address != null)
{
try
{
string[] octets = address.ToString().Split(new char[] { '.' });

value = Math.Abs(
(Int64.Parse(octets[3])) +
(Int64.Parse(octets[2]) * 256L) +
(Int64.Parse(octets[1]) * 256L * 256L) +
(Int64.Parse(octets[0]) * 256L * 256L * 256L));
}
catch (Exception)
{
// Ritorna il valore di default
value = 0L;
}
}

return value;
}
}
// Inizializzare le variabili di pagina generali
var email = "";
var password = "";
var confirmPassword = "";
var displayname = "";
var urlfoto ="/Avatar/Nullo.jpg";

var indirizzoIP = this.Context.GetClientIPAddress();

// una volta fatto tutte le verifiche e alla fine salvare nel database

db.Execute("INSERT INTO UserProfiles (Email,UrlFoto,DisplayName,IP) VALUES (@0,@1,@2,@3)", email,urlfoto,displayname,indirizzoIP);

}

Giuseppe TopGan
Admministratore & Creatore
https://www.topgan.it & https://topgan.altervista.org/forum
81 messaggi dal 30 giugno 2013
www.topgan.it
Ciao nessuno mi dice se è giusto? e se non lo è qualcuno mi aiuta postando quello giusto?
Infinitamente GRAZIE

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.