PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Name anzeigen


Mike3845
13.05.2008, 16:52:06
Hi,
ich habe mir mit hilfe einer online-anleitung einen Loginbereich mit MySQL erstellt. Der login erfolgt mit einer login.php:

<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a>';
?>
Die dazugehörige sessionhelpers.inc.php sieht wie folgt aus:

<?
error_reporting(E_ALL);
function connect()
{
$con= mysql_connect('localhost','gergaming_neu','geheim') or die(mysql_error());
mysql_select_db('gergaming_neu',$con) or die(mysql_error());
}

function check_user($name, $pass)
{
$sql="SELECT UserId
FROM member
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}

function login($userid)
{
$sql="UPDATE member
SET UserSession='".session_id()."'
WHERE UserID=".$userid;
mysql_query($sql);
}

function logged_in()
{
$sql="SELECT UserId
FROM member
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error()) ;
return ( mysql_num_rows($result)==1);
}

function logout()
{
$sql="UPDATE member
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}

connect();
?>
Login, logout und so funktioniert auch alles.
Jetzt würde ich gern noch den Namen des angemeldeten Benutzers anzeigen lassen.
Also das da z.B. steht "Hallo Sven" wenn sich Sven gerade angemeldet hat. Wenn man nicht angemeltet ist, soll da stehen "Hallo Gast".
Wie mach ich sowas?

doppelklick
13.05.2008, 18:01:52
Hallo und Willkommen im Forum,

Deine Frage hört sich so an als ob Du nicht viel Ahnung von PHP hast.
Also bitte erst die Grundlagen lernen sonst wirst Du nicht weit kommen.
Bitte benutze auch immer die PHP-Tags im Forum. Der Code ist dann wesentlich besser lesbar.

Und zu Deiner Frage: Du hast doch die UserID. Darüber kannst Du einfach den User-Namen herausfinden und in der Variablen $_SESSION["Name"] speichern. Der Rest ist eine einfache IF_Abfrage und echo-Ausgabe.

doppelklick

Mike3845
14.05.2008, 14:56:10
So etwa??

if(isset($_GET['UserName'])) {
$_SESSION['Name'] = $_GET['UserName'];
}elseif(!isset($_SESSION['Name'])) {
$_SESSION['Name'] = "gast";
}
echo $_SESSION['Name']."\n";

Wird aber leider gast ausgegeben...

doppelklick
14.05.2008, 16:19:59
Wenn der User-Name per Get übertragen wird passt es. Wird der User-Name, wie bei Dir, mit Post übertragen musst Du $_POST['username'] verwenden.
Klappt das auch nicht musst Du den User-Namen anhand der UserId aus der Datenbank auslesen.

doppelklick

Mike3845
14.05.2008, 16:23:21
Mit Post gehts auch nich...
Klappt das auch nicht musst Du den User-Namen anhand der UserId aus der Datenbank auslesen.
Wie mach ich das?

doppelklick
14.05.2008, 16:39:02
Mit einer Datenbankabfrage wie Du sie in Deiner sessionhelpers.inc.php auch machst.

Einfacher setzt Du aber die Variabel bei Deiner login-Funktion gleich mit.
function login($userid)
{
$sql="UPDATE member
SET UserSession='".session_id()."'
WHERE UserID=".$userid;
mysql_query($sql);
$_SESSION['Name']=$_POST['username'];
}
doppelklick

Mike3845
14.05.2008, 17:05:01
Oh man ich dreh hier noch durch...Ich bekomm immernoch Gast angezeigt...
Was mach ich den falsch?

doppelklick
14.05.2008, 17:43:25
Hast Du als erstes
<?php
session_start();
?>
auf Deiner Seite stehen?

doppelklick

Mike3845
14.05.2008, 18:02:39
Ja hab ich

Vielleicht noch ein kleiner Überblick:

<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a>';


echo ('Willkommen '.$_SESSION['Name']."\n");
?>

<?
session_start();
function connect()
{
$con= mysql_connect('localhost','gergaming_neu','auchneu') or die(mysql_error());
mysql_select_db('gergaming_neu',$con) or die(mysql_error());
}

function check_user($name, $pass)
{
$sql="SELECT UserId
FROM member
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}

function login($userid)
{
$sql="UPDATE member
SET UserSession='".session_id()."'
WHERE UserID=".$userid;
mysql_query($sql);
$_SESSION['Name']=$_POST['UserName'];
}

function logged_in()
{
$sql="SELECT UserId
FROM member
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error()) ;
return ( mysql_num_rows($result)==1);
}

function logout()
{
$sql="UPDATE member
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}

connect();
?>

Mike3845
14.05.2008, 18:33:35
OK hat sich erledigt.
Vielen dank für deine Hilfe.

Jemand hat mir folgenden code für die sessionhelper.inc.php gegeben:

function getName(){
$sql="SELECT UserName FROM member
Where UserSession='".session_id()."'";

mysql_query($sql);
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)>0)
{
$user=mysql_fetch_assoc($result);
return $user["UserName"];
}
// Fehler Fall, eher Zeit für ne Exception
return "Kein Name";
}

und das hab ich dann in die login eingetragen:
echo "Dein Name ".getName();