ip adres controleren
Wil graag een ip adres controleren om te voor komen dat iemand niet dubbel of meerdere keren kan stemmen. Ik sla de ip adressen op in een cel: voorbeeld [152.165.1.12;168.25.3.7]
Nu wil ik graag met onder staande code het ip adres controleren, allen hoe haal ik nu de ip adressen uit elkaar? Zodat het script de ip adressen apart kan controleren. Alvast bedankt voor de reacties.
Je slaat meerdere IP adressen op in 1 cell??? Je gaat jezelf erg veel ellende besparen om dat aan te passen...
Anyway klein voorbeeld hoe het wel kan met je huidige code. Voornamelijk omdat in_array en explode leuke funties zijn om mee te spelen. $result['ips'] moet je wel nog even uit je database halen.
in een rij komt voor: id: ips: titel: bericht(dus per row)
Rens heb je een voorbeeldje hoe ik het anders kan doen?
Guido schreef op 19.09.2009 12:29:
maar als je dit echt wil
Dat wil je dus niet. Sowieso ip controles helpen voor geen ene moer.
Guido schreef op 19.09.2009 12:29:
moet je met de functie preg_split werken:
Nee dus, dat is dus hartstikke overkill. Je doet geen ingewikkelde dingen, dus heb je totaal geen preg_* nodig.
explode zou je dan moeten gebruiken.
Maar goed, ip controles zijn onzin omdat je zo über simpel kan omzeilen.
Als alle ipadressen in 1 cel staan zoals je zegt dan zul je inderdaad die adressen uit elkaar moeten trekken, in een array plaatsen en vervolgens de array doorzoeken naar overeenkomsten. Beter is om in een aparte tabel dan de ipadressen op te slaan met een referentie naar het bericht, maar dat is je eigen keuze. Als je het zo laat zou je code er ongeveer zo uit moeten zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT ips FROM stem"
//sql connectie zelf doen
$resultaat = mysql_query($sql, $conn) or die (mysql_error());
$rij = mysql_fetch_array($resultaat)
// Controleren of huidig IP adres voorkomt in de lijst met al opgeslagen
if(in_array($ip, explode(";", $rij['ips']))){
echo 'Je mag maar een keer stemmen.';
}
else{
echo 'Bedankt voor het plaatsen van je stem.';
}
?>
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT ips FROM stem"
//sql connectie zelf doen
$resultaat = mysql_query($sql, $conn) or die (mysql_error());
$rij = mysql_fetch_array($resultaat)
// Controleren of huidig IP adres voorkomt in de lijst met al opgeslagen
if(in_array($ip, explode(";", $rij['ips']))){
echo 'Je mag maar een keer stemmen.';
}
else{
echo 'Bedankt voor het plaatsen van je stem.';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Guido van C
Heb een 2de tabel aangemaakt waar ik de ip adressen in op sla. met onderstaande code controleer ik het ip adres
dat werkt wel, maar als er al gestemd is krijg ik deze melding:U heeft al gestemd
Notice: Undefined variable: q in D:\UsbWebserver\Root\a voting\reddit_vote_tut\reddit_vote_tut\src\votes.php on line 61
Failed!
Deze melding komt van dit stukje code: $r = mysql_query($q);
hoe kan ik dit opvangen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
if($action=='vote_up') //voting up
{
$result=mysql_query("SELECT * FROM ipadres where id_bericht = '$id' ORDER BY id_bericht DESC LIMIT 1 ");
$row = mysql_fetch_assoc($result);
$ip = $_SERVER['REMOTE_ADDR'];
if($row['ipa'] == $_SERVER['REMOTE_ADDR'])
{
echo 'U heeft al gestemd';
}else{
$votes_up = $cur_votes[0]+1;
$q = "UPDATE ratings SET total_votes = $votes_up WHERE id = $id";
mysql_query("INSERT INTO ipadres (id_bericht,ipa) VALUES ('".mysql_real_escape_string($id)."','".mysql_real_escape_string($ip)."');",$link);
}
}
elseif($action=='vote_down') //voting down
{
$votes_down = $cur_votes[1]+1;
$q = "UPDATE ratings SET total_value = $votes_down WHERE id = $id";
}
$r = mysql_query($q);
if($r) //voting done
{
$effectiveVote = getEffectiveVotes($id);
echo $effectiveVote." Stemmen";
}
elseif(!$r) //voting failed
{
echo "Failed!";
}
?>
if($action=='vote_up') //voting up
{
$result=mysql_query("SELECT * FROM ipadres where id_bericht = '$id' ORDER BY id_bericht DESC LIMIT 1 ");
$row = mysql_fetch_assoc($result);
$ip = $_SERVER['REMOTE_ADDR'];
if($row['ipa'] == $_SERVER['REMOTE_ADDR'])
{
echo 'U heeft al gestemd';
}else{
$votes_up = $cur_votes[0]+1;
$q = "UPDATE ratings SET total_votes = $votes_up WHERE id = $id";
mysql_query("INSERT INTO ipadres (id_bericht,ipa) VALUES ('".mysql_real_escape_string($id)."','".mysql_real_escape_string($ip)."');",$link);
}
}
elseif($action=='vote_down') //voting down
{
$votes_down = $cur_votes[1]+1;
$q = "UPDATE ratings SET total_value = $votes_down WHERE id = $id";
}
$r = mysql_query($q);
if($r) //voting done
{
$effectiveVote = getEffectiveVotes($id);
echo $effectiveVote." Stemmen";
}
elseif(!$r) //voting failed
{
echo "Failed!";
}
?>