Jump to content


Photo

Who's logged in?


  • Please log in to reply
7 replies to this topic

#1 treilad

treilad
  • Members
  • PipPipPip
  • Advanced Member
  • 58 posts

Posted 27 July 2006 - 04:35 PM

I'm trying to create a simple code to display who's logged in.

Ex: Welcome, Treilad.

But I don't know where to start.  :-\

#2 brown2005

brown2005
  • Members
  • PipPipPip
  • Advanced Member
  • 943 posts

Posted 27 July 2006 - 04:49 PM

hi, what i do is when a user uses the login script i create a session['MemberID'] and use this to call the person from the members table..

i.e.

$sql = "SELECT * FROM members where members_id='session['MembedID']' LIMIT 1;";

and then echo the result

#3 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 27 July 2006 - 04:51 PM

It'd be better if you stored the members username in a session, then you dont need to query the database to get the username.

#4 treilad

treilad
  • Members
  • PipPipPip
  • Advanced Member
  • 58 posts

Posted 27 July 2006 - 04:52 PM

That sounds like the better idea, I'm just not sure how to do that.  :-[ But I'll get to work on trying. Here's my login script, if it helps.

<?php

include ('db.php');

if(isset($_COOKIE['ID_my_site']))

{ 
	$username = $_COOKIE['ID_my_site']; 
	$pass = $_COOKIE['Key_my_site'];
	
	$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());

	while($info = mysql_fetch_array( $check )) 	
		{

		if ($pass != $info['password']) 
			{
			
			}

		else
			{
			header("Location: index.php");

			}

		}

}


if (isset($_POST['submit'])) { // if form has been submitted


	if(!$_POST['username'] | !$_POST['pass']) {
		die('You did not fill in a required field.');
	}

	// checks it against the database

	if (!get_magic_quotes_gpc()) {
		$_POST['email'] = addslashes($_POST['email']);
	}

	$check = mysql_query("SELECT * FROM users WHERE username = '".$_POST['username']."'")or die(mysql_error());

$check2 = mysql_num_rows($check);
if ($check2 == 0) {
		die('That user does not exist in our database. <a href=registration.php>Click Here to Register</a>');
				}


while($info = mysql_fetch_array( $check )) 	
{

$_POST['pass'] = stripslashes($_POST['pass']);
	$info['password'] = stripslashes($info['password']);
	$_POST['pass'] = md5($_POST['pass']);


	if ($_POST['pass'] != $info['password']) {
		die('Incorrect password, please try again.');
	}

else
{
	
$_POST['username'] = stripslashes($_POST['username']);
	

$hour = time() + 2592000; 
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);	

header("Location: index.php");
}

}

} else {	

?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table border="0">
<tr><td colspan=2><h1>Login</h1></td></tr>
<tr><td>Username:</td><td>
<input type="text" name="username" maxlength="40">
</td></tr>
<tr><td>Password:</td><td>
<input type="password" name="pass" maxlength="50">
</td></tr>
<tr><td colspan="2" align="right">
<input type="submit" name="submit" value="Login">
</td></tr>
</table>
</form>
<?php
}


?>


#5 treilad

treilad
  • Members
  • PipPipPip
  • Advanced Member
  • 58 posts

Posted 27 July 2006 - 05:03 PM

I added this to the login code:

$_SESSION['username'] = '$_POST['username']';

-right after the setcookie() function.

Could I do that and just session_start(); at the beginning of my index page, and then maybe echo the username? (That last part I don't know how to do.)

#6 treilad

treilad
  • Members
  • PipPipPip
  • Advanced Member
  • 58 posts

Posted 27 July 2006 - 05:04 PM

Wait, is a session even necessary if I already have a cookie set with the username?

I think I could do it if I knew how to echo something from the cookie:

<?php

if(isset($_COOKIE['ID_my_site']))

{
echo 'the username';
}


?>

#7 treilad

treilad
  • Members
  • PipPipPip
  • Advanced Member
  • 58 posts

Posted 27 July 2006 - 06:04 PM

Ugh. I've been trying. I can't get it. =/

#8 dark dude

dark dude
  • Members
  • PipPipPip
  • Advanced Member
  • 53 posts

Posted 27 July 2006 - 10:43 PM

Lol, I encountered this problem earlier, I got passed it by adding:
$query="UPDATE Users SET LastActive=CURRENT_TIMESTAMP(NOW()) WHERE Username='$_SESSION['Username']'";
mysql_query($query);

to every page, and then:

<?
$query="SELECT * FROM Users WHERE UNIX_TIMESTAMP(LastActive) > UNIX_TIMESTAMP(NOW()) - 300";
$result3=mysql_query($query);

$num3=mysql_numrows($result3);

$i=0;
$rnm2=1;
while ($i <= $num3){

$Username3=mysql_result($result3,$i,"Username");

if($rnm2 < $num3){
echo ''.$Username3.', ';
} elseif($rnm2==$num3){
echo ''.$Username3.'.';
}
$rnm2++;
$i++;
}
?>

to the place you wanna view who's online. This shows everyone who's been active in the last 5 minutes, which is close enough...




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users