Jeg klarer ikke i skrivende stund å se hva slags query-string du har der, men uansett - du må huske på at folk flest har dynamisk IP, så dette systemet vil bli veldig unøyaktig (IP-adressen endres fra tid til annen). Jeg ville heller satset på en cookie-basert løsning, fordi folk sjelden slettet cookies. En cookie er en liten tekstfil som lagres på datamaskinen til den som besøker deg, og den kan brukes til blant annet automatisk innlogging (slik som dette forumet har, for eksempel). Cookies er knyttet til domenet ditt, så du har bare tilgang til den cookien som skriptet ditt har opprettet. Det aller enkleste vil da bare være å se om brukeren har en cookie fra ditt domene, og sørge for at man får en slik når man registrerer seg. Her er noen kodesnutter (jeg bruker MySQL her):
Kode
<?php
// Registrering:
if(isset($_POST['brukernavn'])) { // Sjekker kun etter brukernavn her, du bør fylle inn det som passer for ditt skript
$brukernavn = mysql_real_escape_string($_POST['brukernavn']); // Forutsetter at du er koblet til MySQL-DB
mysql_query("insert into users (brukernavn) values ('$brukernavn')"); // Her bør du også sjekke for duplikater (brukere med samma navn etc.)
setcookie('kjeks', 'Tagged!', 0); // Cookiens navn, innhold og holdbarhet (0 = uendelig)
}
// For å sjekke om cookien finnes fra før:
if(!empty($_COOKIE['kjeks'])) {
echo 'Denne datamaskinen har registrert en konto fra før.';
} else {
echo 'Denne brukeren har slettet cookies eller ikke registrert seg.';
}
?>
For mest mulig treffsikkerhet kan du prøve en kombinasjon av cookies og IP. Lagre brukerens ID-nummer i cookien, og oppdater brukerens IP-adresse i databasen med den han/hun bruker akkurat nå. Hvis du vil ha det enda mer nøyaktig kan du lagre hele IP-historikken til hver enkelt bruker, slik at du kan knytte hver bruker-ID opp mot hver IP-adresse. Når en ny bruker registrer seg kan du da sjekke opp mot alle IP-adressene du har lagret, og kanskje finne en match mot en IP som en annen bruker har fått tildelt på et senere tidspunkt enn da han/hun registrerte seg. Jeg ser imidlertid strengt tatt ikke poenget med å gjøre det så vanskelig; hvis spilleren din har tre søsken på nett, så bør de vel kunne spille som alle andre. Hvis de bruker tre ulike maskiner på samme LAN så vil de ut fra IP se ut som en og samme bruker - mens cookies vil kunne skille dem fra hverandre.
For spillets del bør du heller lage et system som kan oppdage hvis en spiller driver med "farming" (regner med det er dette du er redd for) ved å se om to brukere opererer sammen unormalt mye. Cookie-forslaget mitt kan også hjelpe deg her; ved å lage brukerens ID-nummer i cookien kan systemet ditt se om samme datamaskin bytter bruker-ID unormalt mye. (Cookien oppdateres ved innlogging, med bruker-ID-en til den som logger inn.)
Et alternativ til alt dette er å bruke sessions. Sessions er en måte å midlertidig lagre informasjon om en bruker - og du kan utnytte dette til å se om en bruker logger inn og ut med ulike brukerkontoer i løpet av kort tid.
Kode
<?php
session_start();
if(isset($_SESSION['kjeks'])) {
// Session-variabelen "kjeks" finnes fra før - brukeren har vært her for kort tid siden
} else {
// Serveren kjenner ikke igjen denne brukeren
}
?>
For din del vil nok cookies være den beste løsningen, fordi de ikke slettes automatisk etter en gitt tidsperiode (hvis du velger holdbarhet 0, altså).