webForumDet fria alternativet

sessions och mysql...

22 svar · 470 visningar · startad av mahedel

mahedelMedlem sedan juli 2002105 inlägg
#1

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

FuelMedlem sedan okt. 20001 285 inlägg
#2

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

mahedelMedlem sedan juli 2002105 inlägg
#3

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

FuelMedlem sedan okt. 20001 285 inlägg
#4

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 ? :)

mahedelMedlem sedan juli 2002105 inlägg
#5

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

FuelMedlem sedan okt. 20001 285 inlägg
#6

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;
}
mahedelMedlem sedan juli 2002105 inlägg
#7

tack...

det var något sådant jag had etänkt mig.. ska också iväg nu och praktisera...

höres..

/MVH Martin

FuelMedlem sedan okt. 20001 285 inlägg
#8

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

mahedelMedlem sedan juli 2002105 inlägg
#9

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

BromsMedlem sedan sep. 2002188 inlägg
#10

farligt.. ^^

mahedelMedlem sedan juli 2002105 inlägg
#11

hmm..

vad är farligt??

/Martin

mahedelMedlem sedan juli 2002105 inlägg
#12

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;
}
?>
Alpha IIMedlem sedan maj 20002 993 inlägg
#13

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"]!

mahedelMedlem sedan juli 2002105 inlägg
#14

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

Alpha IIMedlem sedan maj 20002 993 inlägg
#15

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.

Alpha IIMedlem sedan maj 20002 993 inlägg
#16

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!

?>
mahedelMedlem sedan juli 2002105 inlägg
#17

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;
}
?>
Alpha IIMedlem sedan maj 20002 993 inlägg
#18

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());

	}
	

?>
mahedelMedlem sedan juli 2002105 inlägg
#19

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?>
Alpha IIMedlem sedan maj 20002 993 inlägg
#20

Men vad r det då du vill ha hjälp med? :l

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)