Login-Name wird nur einmal ausgegeben

Ken89

Mitglied
Hallo lieber Coder-Kollegen ;)

ich hab wieder einmal ein Problem, und weiß nicht mehr weiter:

ich habe eine SQL Datenbank und möchte nach dem Login des Users dessen links oben im Eck ausgeben, dies klappt auch, nur verschwindet dieser wieder sobald der user sich im navi bewegt hier mal meine index.php villeicht erkennt ihr den fehler wie gesagt ich bin ratlos

PHP:
<?php 
session_start();

?>
<html>
<head>
<title>
	blubb - Game
</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="head">
<!-- <a href="index.php"><img border="0" src="img/headera.jpg"></a>--!></div>
<div class="navi"><a href="?section=news" >[ News ]</a> - <a href="?section=loginaa" >[ Login ]</a> - <?php 
if (logged_in()){
echo '<a href="?section=manageaxx" >[ Mein Account ]</a>'; }
else echo '<a href="?section=registrieren" >[ Registrieren ]</a>'; ?>- <a href="?section=play" >[ Online spielen ]</a> - <a href="?section=board" >[ Forum ]</a> - <a href="?section=kontakt" >[ Kontakt ]</a> - <a href="?section=links" >[ Links ]</a></div>
<div class="content">
<?php if (!empty($_GET['section']))
		{
		include(basename($_GET['section']).'.php');
    }
    
    if(empty($_GET['section']))
    {
    include('news.php');
    
		} 

require_once ("login.php");
if(logged_in())
  {
    echo '<table>
    
    <tr><td>Hallo <red>' .namecheck($userid) .'</red></td></tr> // die Funktion ist definiert wie ihr unten sehen könnt
    
    <tr><td><a href="index.php?section=logout">Ausloggen</a></td></tr>
    </table>';
  }
  else echo "";

</div>
</body>
</html>

und hier die Funktion:
PHP:
function namecheck($userid)
{
    $sql="SELECT UserVorname
    FROM users 
    WHERE UserSession ='" .session_id()."' AND UserID= '". $userid ."'
    LIMIT 1";
 
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $user=mysql_fetch_assoc($result);
        
        return $user['UserVorname'];
    }

}

Bin um jede Hilfe sehr dankbar :)
 
Ich stehe vor einem änlichen Problem.
Arbeite auch exakt nach dem Tutorial was du bentutzt hast.
Habe die Website in der ich Arbeite in zwei Bereichen aufgeteilt. Links wird die navi per include eingebunden, und rechts der content Bereich....

Nun habe ich das Problem, wenn ich mehrere User anlege, und spezielle Daten nur von dem eingeloggtem User anzeigen will, das sie dann auf einmal wieder wegsind, sobal ich woanders hin navigiere.

Hier mein Code der zu includenden Datei für die Navi (contentbereich ist ähnlich):

PHP:
<?php
$pfad = "index.php?site=$site";
session_start();
#include("sessionhelpers.inc.php"); //auskommentiert, da sie schon mit der index.php geladen wird




if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
    { login($userid); }
}


if (!logged_in())

echo '

Bilder oder ähnliches
';

else if(!isset($_POST['logout']))
{
     echo "<div id='caption_nav'>Interner Bereich</div>";
    //Userdaten aus DB auslesen (zur Darstellung des Userbereichts)
    $query = mysql_query("SELECT * FROM users WHERE UserID='".$userid."'");
    $row=mysql_fetch_array($query);

           echo "User-ID: ".$row['UserID']."<br>";
           echo "Name: ".$row['UserName']."<br>";
           echo "E-Mail: ".$row['UserMail']."<br><hr><br>";


         echo "<br>Status: ";
         include("logged_in.php");
    echo '
          <form action="'.$pfad.'" method="post">
          <input type="submit" name="logout" id="logout" value="Ausloggen">
          </form>
          ';
}


if(isset($_POST['logout']))
{
   logout();
   echo "[Bild logout]";
}

?>

Zur erläuterung: Ich habe in der Datenbank abgefragt, ob erfolgreich eingeloggt wurde. Und dann noch mit ner If Bedingung gefragt, das der Logoutbutton NICHT geklickt wurde.
Das hat folgenden Grund: Wenn ich die Bedingung nicht drin habe, verschwindet die Navigaion nicht, nachdem man sich ausgeloggt hat. Erst wenn man wieder einen anderen Link klickt, ist sie weg.... wie kann ich eine Abfrage einbauen, die permanent überprüft und den Inhalt aktualisiert, je nach login status?
Aber ich glaub das hat mit dem eigentlichne Problem nichts zutun...

Wie gesagt wenn ich mich einlogge, erscheint der Text (Username, Userid, Email usw.) in meinem gewünschten Bereich. Wenn ich dann navigiere, werden die Variablen aus der DB nicht mehr angezeigt (gespeichert sind sie jedoch immer noch)!
 
Zuletzt bearbeitet:
Das liegt daran, dass $userid nur beim login gesetzt wird, siehe die If-Abfrage dazu
PHP:
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
    { login($userid); }
}

Wenn $_POST['login'] nicht gesetzt ist, wird auch $userid nicht gesetzt.

Ihr müsst also einfach folgende Zeile hinzufügen.
PHP:
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false) {
        login($userid); 
        $_SESSION['userid'] = $userid;
    }
}

Und den MySQL-Query dann wie folgt anpassen:
PHP:
$query = mysql_query("SELECT * FROM users WHERE UserID='".$_SESSION['userid']."'");

Schaut aber lieber erst nochmal in die Funktion login(), da wird das sicher schon gemacht - dann muss lediglich der Query angepasst werden.
 

Neue Beiträge

Zurück