"We are back" « oc.at

php: format für ip um sie in db speichern (ip2long?)

kleinerChemiker 19.01.2005 - 18:30 860 12
Posts

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4307
wie speichere ich am besten eine ip in einer db?
ich könnte ip2long nehmen, sieht recht gut aus. nur was für einen zahlenbereich brauch ich dann in mysql?
oder gibts bessere möglichkeiten?

tia

MIK

edit: solved: bei ip2long ist wohl INT das beste. werte sind auch negativ.
Bearbeitet von kleinerChemiker am 19.01.2005, 20:30

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
unsigned int am besten (ist 32bittig, genauso wie die ip).

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4307
hmm, sicher?
ich hab ein paar ip's getestet, da kamen negative werte als ergebnis auch vor. daher nämlich auch die frage.
oder kommt das nur vor, wenn die ip ungültig ist. hab nämlich ip's wie: 255.255.255.255 genommen.

othan

Layer 8 Problem
Avatar
Registered: Nov 2001
Location: Switzerland
Posts: 4236
Musst Du die IP noch irgendwie verarbeiten können?

ich habs auf die Luschen-Variante gemacht als string.

Code: PHP
<?

$server = "localhost";
$user = "user";
$pass = "password";
$db = "database";

$dbh = mysql_connect($server, $user, $pass);
// if($dbh) {echo "mySQL-Verbindung erfolgreich";}

ECHO "<br><br>";


$ip = getenv("REMOTE_ADDR");
$time = date("d.M Y H:i:s", (time() + 25200));

ECHO "$ip vom $time";
ECHO "<br><br>";


$query = "INSERT INTO ipadressen ( date, ip ) VALUES ( '$time', '$ip' ) " ;

$erg = mysql_db_query($db, $query, $dbh);

if ($erg) {echo "Anweisung ausgeführt!";}


?> 

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4307
ich muß sie zwar nicht verarbeiten können, aber als string ists unschön, außerdem unnötiger speicherverbauch. auch ist dann eine suche oder filterung nach ip's schwieriger.

Luki

UNDER CONSTRUCTION
Avatar
Registered: Feb 2002
Location: 127.0.0.1
Posts: 2347
warum soll die suche oder filterung dann schwieriger sein?

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4307
naja, ok, die suche vielleicht nicht. aber ein string braucht sicher mehr speicher als eine zahl.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von Luki
warum soll die suche oder filterung dann schwieriger sein?
Warum sollte sie nicht schwieriger sein?

IP-Adressen werden normalerweise nach Bitmasken gefiltert, und das geht klarerweise mit einem Zahlenwert um einiges bequemer.

Zu den negativen Zahlen: Als negativer Wert erscheint wohl jede IP-Adresse x.y.z.a mit x>=128. Ist eigentlich egal, solang du einfach Bitmasken verwendest, um Teile davon zu extrahieren oder sie unverändert durchreichst.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Und mit SQL kann man nach Bitmasken suchen?

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von Ringding
http://dev.mysql.com/doc/mysql/en/Bit_functions.html

/ und % würden auch reichen.

Hm, die bitweisen Operatoren sind scheinbar eine MySQL-Erweiterung und nicht im ANSI SQL enthalten. Zumindest im SQL/92 sind sie definitiv noch nicht drin.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von that
Hm, die bitweisen Operatoren sind scheinbar eine MySQL-Erweiterung[...]
Jo, vermute ich auch. Trotzdem kann man sie auch durch / und % nachbilden.

EDIT: Seit wann quoted man den ganzen Post, wenn man direkt darauffolgend schreibt? :p

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25551
Zitat von that
Hm, die bitweisen Operatoren sind scheinbar eine MySQL-Erweiterung und nicht im ANSI SQL enthalten. Zumindest im SQL/92 sind sie definitiv noch nicht drin.
seitdem wir damals drüber geredet haben (und du gemeint hast es ist nicht möglich und ich nachgeschaut hab und gesehen hab es ist möglich :D) komm ich gar nicht mehr weg von bitoperatoren. jetzt brauch ich nur mehr einen const table in der mysql konfiguration, damit die db auch schön konsistent bleibt ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz