PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Name anzeigen (http://www.selfphp.de/forum/showthread.php?t=19357)

Mike3845 13.05.2008 16:52:06

Name anzeigen
 
Hi,
ich habe mir mit hilfe einer online-anleitung einen Loginbereich mit MySQL erstellt. Der login erfolgt mit einer login.php:
Code:

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

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

AW: Name anzeigen
 
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

AW: Name anzeigen
 
So etwa??

PHP-Code:

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

AW: Name anzeigen
 
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

AW: Name anzeigen
 
Mit Post gehts auch nich...
Zitat:

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

AW: Name anzeigen
 
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.
PHP-Code:

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

AW: Name anzeigen
 
Oh man ich dreh hier noch durch...Ich bekomm immernoch Gast angezeigt...
Was mach ich den falsch?

doppelklick 14.05.2008 17:43:25

AW: Name anzeigen
 
Hast Du als erstes
PHP-Code:

<?php
session_start
();
?>

auf Deiner Seite stehen?

doppelklick

Mike3845 14.05.2008 18:02:39

AW: Name anzeigen
 
Ja hab ich

Vielleicht noch ein kleiner Überblick:
PHP-Code:

<? 
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");
?>

PHP-Code:

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

AW: Name anzeigen
 
OK hat sich erledigt.
Vielen dank für deine Hilfe.

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

function getName(){ 
  
$sql="SELECT UserName FROM member  
    Where UserSession='"
.session_id()."'"
     
     
mysql_query($sql);  
   
$resultmysql_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:
PHP-Code:

  echo "Dein Name ".getName(); 



Alle Zeitangaben in WEZ +2. Es ist jetzt 07:41:16 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.