Gå til innhold

Få ip på registrerte


Anbefalte innlegg

Hei, har vært med på folk som har lite liv og lager 100 vis av brukere på sidene mine.

 

Så jeg lurer på hvordan jeg får ipen til den som registrerer seg i 'user_ip' i 'users' dben, og hvordan jeg kan gjøre sånn at de ikke kan registrere seg mer enn 3 ganger med den samme ipen...

Lenke til kommentar
Videoannonse
Annonse

$_SERVER['REMOTE_ADDR']

 

For å se alt som ligger i $_SERVER

echo '<pre>';
print_r($_SERVER);
echo '</pre>';

 

For å sjekke hvor mange ganger de har registrert seg

function checkIP($ip)
{
$cIP = ip2long($ip);
$fIP = long2ip($cIP);
return $fIP;
}

// koble til databasen

$ip_adr=checkIP($_SERVER['REMOTE_ADDR']);

if (!in_array($ip_adr,array('0.0.0.0','127.0.0.1'))
{  
 $sql='SELECT count(*) FROM tabell WHERE ip='.$ip_adr;
 $antall=mysql_fetch_row(mysql_query($sql));

 if ($antall[0]<3)
   // tillat ny registrering
 else
   // allerede registrert 3 ganger
}

 

Edit: Lagt til ip adresse validering, fant en funksjon her i kommentarfeltet, http://roshanbh.com.np/2008/04/ip-address-validation-php.html, som jeg ser er samme fremgangsmåte som eksempel 3 i php manualen for ip2long: http://no.php.net/ip2long

Endret av Crowly
Lenke til kommentar

Om du veit korleis du poster data til MySQL er det jo ikkje noko problem i det heile tatt.

Då setter du berre inn $_SERVER['REMOTE_ADDR'] i feltet.

 

Forstår ikkje heilt problemet.

Om du tykkjer det er "rotete" kan du jo óg sette IP'en i ei variabel først.

$ipadresse = $_SERVER['REMOTE_ADDR'].

 

Kva er det egentleg du lurer på? Korleis du registerer berre, eller korleis du kan sjekke om IP'en eksiterer når du oppretter ei konto?

Det vil vere lite hensiktsmessig å la brukare berre får registrere seg nokon få gonger per IP. Betre om du har ein e-post aktivering.

 

Offentlege stadar vil jo då automatisk varte bannlyst.

Endret av steffenz
Lenke til kommentar

Prøv å kjør echo $_SERVER['REMOTE_ADDR']; og se hva som skjer....

 

Hvis man lurer på noe så er det ikke noe galt i å lage midlertidige "gjett og sjekk" skript for å se hvordan ting oppfører seg, eller hvilke verdier ymse ting inneholder osv.

Lenke til kommentar

okei, jeg prøvde dette:

 

er det noe feil med det?

 

$sql = "INSERT INTO
				users(user_name, user_pass, user_email ,user_date, user_level, user_ip)
			VALUES('" . mysql_real_escape_string($_POST['user_name']) . "',
				   '" . sha1($_POST['user_pass']) . "',
				   '" . mysql_real_escape_string($_POST['user_email']) . "',
					NOW(),
					0)",
					$_SERVER['REMOTE_ADDR'];

	$result = mysql_query($sql);

 

får ingen error men heller ingen ip i dben

Endret av WeExClan
Lenke til kommentar

Borsett fra litt rotete kode ser jeg ikke noe feil, borsett fra der du setter inn user_level kanskje.

Syns det blir ryddigere med sprintf. Se kode.

$query = sprintf("INSERT INTO `users` (`user_name`, `user_Pass`, `user_email`, `user_date`, `user_level`, `user_ip`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')",
mysql_real_escape_string($_POST['user_name']),
sha1($_POST['user_pass']),
mysql_real_escape_string($_POST['user_email']),
now(),
"0",
$_SERVER['REMOTE_ADDR']);
$query = mysql_query($query);

 

( OG jeg anbefaller å filtrere $_SERVER vars, for det kan manipulerest.

Endret av Sk!ppy
Lenke til kommentar

Borsett fra litt rotete kode ser jeg ikke noe feil, borsett fra der du setter inn user_level kanskje.

Syns det blir ryddigere med sprintf. Se kode.

$query = sprintf("INSERT INTO `users` (`user_name`, `user_Pass`, `user_email`, `user_date`, `user_level`, `user_ip`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')",
mysql_real_escape_string($_POST['user_name']),
sha1($_POST['user_pass']),
mysql_real_escape_string($_POST['user_email']),
now(),
"0",
$_SERVER['REMOTE_ADDR']);
$query = mysql_query($query);

 

( OG jeg anbefaller å filtrere $_SERVER vars, for det kan manipulerest.

 

takker, men jeg får enda ikke IPen i databasen. Har det som varchar not null men funker ikke. Har det ip greiene hvis du er logget inn på siden så står det liksom hvilken ip du er på($_SERVER['REMOTE_ADDR') og det funker på siden men det funker ikke i databasen.....

Endret av WeExClan
Lenke til kommentar

now() er ingen php funksjon, legg den inn i sql'en, det samme kan man gjøre med standard verdier. Hvis user_level er integer så endre '0' til 0

Litt modifisert

$query = sprintf("INSERT INTO `users` (`user_name`, `user_Pass`, `user_email`, `user_date`, `user_level`, `user_ip`) VALUES ('%s', '%s', '%s', NOW(), '0', '%s')",
mysql_real_escape_string($_POST['user_name']),
sha1($_POST['user_pass']),
mysql_real_escape_string($_POST['user_email']),
$_SERVER['REMOTE_ADDR']);

//debug
echo $query."<br />"; // sjekk at sql'en ser riktig ut

mysql_query($query);

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...