- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!
zoiets? of wat was de vraag
Denk het nietOp donderdag 18 oktober 2001 10:26 schreef [ti] het volgende:
zoiets? of wat was de vraag
Ik ga voor dit antwoord:
Ik zou 'm WEL in de db proppen. Met htacces oid is het toch iets minder fijn.
"Happiness is a way of travel, not a destination."
--Roy Goodman
Op donderdag 18 oktober 2001 10:28 schreef Flat© het volgende:
ja zonder vraag is 't lastig een antwoord geven hè
// off
Heb ik z'n mooi icoon Flat© ?
whooops was tijdelijk
Verwijderd
Wat is de bedoeling?
Als het de bedoeling is om een ip in de db te pleuren kan dit zo:
1
2
3
4
5
| <? $ip = getenv("REMOTE_ADDR"); $ts = time(); $result = mysql_query("INSERT INTO $table[IP] VALUES ('$ip', '$ts')"); ?> |
hehe, ja, was even een testje voor mijn nieuwe idee, maar ik moet nog wel even checken of 't eigenlijk wel mag, usericons jattenrazor-x:
Heb ik z'n mooi icoon Flat© ?
whooops was tijdelijk
en ik zie net dat iemand 'm al weer heeft veranderd ja
"Happiness is a way of travel, not a destination."
--Roy Goodman
He hij werkt, bedankt daarvoor! Wat is het doel van die timestamp? Waarom stop je die eveneens in de database en wat kn je daarmee...?Op donderdag 18 oktober 2001 11:23 schreef daniel_hoenderdos het volgende:
Wat is de bedoeling?
Als het de bedoeling is om een ip in de db te pleuren kan dit zo:
PHP:
1 2 3 4 5 <? $ip = getenv("REMOTE_ADDR"); $ts = time(); $result = mysql_query("INSERT INTO $table[IP] VALUES ('$ip', '$ts')"); ?>
Hierdoor wordt het IP adres omgezet naar een INT, zodat je het niet als een VARCHAR(15) hoeft op te slaan.
Misschien is het een klein detail, maar ja, dat zijn toch de dingen waarmee je het mooi maakt
1
2
3
4
5
6
7
8
9
| <? // om te inserten $sql = 'INSERT INTO tabel (IP) VALUES(INET_ATON("' . $REMOTE_ADDR . '"))'; // om eruit te halen $sql = 'SELECT INET_NTOA(ip) AS ip FROM tabel'; ?> |
nice! die kende ik ook niet.Op donderdag 18 oktober 2001 17:09 schreef freak007 het volgende:
toch valt het wel op dat niemand hier de functie INET_ATON() van mysql gebruikt.
Hierdoor wordt het IP adres omgezet naar een INT, zodat je het niet als een VARCHAR(15) hoeft op te slaan.
Misschien is het een klein detail, maar ja, dat zijn toch de dingen waarmee je het mooi maakt
PHP:
1 2 3 4 5 6 7 8 9 <? // om te inserten $sql = 'INSERT INTO tabel (IP) VALUES(INET_ATON("' . $REMOTE_ADDR . '"))'; // om eruit te halen $sql = 'SELECT INET_NTOA(ip) AS ip FROM tabel'; ?>
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
maar een ip kan er toch ook zo uitzien:Op donderdag 18 oktober 2001 17:09 schreef freak007 het volgende:
toch valt het wel op dat niemand hier de functie INET_ATON() van mysql gebruikt.
Hierdoor wordt het IP adres omgezet naar een INT, zodat je het niet als een VARCHAR(15) hoeft op te slaan.
Misschien is het een klein detail, maar ja, dat zijn toch de dingen waarmee je het mooi maakt
PHP:
1 2 3 4 5 6 7 8 9 <? // om te inserten $sql = 'INSERT INTO tabel (IP) VALUES(INET_ATON("' . $REMOTE_ADDR . '"))'; // om eruit te halen $sql = 'SELECT INET_NTOA(ip) AS ip FROM tabel'; ?>
xx.xx.xx.xx
dan is het niet in de vorm van xxx.xxx.xxx.xxx
kan mysql dan nog wel de puntjes terugzetten?
anders ben je er imo niet zoveel mee
If it ain't broken it doesn't have enough features
Verwijderd
ach.. daar is later toch wel weer een functie voor te maken die alle mogelijkheden met die puntjes probeert op de juiste plek te zetten?Op donderdag 18 oktober 2001 19:09 schreef Apache het volgende:
[..]
maar een ip kan er toch ook zo uitzien:
xx.xx.xx.xx
dan is het niet in de vorm van xxx.xxx.xxx.xxx
kan mysql dan nog wel de puntjes terugzetten?
anders ben je er imo niet zoveel mee
Een ip adres bestaat uit 4 bytes. je kunt namelijk geen IP adres hebben vna 300.400.500.600, maar alleen maar getallen van 0 to 255 (=8 bits).
En om dan naar integer om te zetten werkt het zo:
1
2
3
4
5
6
7
| // voorbeeld ip adres 192.168.0.12 IPint = 0; IPint += getal[0] << 24 // 192 IPint += getal[1] << 16 // 168 IPint += getal[2] << 8 // 0 IPint += getal[3]; // 12 |
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Jah, en die wil je ook weer omzetten denk ik?Op vrijdag 19 oktober 2001 09:39 schreef drm het volgende:
Ik geloof dat jullie het niet zo goed begrijpen.
Een ip adres bestaat uit 4 bytes. je kunt namelijk geen IP adres hebben vna 300.400.500.600, maar alleen maar getallen van 0 to 255 (=8 bits).
En om dan naar integer om te zetten werkt het zo:
code:
1 2 3 4 5 6 7 // voorbeeld ip adres 192.168.0.12 IPint = 0; IPint += getal[0] << 24 // 192 IPint += getal[1] << 16 // 168 IPint += getal[2] << 8 // 0 IPint += getal[3]; // 12
Zet jij
1212122
maar es om naar je ipadres. Wedden dat je verschillende ipadressen krijgt
1
2
3
4
| getal[3] = (IPint & 0xff000000) >> 24; getal[2] = (IPint & 0x00ff0000) >> 16 getal[1] = (IPint & 0x0000ff00) >> 8 getal[0] = (IPint & 0x000000ff); |
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
En dat werkt?Op vrijdag 19 oktober 2001 10:19 schreef drm het volgende:
Wedden van niet?
code:
1 2 3 4 getal[3] = (IPint & 0xff000000) >> 24; getal[2] = (IPint & 0x00ff0000) >> 16 getal[1] = (IPint & 0x0000ff00) >> 8 getal[0] = (IPint & 0x000000ff);
1212122
kan dus
12.12.1.22
12.12.12.2
1.212.1.22
dus
Kijk nog eens naar mijn eerste snippet.
Een IP adres is opgebouwd uit 4 bytes. Die 4 bytes kun je dus in 1 dword van 4 bytes stoppen, door gewoon die bits aan elkaar te plakken:
1
2
3
4
5
6
| +----------+----------+----------+----------+
| byte 1 | byte 2 | byte 3 | byte 4 |
+----------+----------+----------+----------+
dec | 192 | 168 | 0 | 12 |
bin | 11000000 | 10101000 | 00000000 | 00001100 |
+----------+----------+----------+----------+ |
Dat integer wordt dus binair
11000000 10101000 00000000 00001100, is decimaal 3232235532
dat kan je dus gewoon weer terug rekenen
edit:
nog even bij wijze van waarom.
Dit neemt maar 32 bits ruimte per IP in.
Als je het IP als string opslaat is het maximaal 15 characters (3.3.3.3),die in MySQL dacht ik 16 bits per character kosten, (correct me if i'mn wrong) dus dat is 15 x 16 = 240 bits. scheelt dus factor 7,5
reden genoeg.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
Eventueel voor cookies etc.
Kun je ook nog gebruiken voor een visit-count.Op vrijdag 19 oktober 2001 12:55 schreef daniel_hoenderdos het volgende:
Die timestamp is om te kijken wanneer datr ip in de db is gepropt. Daarmee kun je dus controleren wanneer dat IP op je pagina is geweest etc.
Eventueel voor cookies etc.
edit:
is trouwens onzin. laat maar
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz