webForumDet fria alternativet

Vilka användare är inloggade?

PHP

8 svar · 386 visningar · startad av Forcevision

Medlem sedan mars 2007217 inlägg
Frågan#1

Hejsan !

Undrar om någon här kan hjälpa mig med hur man kodar så man ser vilka som är inloggade på min sida ?
Jag har en inloggnings kod som ser ut som följande:

<?php 
	if (!isset($_POST['submit'])) { 
    echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">' . "\n"; 
    echo "\t" . '<p><span class="text">Username:</span><br />' . "\n"; 
    echo "\t" . '<input type="text" name="username" class="kantlinje"/></p>' . "\n"; 
    echo "\t" . '<p><span class="text">Password:</span><br />' . "\n"; 
    echo "\t" . '<input type="password" name="password" class="kantlinje"/></p>' . "\n"; 
    echo "\t" . '<input type="submit" name="submit" class="knapp" value="Access" /></p>' . "\n"; 
    echo '</form>' . "\n"; 
} else { 
    $conn = mysql_connect('localhost', 'användarnamn', 'lösen') or die(mysql_error()); 
    mysql_select_db('databas') or die(mysql_error()); 

    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string(sha1($_POST['password'])); 

    $query = mysql_query("SELECT uid, username, password FROM login WHERE username = '$username' AND password = '$password' LIMIT 1") or die(mysql_error()); 
    $count = mysql_num_rows($query); 

    if (!$count) 
        die('<p>Felaktigt användarnamn eller lösenord.</p>'); 

    $row = mysql_fetch_assoc($query); 

    if ($username == $row['username'] && $password == $row['password']) { 
        $_SESSION['sess_user'] = $username; 
      echo "<script type='text/javascript'>location='frame.php'</script>";
    } else 
        die('<p>Felaktigt användarnamn eller lösenord.</p>'); 

    mysql_close($conn); 
} 
?>

Sedan ser min databas ut som följande:

<?php 
$conn = mysql_connect('localhost', 'användarnamn', 'lösenord') or die(mysql_error()); 
mysql_select_db('databas') or die(mysql_error()); 

mysql_query("create table login( 
     uid int(11) not null auto_increment, 
     username varchar(255) not null, 
     password varchar(40) not null, 
     primary key(uid) 
)") or die(mysql_error()); 

mysql_close($conn); 
?>

Någon som orkar hjälpa mig med detta ?

Mvh Forcevision

Medlem sedan juni 20006 031 inlägg
#2

Du får skapa en egen tabell där du sparar uppgifterna om vilka som är online
Bifogar en funktion jag gjorde på en sida så har du något att gå efter

// Update "Users online"
//
function update_users_online()
{
	global $db, $cookie, $cur_user, $options, $page, $mid;

	if (!$cookie['is_guest'])
	{
		$user_id = $cur_user['id'];
		$ident = addslashes($cookie['username']);
	}
	else
	{
		$user_id = 0;
		$ident = get_remote_address();
	}

	$now = time();

	// Delete entries older than timeout_online seconds and any duplicates (start transaction)
	$query = ('DELETE FROM forum_online WHERE logged<'.($now-300).' OR ident=\''.addslashes($cookie['username']).'\' OR ident=\''.get_remote_address().'\'');
	mysql_query($query);
	// Add a new entry. username and user_id if logged in; ip and user_id=0 if not (end transaction)
	// Tillägg  - page, mediaid - Sidans namn och mediats idnummer (glöm INTE global)
	$sql = ('INSERT INTO forum_online (user_id, ident, logged, page, mid) VALUES(\''.$user_id.'\', \''.$ident.'\', '.$now.', \''.$page.'\', \''.$mid.'\')');
	mysql_query($sql);
}
Medlem sedan mars 20034 471 inlägg
#3

Eller så lägger du till en kolumn SenAktiv i login där du sparar timestamp för varje sidloggning som en inloggad gör. Och så bestämmer du hur länge man räknas som inloggad efter senaste sidladdning så kan du jämföra med den kolumnen. Viod utloggning sätter du kolumnen till något passande "blankt" värde.

Medlem sedan juni 20006 031 inlägg
#4

Ja, exemplet jag visade sparade vilken sida man var inne på och vad man kollade på där.
Men funktionen blir ju likadan för det.

Medlem sedan mars 2007217 inlägg
#5

Hmm... okej nu hängde jag inte med !
Måste jag inte göra något i databasen ?

Medlem sedan juni 20006 031 inlägg
#6

Hur mycket ska du veta om vilka som är online?
Bara antalet, eller ska du veta vilka som är online och var på sidan dom befinner sig?

Medlem sedan mars 2007217 inlägg
#7

Hade tänkt att man bara skall se användarnamnet på den som är inloggad.

Medlem sedan juni 20006 031 inlägg
#8

Du kan lägga till ett fält i logintabellen där du sparar tiden.
När dom öppnar en sida så uppdaterar du tabellen med aktuell tid.

Sen när du ska kolla vilka som är online så hämtar du alla användare där tiden är inom t.ex sista tre minuterna.

Medlem sedan mars 2007217 inlägg
#9

Jag är inte så haj på detta med php så fattar inget om det du skrev nu. :)
Men det låter inte så lätt så det får nog vara för min del.
Men tack ändå !
De va om det va en enkel kod som någon kunde fixa som man bara la in någon stans så såg man vilka det va men det där med tabeller och grejer kan jag inget om så då va det kört.