IP Controle uit Database
Vandaag heb ik een rating script geschreven. Alles ziet er goed uit en werkt prima, het enige probleem is alleen dat mensen zo vaak als ze willen kunnen stemmen. Dit wil ik voorkomen door het zelfde IP-adres te verbieden meer dan 1 maal te stemmen. Het verkrijgen van hun IP-adres gaat prima, echter kan ik wel wat hulp gebruiken met het extraheren van de IP-adressen uit de (mysql)database
Dit is het script dat ik heb geschreven:
Quote:
$IPadres = $_SERVER["REMOTE_ADDR"];
$ipquery = "SELECT INET_NTOA(ip), filmpjeid FROM ipadressen WHERE filmpjeid='$kijk'";
$ipresult = mysql_query($ipquery);
while($ipcontrole = mysql_fetch_array($ipresult)){
if (!$IPadres == $ipcontrole['INET_NTOA(ip)']){
echo "werkt".$ipcontrole['INET_NTOA(ip)'];
}
else {
echo "maar 1 keer stemmen";
}
}
$ipquery = "SELECT INET_NTOA(ip), filmpjeid FROM ipadressen WHERE filmpjeid='$kijk'";
$ipresult = mysql_query($ipquery);
while($ipcontrole = mysql_fetch_array($ipresult)){
if (!$IPadres == $ipcontrole['INET_NTOA(ip)']){
echo "werkt".$ipcontrole['INET_NTOA(ip)'];
}
else {
echo "maar 1 keer stemmen";
}
}
Mijn vraag is dus:
Waarom werkt het controleren van het IP-adres tegen de verschillende adressen in de database niet, en hoe kan ik dit het beste oplossen?
In ieder geval bedankt voor jullie tijd
Groeten,
Matthijs A.
Gewijzigd op 01/11/2010 16:02:25 door Matthijs A
Soms zitten er meerdere mensen op hetzelfde ip.
Let ook SQL injections.
en vervolgens vergelijk je die met
if (!$IPadres == $ipcontrole['INET_NTOA(ip)']
Over de een ($IPadres) gaat geen functie en over ip lijkt wel een keer of twee de INET_NTOA functie te gaan. Wordt het dan geen appels met peren vergelijken. Wat is de zin van INET_NTOA? Laat het eens weg en vergelijk ip adres met ip adres
De functie is INET_NTOA is deprecated.
Overigens is de methode zo fout als het maar kan, wie zit er nu nog met 1 peecee op 1 ipnummer? Iedereen heeft thuis meerdere compu's en en hiermee beperk je het stemmen tot 1 persoon per huis. Ons studentenhuis heeft 17 peeceetjes.... en wat denk je van bedrijven?
Gewijzigd op 01/11/2010 16:15:46 door Aad B
Daarnaast is de website bedoelt voor jeugdige kijkers die het, naar mijn idee, niet erg zullen vinden om op school niet (meer) te kunnen stemmen. Ze hebben echter wel mogelijkheid om het thuis doen ("De website kan niet aansprakelijk gestelt worden voor eventuele ruzies met broertjes/zusjes"). De kinderen zullen geen hinder ondervinden van het moeten registeren op een website, waar sommige kinderen nog niet capabel genoeg voor zijn.
Gewijzigd op 01/11/2010 16:25:08 door Matthijs A
if (!.... == ....)
Maar zo
if (.... != ....)
Als je iets leuks aan het bouwen bent voor kinderen dan willen alle kinderen in een gezin meedoen en dan ben jij meedogenloos dat er maar 1 kan stemmen en dat doe je af met een volwassen leveringsvoorwaarde: "De website kan niet aansprakelijk gesteld worden voor eventuele ruzies met broertjes/zusjes"? Er staan hier inmiddels twee adviezen om het niet op ip nummer te doen....
Gewijzigd op 01/11/2010 16:58:43 door Aad B
Ik wil je bedanken voor je advies Aad B maar ik heb gekozen om het op deze manier te doen. Het zou fijn zijn als je jou expertise ook kon toepassen om in het script het probleem te vinden om hem werkend te maken.
Jammer en voor wat betreft je tweede vraag: SanThe heeft de oplossing al aangegeven.
Toevoeging op 01/11/2010 17:09:15:
- SanThe - op 01/11/2010 16:25:18:
Niet zo
if (!.... == ....)
Maar zo
if (.... != ....)
if (!.... == ....)
Maar zo
if (.... != ....)
Aad B op 01/11/2010 17:06:58:
Jammer en voor wat betreft je tweede vraag: SanThe heeft de oplossing al aangegeven.
Heeft niet geholpen helaas
Echo eens wat dan kan je zien of je wel krijgt wat je verwacht.
Matthijs A op 01/11/2010 17:04:09:
Ik wil je bedanken voor je advies Aad B maar ik heb gekozen om het op deze manier te doen. Het zou fijn zijn als je jou expertise ook kon toepassen om in het script het probleem te vinden om hem werkend te maken.
Mag ik je er dan ook nog even op wijzen dat ip blokkades makkelijk te omzeilen zijn en dat je een hele groep gebruikers benadeeld. Mensen die bijvoorbeeld Filternet (geloof ik) gebruiken zal je benadelen als je daar een aantal keer een ban op doet. Filternet gebruikt een aantal ip adressen, maar daarop gaan wel heel veel huishoudens.
Dus als jij denkt dat je één persoon blokkeerd, blokkeer je gelijk een hele groep.
Quote:
$adres = ip();
$ipquery = "SELECT INET_NTOA(ip), filmpjeid FROM ipadressen WHERE ip = 'INET_ATON($adres)' AND filmpjeid='$kijk'";
$ipresult = mysql_query($ipquery);
if (mysql_num_rows($result) == 0) {
echo "bedankt voor je stem";
//mysqlquery
}
else {
echo "Je hebt al een keer gestemt en er mag per filmpje maar 1 maal per computer gestemt worden";
}
$ipquery = "SELECT INET_NTOA(ip), filmpjeid FROM ipadressen WHERE ip = 'INET_ATON($adres)' AND filmpjeid='$kijk'";
$ipresult = mysql_query($ipquery);
if (mysql_num_rows($result) == 0) {
echo "bedankt voor je stem";
//mysqlquery
}
else {
echo "Je hebt al een keer gestemt en er mag per filmpje maar 1 maal per computer gestemt worden";
}
Nogmaals bedankt voor jullie hulp