IP Opslaan [CLASS]
Nu wou ik Graag iets doen maar ik zou me god niet moeten weten hoe ik hier aan begin, kan iemand mij helpen?
Wat ik dus wil doen, is een IP Opslaan scriptje maken.
Wat ik in dit scriptje wil is:
- IP Opslaan in MYSQL Database (Connection staat all in een class Connection_class.php)
- Checken of het IP all in de Database staat als dit is niet opslaan.
Hopelijk dat iemand mij hier mee kan helpen, met vriendelijke groet Paco/Jannick Oste.
Paco oste op 22/12/2010 18:40:26:
Hallo, ik ben aan een nieuwe source bezig, omdat ik net terug me PHP & mySQL Ben begonnen.
Wat is dit voor zin?????
Anyhow, wat is je vraag. Verwacht je dat wij een script voor je gaan maken?
- Hoe kan ik het ip adres zo klein als mogelijk opslaan? In een INT unsigned
- Hoe zet ik hem erin? INET_ATON($IP)
- Hoe haal ik hem eruit? INET_NTOA($ip)
Ja gewoon beginnen en kijken waar je vastloopt?
scripts? tutorials? op phphulp of sitemasters.be
Quote:
Nu wou ik Graag iets doen maar ik zou me god niet moeten weten hoe ik hier aan begin, kan iemand mij helpen?
God kan alles, dus daar zal het probleem niet liggen.
Maar goed, heel summier moet je het volgende doen:
- Connectie op halen en deze in een variabele gooien, weet niet hoe je dit geregeld hebt, maar goed daar kom je denk ik wel uit, start connectie evt nog.
- Haal het IP adres op via $_SERVER['REMOTE_ADDR'] zoals hierboven al is verteld
- Maak een query die lijkt op de volgende,
Code (php)
1
2
3
2
3
<?
$query = 'SELECT ipadres FROM tabelwaarinjedezeopslaat WHERE ipadres = ' .mysql_real_escape_string( $ipadres ). ' ';
?>
$query = 'SELECT ipadres FROM tabelwaarinjedezeopslaat WHERE ipadres = ' .mysql_real_escape_string( $ipadres ). ' ';
?>
variabele $ipadres moet dus de waarde bevatten van $_SERVER['REMOTE_ADDR'].
mysql_real_escape_string geeft een stukje extra beveiliging voor het geval dat iemand de $_SERVER variabele heeft aangepast. Evt, kan je met een regex nog controleren of het daadwerkelijk een IP adres is, maar ik zal het gewoon zo laten.
Om te controleren of er resultaat is moet je iets als het volgende gebruiken
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
if( $result = mysql_query( $query ) ) {
// Het betekend dus dat de query gelukt is, nu kunnen we beginnen met het opvragen van het evt resultaat
if( mysql_num_rows( $result ) == 0 ) {
// Geen resultaat, je kan dus nu een insert query doen, google hier even op, zodat je weet hoe je deze moet maken
}
?>
if( $result = mysql_query( $query ) ) {
// Het betekend dus dat de query gelukt is, nu kunnen we beginnen met het opvragen van het evt resultaat
if( mysql_num_rows( $result ) == 0 ) {
// Geen resultaat, je kan dus nu een insert query doen, google hier even op, zodat je weet hoe je deze moet maken
}
?>
Al met al, heel simpel dus. Maar goed, als je al wat in OO doet, kan je dit beste ook in OO doen. Maar goed, jouw keuze.
Gewijzigd op 22/12/2010 21:00:10 door Niels K
Arjen - op 22/12/2010 19:10:14:
Beter is om $_SERVER["REMOTE_ADDR"] te gebruiken (zie http://php.net/manual/en/function.getenv.php)
Waarom zou dit beter zijn?
Zelf gebruik ik ze meestal samen, want bij transparante proxy ip adressen geeft $_SERVER het proxy ip-adres weer en getenv() het echte ip adres.
$_SERVER['REMOTE_ADDR'] == getenv('REMOTE_ADDR') == een echt ip adres
$_SERVER['HTTP_X_FORWARDED_FOR'] == door de browser mee te geven variabele, niet te vertrouwen dus.
Het uiteindelijke IP-adres verkrijgen, als de bezoeker gebruik maakt van een goede proxy, is niet mogelijk..
Niels Kieviet op 22/12/2010 20:59:21:
God kan alles, dus daar zal het probleem niet liggen.
Excuse me if I laugh.
Nutteloos bericht - Je bericht voegt niets toe. Zou je hier alsjblieft op kunnen letten? Dank :-)[/modedit]
Gewijzigd op 23/12/2010 10:04:50 door Chris -
@Rob, jammer dat je alleen een totaal irrelevant bericht plaatst. Andere mensen zullen om jou lachen omdat jij daar om lacht.
@Yea Rupie, volgens mij kom jij in de problemen met IPv6. Het zou handig zijn om daar nu alvast rekening mee te houden.
Edit:
Is het dan ook niet aan te raden om een ip op te slaan met INET_ATON() en INET_NTOA() ?
Is het dan ook niet aan te raden om een ip op te slaan met INET_ATON() en INET_NTOA() ?
Gewijzigd op 23/12/2010 11:59:04 door Yea Rupie
Yea Rupie op 22/12/2010 23:07:48:
Waarom zou dit beter zijn?
Zelf gebruik ik ze meestal samen, want bij transparante proxy ip adressen geeft $_SERVER het proxy ip-adres weer en getenv() het echte ip adres.
Arjen - op 22/12/2010 19:10:14:
Beter is om $_SERVER["REMOTE_ADDR"] te gebruiken (zie http://php.net/manual/en/function.getenv.php)
Waarom zou dit beter zijn?
Zelf gebruik ik ze meestal samen, want bij transparante proxy ip adressen geeft $_SERVER het proxy ip-adres weer en getenv() het echte ip adres.
Zie de link ("The function 'getenv' does not work if your Server API is ASAPI (IIS). So, try to don't use getenv('REMOTE_ADDR'), but $_SERVER["REMOTE_ADDR"].") en op Google is ook te vinden dat de combinatie ASAPI en getenv niet optimaal werkt. $_SERVER['REMOTE_ADDR'] zal op elk platform werken.
Gewijzigd op 23/12/2010 13:55:36 door Arjan -