Ip adres in een Mysql database opslagen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Webmaster Robbe

Webmaster Robbe

14/03/2014 20:31:57
Quote Anchor link
Hoe kan ik een ip adres van een speler die op mijn site geregistreerd is, opslagen in mijn mysql database?
Dus bij het registreren, moet je het ip adres van die speler nemen. En hem dan opslagen in de databse.

Alvast bedankt!

- Robbe
 
PHP hulp

PHP hulp

24/11/2024 22:42:14
 
Ivo P

Ivo P

14/03/2014 20:45:27
Quote Anchor link
$_SERVER['REMOTE_ADDR'] bevat het ip adres

En opslaan in een database gaat met een INSERT query (of UPDATE query)
 
Webmaster Robbe

Webmaster Robbe

14/03/2014 20:49:09
Quote Anchor link
Dan ziet mijn php code, als ik iemand registreer en mijn database invul er dus als volgt uit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query("INSERT INTO leden (username, password, email, validated, ip ) VALUES ('" . $myusername . "', '" . $mypass1 . "', '" . $myemail . "', '0', '".$_SERVER['REMOTE_ADDR']."')");


- Robbe
Gewijzigd op 14/03/2014 20:49:48 door Webmaster Robbe
 
Ivo P

Ivo P

14/03/2014 20:50:50
Quote Anchor link
ja,

waarbij $mypass1 je gehashte password is, en $myusername met mysql_real_esape_string() beveiligd is, net als $myemail
 
Webmaster Robbe

Webmaster Robbe

14/03/2014 20:59:09
Quote Anchor link
Ja dat wist ik al :-)

--> En hoe moet ik die ip in mijn mysql steken?

Ip varchar 13

of anders?
 
Ivo P

Ivo P

14/03/2014 21:02:55
Quote Anchor link
een ip in de vorm 255.255.255.255 is 15 tekens lang....

een IPv6 is ruim langer. http://nl.wikipedia.org/wiki/Internet_Protocol_versie_6

32 hex tekens, met 7 scheidings : dus 39 tekens lang
 
Webmaster Robbe

Webmaster Robbe

14/03/2014 21:03:45
Quote Anchor link
dus moet ik:

ip varchar 39

nemen?
 
- Ariën  -
Beheerder

- Ariën -

14/03/2014 22:30:30
Quote Anchor link
Ik zou dat wel adviseren.
 
Webmaster Robbe

Webmaster Robbe

14/03/2014 23:14:03
Quote Anchor link
Ik snap niet wat ik verkeerd doe, maar, ik kan het ip-adres dat in mijn databse staat, niet weergeven.

Hier haal ik de gegevens uit mijn database en geef ik ze een variable mee:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$sql
="SELECT * FROM leden WHERE recid=".$_SESSION['userid'];
    $result=mysql_query($sql);
    if($result == false){}
    else{
        while($row = mysql_fetch_array($result)){
            $this_username=$row['username'];
            $this_email=$row['email'];
            $this_ip=$row['ip'];

?>


En hier geef ik ze weer op de pagina. Weet er iemand waar mijn fout zit? Ik vind ze niet :(

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Dit account is geregistreer vanaf ip: <font color="green"><?echo $this_ip();?><b></b></font>
 
Dos Moonen

Dos Moonen

14/03/2014 23:23:56
Quote Anchor link
1) stap over op de php/mysqli extensie, deze vervangt de php/mysql extensie die je nu gebruikt en is in tegenstelling tot php/mysql niet depricated. (wordt uit de PHP core verwijderd op een gegeven moment.)
2) gebruik prepared statements als je php/mysqli gaat gebruiken, als je php/mysql blijft gebruiken gooi dan mysql_real_escape_string() over $_SESSION['userid'] heen.
3) haal de haakjes na $this_ip weg.
Gewijzigd op 14/03/2014 23:24:31 door Dos Moonen
 
Erwin H

Erwin H

14/03/2014 23:24:04
Quote Anchor link
$this_ip is een variabele, geen functie.
 
Webmaster Robbe

Webmaster Robbe

14/03/2014 23:41:07
Quote Anchor link
Oke thx, nu werkt hij wel! :)

- Robbe
 
Ward van der Put
Moderator

Ward van der Put

15/03/2014 06:50:06
Quote Anchor link
Afgaande op de WHERE recid=".$_SESSION['userid'] en de echo van één $this_ip haal je maar één record op. Dan hoort de while-loop er niet in.
 
Webmaster Robbe

Webmaster Robbe

15/03/2014 11:08:00
Quote Anchor link
Maar hier wordt mijn mysql_fetch_array($result) wel beschermd :)
En dat is daar de bedoeling, om hem een (extra) bescherming mee te geven

- robbe
 
Dos Moonen

Dos Moonen

15/03/2014 11:56:52
Quote Anchor link
Een if is dan voeldoende...
 
Ivo P

Ivo P

15/03/2014 12:06:12
Quote Anchor link
en while() is effectief gelijk aan een if() in dat geval.

Maar het is wel gemakkelijker om overal resultsets met while() uit te lezen.
Dat voorkomt dat als een query aangepast wordt en er toch meerdere results gaan komen, je script hardnekkig maar 1 regel weer blijft geven.

Trouwens ook voor de gevallen waar onverwacht meerdere regels terugkomen, terwijl je er maar 1 verwachtte
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.