Jump to content
php.lv forumi

2.Jautājumi


homers

Recommended Posts

1/

Gribu uztaisīt kā var reģistrēties tikai no 1.ip adreses. Esmu kaut ko uzrakstijis, bet viņš neaizgaja.

$ip = ($_SERVER['REMOTE_ADDR']);
$ip2 = (SELECT ip FROM lietotaaji WHERE ip = ".$ip.");
if($ip == $ip2)
{
echo "tava ip jau ir reģistrēta!!!!";
}
else {
//reģistrēšanas lapa
}

 

2/

Kā var uztaisīt jā nav aktīvitātes pedējas 3minūtes, viņš automātiski izlogojas. Un datubāzē updeitojas šadi

mysql_query("UPDATE lietotaaji SET tiessaite='off' WHERE id={$_SESSION['id']}");
unset($_SESSION['id']);
session_destroy();

Edited by homers
Link to comment
Share on other sites

Kā var šito un kā var to atrodam google!

 

1. Izvelkot esošo IP adresi manliekas tu dari kaut ko nepareizi! Respektīvi tu vaicā pēc IP bet to nesaņem, varbūt arī kļūdos bet šaubos ka

ip = ".$ip."

šī vieta būs pareiza! :P .. izmanto '' nevis ""

 

2. Izmanto timestamp!

Link to comment
Share on other sites

Man liekas ka pirmajā tu dari kaut ko ko pats nemaz nesaproti :)

Pirmkārt, kas tās par iekavām un priekš kam?? $ip = ($_SERVER['REMOTE_ADDR']);

Ja tu raksti kvēriju, tad viņš izpildās ar mysql_query();

 

Eh, nu tam būtu jāizskatās šitādi:

 

$ip = $_SERVER['REMOTE_ADDR'];
$data = mysql_fetch_assoc(mysql_query("SELECT ip FROM lietotaaji WHERE ip = '$ip'"));
$ip2 = $data['ip'];

if($ip == $ip2){
 echo "tava ip jau ir reģistrēta!!!!";
}
else{
//reģistrēšanas lapa
}

 

Ņem vērā, ka uz IP pilnībā nederīkst paļauties. To var noviltot. Un ņem vērā, ka piem. Ip var būt dinamisks. Vai arī cilvēki kas sēž aiz viena rūtera ir redzami kā no viena ip.

Link to comment
Share on other sites

Nu labi, saņemšos uz otro jautājumu.

 

Karoč, doma tāda, ka tu nevari likt lietotājam paziņot par to, ka viņš iz aizgājos prom, JO VIŅŠ IR AIZGĀJIS PROM :D

 

Kā es veidoju tabulu, kur ir online lietotāji.

 

Ir tabula lietotaji_online, ar kolonnām: ip,last_seen

 

ip - lietotāja ip

last_seen - timestamp`s, kad lietotājs pēdējo reizi izrādījis aktivitāti(atvēris kādu lapu, kur tiek izsaukta šī funkcija getOnlineUserCount()).

 

un tad funkcija, kas atgriež lietotāju skaitu, kas ir izrādīju aktivitāti pēdējo 5 min laikā -

function getOnlineUserCount(){

	$ip = $_SERVER['REMOTE_ADDR'];
	$now = time();
	$delta = $now - 300; //5 minūtes iepriekš
	mysql_query("DELETE FROM lietotaji_online WHERE last_seen < $delta OR ip = '$ip'"); //dzēšam visus kas ir vismaz 5 minūtes prom un pašreizējo lietotāju
	mysql_query("INSERT INTO lietotaji_online(ip,last_seen) VALUES('$ip','$now')");  //pievienojam pašreizējo lietotāju
	$data = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) FROM lietotaji_online")); //dabūjam ierakstu skaitu tabulā
	return (int)$data['COUNT(*)'];

}

 

ceru, ka noderēs!

 

P.S. ja gribi reģistrētos, tad pievienot attiecīgo kolonnu(boolean) is_registered, un ja lietotājs ir reģistrēts, tad tur ievieto 1, un pēc tam kur atgriez skaitu, attiecīgo pieprasījumu, lai dabūtu reģistrēto skaitu un nereģistrēto (... WHERE is_registered = '1')

Edited by briedis
Link to comment
Share on other sites

Man gan šķiet, ka labāk ir vienkārši user tabulā lauks last_seen

Pie lietotāj darbībām taisam

 

UPDATE users SET last_seen=unix_timestamp() WHERE id=$id

 

Bet online lietotājus selectojam:

 

SELECT * FROM users WHERE last_seen>unix_timestamp()-180;

 

vai skaitu

 

SELECT count(*) FROM users WHERE last_seen>unix_timestamp()-180;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...