Toon posts:

ip in database doen? [PHP]

Pagina: 1
Acties:

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Ontbrakt.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • [ti]
  • Registratie: Februari 2000
  • Niet online
$Query = "insert into tblIP (date, ip) values (Now(), \"$REMOTE_ADDR\")";

zoiets? of wat was de vraag :P

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op donderdag 18 oktober 2001 10:26 schreef [ti] het volgende:
zoiets? of wat was de vraag :P
Denk het niet :)
Ik ga voor dit antwoord:
Ik zou 'm WEL in de db proppen. Met htacces oid is het toch iets minder fijn.

  • flat
  • Registratie: Mei 2000
  • Niet online
ja zonder vraag is 't lastig een antwoord geven hè ;)

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
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:
PHP:
1
2
3
4
5
<?
$ip = getenv("REMOTE_ADDR");
$ts = time();
$result = mysql_query("INSERT INTO $table[IP] VALUES ('$ip', '$ts')");
?>

  • flat
  • Registratie: Mei 2000
  • Niet online
razor-x:
Heb ik z'n mooi icoon Flat© ?

whooops was tijdelijk :)
hehe, ja, was even een testje voor mijn nieuwe idee, maar ik moet nog wel even checken of 't eigenlijk wel mag, usericons jatten >:)
en ik zie net dat iemand 'm al weer heeft veranderd ja

"Happiness is a way of travel, not a destination."
--Roy Goodman


Verwijderd

Topicstarter
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')");
?>
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...?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
lol zo'n topic waar het antwoord al is gegeven voordat de vraag gesteld is :)

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 15-09 23:45
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 :P
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';
?>

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

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 :P
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';
?>
nice! die kende ik ook niet.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

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 :P
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';
?>
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 :)

If it ain't broken it doesn't have enough features


Verwijderd

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 :)
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? ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

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

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
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
Jah, en die wil je ook weer omzetten denk ik?
Zet jij
1212122
maar es om naar je ipadres. Wedden dat je verschillende ipadressen krijgt :P

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

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);

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
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);
En dat werkt?
1212122
kan dus

12.12.1.22
12.12.12.2
1.212.1.22

dus :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je begrijpt het niet.

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:
code:
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

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.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

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.
Kun je ook nog gebruiken voor een visit-count.

edit:
is trouwens onzin. laat maar O-)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1