Hallo,
Ik ben nog php aan het leren, en wil nu een scriptje maken, maar ik geraak er niet uit, maw. ik zit vast
het komt er op neer, dat, als iemand een webpagina bezoekt, het ip word genomen, gecodeerd word, en dan zou dat adres uit een tabel, veld: poster_ip
moeten worden gezocht.
Indien dat ip adres in het veld bestaat, dan heb ik, van dezelfde tabel in het veld: poster_id nodig.
nu mijn vraag:
hoe moet ik dat doen?
kan of wil iemand me helpen, met tips of zo?
met dank.
wat ik tot nu al heb gemaakt:
<?php
$tabel="phpbb_posts";
$username = 'root';
$password = 'elian007';
$db = 'test';
mysql_connect('localhost',$username,$password)or die('Er kon geen connectie gemaakt worden met de database');
mysql_select_db($db) or die('De database kon niet worden geselecteerd');
mysql_connect('localhost',$username,$password)or die('Er kon geen connectie gemaakt worden met de database');
mysql_select_db($db) or die('De database kon niet worden geselecteerd');

$ip= getenv("REMOTE_ADDR");


function encode_ip($dotquad_ip)
{
$ip_sep = explode('.', $dotquad_ip);
return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}


echo"uw ip =".$ip."";
echo "<br></br>";
echo 'IP, gecodeerd: '.encode_ip($ip);
echo "<br></br>";
//////// tot hier werkt het

$a=encode_ip($ip);


$query = "SELECT * FROM poster_ip,poster_id WHERE id = '".$a['encode_ip'];
$query($sql) or die(mysql_error());


?>
ten eesrste moet je maar 1x naar je database connecten

ten 2de moet je maar 1x naar je DB connecten
<?
mysql_connect('localhost',$username,$password)or die('Er kon geen connectie gemaakt worden met de database');
mysql_select_db($db) or die('De database kon niet worden geselecteerd');
?>
dit is al voldoende om te connecten en je table te selecteren

voor de rest kan je via 1 check al veel uit je table halen

en deze:$ip= getenv("REMOTE_ADDR");
zou ik zo hoog mogelijk in je pagina zetten...

Greetz MaDHouSe
thx, maar hoe, moet ik het gecodeerde ip vergelijken met het ip uit mijn tabel, het is daar dat ik niet weet hoe dat moet, met een fuctie of zo?
en ook, als het true is, hoe kan ik dan uit de reccord, waar dat ip staat, het id nr opvragen die in dezelfde record staat
als ik dat zou kunnen te weten komen
zou dat een enorme hulp zijn voor mij
en kan dan zelf verder puzellen
met dank
Je functie encode_ip neemt van elk onderdeel van een ip adres twee getallen? Waarom doe je dat zo? Dat kan dezelfde resultaten opleveren voor verschillende ip adressen.

Affijn, je laatste stukje code:
<?php
$a=encode_ip($ip);
$sql = "
SELECT id
FROM poster_ip
WHERE ip = '" . $a . "'";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
else {
$row = mysql_fetch_assoc ($res);
echo $row['id'];
}
?>
Let op: je moet zelf kijken of de tabelnaam en de veldnamen in mijn voorbeeldquery kloppen. Ik ga er van uit dat er velden 'id' en 'ip' bestaan en dat je tabel 'poster_ip' heet.
MaD schreef op 11.11.2006 08:51

en deze:$ip= getenv("REMOTE_ADDR");
zou ik zo hoog mogelijk in je pagina zetten...
Greetz MaDHouSe

Da's nogal een magere check die vaak fout kan gaan. Beter zo:
<?php
if (@getenv ($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = @getenv ($_SERVER['HTTP_X_FORWARDED_FOR']);
}
elseif (@getenv ($_SERVER['HTTP_CLIENT_IP'])) {
$ip = @getenv ($_SERVER['HTTP_CLIENT_IP']);
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
?>
hartelijke dank voor je hulp
ik kan nu wat verder zelf mijn weg zoeken, want, als ik zelf niets probeer zal ik het nooit kunnen of weten denk ik.
Dus nogmaals bedankt

Reageren