Kika på detta inlägg: http://www.webforum.nu/showthread.php?s=&threadid=15386#post94709
det funkar jättebra men jag vill ha satt när $ActiveAt går ut... så ska den uppdatera en tabell i en databas....
/MVH Martin
22 svar · 470 visningar · startad av mahedel
Kika på detta inlägg: http://www.webforum.nu/showthread.php?s=&threadid=15386#post94709
det funkar jättebra men jag vill ha satt när $ActiveAt går ut... så ska den uppdatera en tabell i en databas....
/MVH Martin
Jag har kört detta tidigare..
session_start();
if ($_SESSION['active'] && time()-$_SESSION['active'] > 600) {
$active=time();
header("location: /logout.php?reason=timeissup");
exit;
}
sen när du kommer till logout.php kan du ju uppdatera databsaen
TACK!
ska testa den sedan..
vet du även hur man kan göra satt den ändrar en viss tabell när en besökare bara stänger browsern eller surfar till en annan sida utan att trycka på logout..... ??
/MVH Martin
antingen kör du ett cron job eller då startsidan som uppdaterar databasen genom att kolla tiden på den inloggade och ta bort de som har passerat en viss gräns så kan du printa ut hur många / vilka som är inloggade . .för det är troligen det du är ute efter ? :)
hej igen...
hur kan en funktion se ut för att... startsidan ska uppdaterara databasen genom att kolla tiden på den inloggade och ta bort de som har passerat en viss gräns...
/Martin
nu snabb kladdar jag lite ( har bråttom iväg ) hopas du kan få några idéer :D
$prutt = $active - 600;
$you = mysql_query("SELECT id,time FROM users WHERE id = '".$_SESSION['user_id']."' AND time < '$prutt'") or die ("DB Error!");
if (!mysql_num_rows($you) \< 1) {
header("Location: /logout.php?reason=mahedelhasleftthebuilding");
exit;
}
tack...
det var något sådant jag had etänkt mig.. ska också iväg nu och praktisera...
höres..
/MVH Martin
nej . .nu yrade jag i natt / morgon mössan.. x(
$you = mysql_query("DELETE FROM users WHERE time < '$prutt'") or die ("DB Error!");
sen printar du ut de som är inne / har giltig time
så ska det va..
phhfft.. har suttit vid burken 10 timmar nu.. börjar få synfel :r
hej igen...
Blir fel i rad 10:
Warning: Supplied argument is not a valid MySQL result resource in /home/www/bajs/komjunity/online.php on line 10
if (!mysql_num_rows($you) < 1) {
har försökt testa lite men...
/Martin
farligt.. ^^
hmm...
funktionen för denna sida är att den ska kolla om användarna i databasen har varit inne och sen bara stängt av browsern alltså sidan ska hämta hem alla värden från användare som inte har varit aktiva under 600 sekunder i tabellen varns namn på kolumnen är: "active"... och sen kolla om 600 sekunder har passerat... då ska den sätta tabellen online till 0 fast den förflyttar inte ens sidan...
denna rad verkar fel.... Warning: Supplied argument is not a valid MySQL result resource in /home/www/bajs/komjunity/online.php on line 10
if (!mysql_num_rows($you) < 1) {
har testat att ändra på rad 10 men blir inte som jag vill... hjälp tack..
här finns sidan för att kolla hur den ser ut: http://mahedel.mine.nu/komjunity/online.php
<?
require("db.php");
mysql_pconnect("localhost","$dbu","$dbp");
mysql_select_db("filip");
$prutt = $active - 20;
$you = mysql_query("UPDATE mingla SET online='0' WHERE status < '$prutt'") or die ("DB Error!");
if (!mysql_num_rows($you) < 1) {
header("Location: loggaut.php?reason=mahedelhasleftthebuilding");
exit;
}
?>
nicclas kod är väl inte speciellt säker?! :O om man skriver secter2.php4?ActiveAt=[timestamp] så lär man väl se sidan?
Vad jag såg använde han inte $_SESSION["ActiveAt"]!
den kanske inte är säker men jag kör....
den kanske inte är så säker men jag kör en require längst upp i alla mina filer som ser ut på detta sätt... (den kontaktar en mysql databas, sen så kollar den om det är rätt login och pass... vattentätt tycker jag... vad tycker ni?):
<?
@$user = $login_user;
@$pass = $login_pass;
require("db.php");
if(!$user) {
echo("<script language=JavaScript>");
echo("self.location.replace('index.html')");
echo("</script>");
}
$useropen = mysql_connect("localhost", "$dbu", "$dbp");
$userinfo = mysql_db_query("filip", "SELECT * FROM mingla WHERE username = '$user'", $useropen);
$rad = mysql_fetch_array($userinfo);
if($user == $rad["username"] & $pass == $rad["password"])
?>
<?
if(!$pass) {
echo("<script language=JavaScript>");
echo("self.location.replace('index.html')");
echo("</script>");
}
$passopen = mysql_connect("localhost", "$dbu", "$dbp");
$passinfo = mysql_db_query("filip", "SELECT * FROM mingla WHERE password = '$pass'", $passopen);
$rad = mysql_fetch_array($passinfo);
if($user == $rad["username"] & $pass == $rad["password"])
?>
/Martin
1. Varför öppnar du inte db'n i filen db.php?
2. Varför skapar du en varibel till db'n? Om du bara använder en så behöver du inte göra det!
3.
echo("<script language=JavaScript>");
echo("self.location.replace('index.html')");
echo("</script>");
skriv Header("Location: index.html") istället!
4. varför skapar du nya variabler med samma innehåll som $login_user och $login_pass? Vad betyder de där @ tecknen? Sparas de som sessions? Använd isf $_SESSION["namne"], har doch ingen naing om vad de där @-tecknen betyder. Kanske pg att jag inte gjort något i php på ett år!
5. Onödigt att göra en fetch_array, använd mysql_num_rows och se om det fanns några poster istället! SÅ ,åtse du förståss kontrollera både username och passwd i queryn.
6. hur kommer det sig att du skriver en ?> och direkt efter skriver en <? ?
7. Otroligt onödigt 2 st databas connections.
Lite kod (gör samma sak som din kod)
<?
// Lägg detta i db.php ****
mysql_connect("localhost","xxx","xxx");
mysql_select_db("min_db");
// ***********************
$num = mysql_num_rows(mysql_query("SELECT * FROM table WHERE user = '$user' AND password = PASSWORD('$password')"));
if !$num
{
// INTE INLOGGAD
Header("Location: Index.php");
}
// ANNARS INLOGGAD!
?>
tjo...
egentligen var detta som jag ville ha svar på...
mahedel skrev:
funktionen för denna sida är att den ska kolla om användarna i databasen har varit inne och sen bara stängt av browsern alltså sidan ska hämta hem alla värden från användare som inte har varit aktiva under 600 sekunder i tabellen varns namn på kolumnen är: "active"... och sen kolla om 600 sekunder har passerat... då ska den sätta tabellen online till 0 fast den förflyttar inte ens sidan...
denna rad verkar fel.... Warning: Supplied argument is not a valid MySQL result resource in /home/www/bajs/komjunity/online.php on line 10
if (!mysql_num_rows($you) < 1) {har testat att ändra på rad 10 men blir inte som jag vill... hjälp tack..
här finns sidan för att kolla hur den ser ut: http://mahedel.mine.nu/komjunity/online.php
<? require("db.php"); mysql_pconnect("localhost","$dbu","$dbp"); mysql_select_db("filip"); $prutt = $active - 20; $you = mysql_query("UPDATE mingla SET online='0' WHERE status < '$prutt'") or die ("DB Error!"); if (!mysql_num_rows($you) < 1) { header("Location: loggaut.php?reason=mahedelhasleftthebuilding"); exit; } ?>
Ska alla som inte har varit aktiva de senaste 10 minuterna bli ut kastade? Eller bara just denna person?
Så här kanske?
<?
// Lägg detta i db.php ****
mysql_connect("localhost","xxx","xxx");
mysql_select_db("min_db");
// ***********************
$result = mysql_query("SELECT * FROM table WHERE online = '1' AND user = '$user' AND password = PASSWORD('$password')") or die ("Fel #" . mysql_errno() . ": " . mysql_error());;
$num = mysql_num_rows(result);
if !$num
{
// INTE INLOGGAD
Header("Location: Index.php");
}
$data = mysql_fetch_array(result);
if $data["ActiveAt"] < time() - 600
{
mysql_query("UPDATE mingla SET online='0' WHERE user = '$user'") or die ("Fel #" . mysql_errno() . ": " . mysql_error());
}
?>
hmm..
Alla som inte har varit aktiva de senaste 10 minuterna ska bli utkastade...
Jag har redan en funktion som kickar ut en användare som inte varit aktiv under 10 minuter....
<?
@session_start();
if ($_SESSION['active'] && time()-$_SESSION['active'] > 600) {
$active=time();
header("location: /logout.php?reason=timeissup");
exit;
}
?>
hehe
<?echo$active?>
Men vad r det då du vill ha hjälp med? :l