Ip adres in een Mysql database opslagen
Dus bij het registreren, moet je het ip adres van die speler nemen. En hem dan opslagen in de databse.
Alvast bedankt!
- Robbe
En opslaan in een database gaat met een INSERT query (of UPDATE query)
Code (php)
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
waarbij $mypass1 je gehashte password is, en $myusername met mysql_real_esape_string() beveiligd is, net als $myemail
--> En hoe moet ik die ip in mijn mysql steken?
Ip varchar 13
of anders?
een IPv6 is ruim langer. http://nl.wikipedia.org/wiki/Internet_Protocol_versie_6
32 hex tekens, met 7 scheidings : dus 39 tekens lang
ip varchar 39
nemen?
Ik zou dat wel adviseren.
Hier haal ik de gegevens uit mijn database en geef ik ze een variable mee:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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'];
?>
$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 :(
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
$this_ip is een variabele, geen functie.
- Robbe
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.
En dat is daar de bedoeling, om hem een (extra) bescherming mee te geven
- robbe
Een if is dan voeldoende...
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