ip adres controleren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Els

els

19/09/2009 11:41:00
Quote Anchor link
Hallo,

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$IP
= $_SERVER['REMOTE_ADDR'];

SELECT ips FROM stem WHERE ipaddress='".$ip."'
?>
 
PHP hulp

PHP hulp

26/04/2024 16:16:02
 
Rens nvt

Rens nvt

19/09/2009 11:55:00
Quote Anchor link
Je slaat meerdere IP adressen op in 1 cell??? Je gaat jezelf erg veel ellende besparen om dat aan te passen...
 
- Mark -

- Mark -

19/09/2009 12:05:00
Quote Anchor link
Het is inderdaad niet echt handig zo.

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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

    #| Controleren of huidig IP adres voorkomt in de lijst met al opgeslagen IP's.
    
        if(in_array($_SERVER['REMOTE_ADDR'],explode(";",$result['ips'])))
        {

            echo 'Je mag maar een keer stemmen.';
        }

        else
        {
            echo 'Bedankt voor het plaatsen van je stem.';
        }

    
?>
 
Guido van C

Guido van C

19/09/2009 12:29:00
Quote Anchor link
Het is slimmer om ze op te slaan per row in je table, maar als je dit echt wil moet je met de functie preg_split werken:

$ipadressen_array = preg_split('/;/', $row['ipadress');

http://nl2.php.net/preg-split
 
Els

els

19/09/2009 13:13:00
Quote Anchor link
Bedankt voor de snelle reactie, sorry ik sla alles per bericht op dus.
in een rij komt voor: id: ips: titel: bericht(dus per row)
Rens heb je een voorbeeldje hoe ik het anders kan doen?
 

19/09/2009 13:22:00
Quote Anchor link
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.
 
Guido van C

Guido van C

19/09/2009 16:10:00
Quote Anchor link
Ip controle lijkt me altijd nog beter dan geen controle. Inderdaad zal explode() hiervoor geschikter zijn aangezien dit sneller is.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
}

    
?>
Gewijzigd op 01/01/1970 01:00:00 door Guido van C
 
Els

els

19/09/2009 16:30:00
Quote Anchor link
Bedankt voor jullie reacties.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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!";
    }

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.