Avatar billede oldnick Nybegynder
12. august 2007 - 17:15 Der er 7 kommentarer og
1 løsning

Test om ip findes i db?

Hej

Jeg har logget en ip til en post i min db og nu vil jeg gern sikre mig at den samme ip ikke kan lave dobbelt post i min db.

Jeg har rodet lidt med det, men ved ikke rigtigt hvordan jeg kan søge blant alle poster og finde ud af om ip allerede er der!

Min php kode (den giver felj hvis der ikke er en ip som passer, men det er her jeg er pt.):

$res = @mysql_query("SELECT userIp FROM tabel WHERE userIp = $_SERVER[REMOTE_ADDR]");
while ($row = mysql_fetch_array($res)) {
$userIp = $row['userIp'];
echo "$userIp";
}

if (isset($_POST['submit']) && $userIp != '') {
    $sql = "INSERT INTO tabel SET
        userIp        = '$_SERVER[REMOTE_ADDR]',
        datetime    = CURRENT_TIMESTAMP(),
        age        = '$_POST[age]',
        spg1        = '$_POST[spg1]',
        spg2        = '$_POST[spg2]',
        spg3        = '$_POST[spg3]',
        spg4        = '$_POST[spg4]',
        spg5        = '$_POST[spg5]',
        spg6        = '$_POST[spg6]'";
       
        if (mysql_query($sql)) {
        echo "<h1>Tak for hj&aelig;lpen</h1>";
        } else {
        echo "<h1>Error: " . mysql_error() . "</h1>";
        }
    } else {
        echo "<h1>Desv&aelig;rre jeg har kun brug for din mening engang! Tak</h1>";
}

Der må være en enkel måde at test det på!
Tak!
Avatar billede cronick Nybegynder
12. august 2007 - 17:36 #1
Ja, det er der.. :)

<?php
$res = mysql_query("SELECT userIp FROM `tabel` WHERE userIp = '".$_SERVER['REMOTE_ADDR']."")or die(mysql_error());
if(mysql_num_rows($res) == 0) {

$sql = "INSERT INTO `tabel` SET
        userIp  = ".$_SERVER['REMOTE_ADDR'].",
        datetime = ".CURRENT_TIMESTAMP().",
        age      = ".$_POST['age'].",
        spg1    = ".$_POST['spg1'].",
        spg2    = ".$_POST['spg2'].",
        spg3    = ".$_POST['spg3'].",
        spg4    = ".$_POST['spg4'].",
        spg5    = ".$_POST['spg5'].",
        spg6    = ".$_POST['spg6']."";
mysql_query($sql);

}else{
echo "<h1>Desv&aelig;rre jeg har kun brug for din mening én gang! Tak</h1>";
}
Avatar billede olebole Juniormester
12. august 2007 - 17:45 #2
<ole>

Du kan lave ip-feltet uniq. Derefter er det bare at køre din insert og undertrykke fejl. Derefter kan du så spørge på et evt. fejlnummer:

$sql = "INSERT INTO `tabel` (... ... ...) VALUES (... ... ...)";
@mysql_querry($sql);
if (mysql_errno()==1062) {
    // IP'en fandtes i forvejen ... gør noget
}

/mvh
</bole>
Avatar billede jakobdo Ekspert
12. august 2007 - 18:00 #3
Olebole: mysql_querry <- med kun et r :o)
Avatar billede oldnick Nybegynder
12. august 2007 - 18:38 #4
Ja tak den havde jeg også fanget! :)
Avatar billede oldnick Nybegynder
14. august 2007 - 18:20 #5
Hey kom med et svar begge to så får i lidt point!
Avatar billede cronick Nybegynder
14. august 2007 - 20:10 #6
Svar..
Avatar billede oldnick Nybegynder
14. august 2007 - 21:22 #7
Så får cronick nogle point, <ole> hvis du føler dig snyt, så trykker du bare cap-lock ned og råber op!
Avatar billede oldnick Nybegynder
14. august 2007 - 21:23 #8
"snydt"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester