Login mit Session

Radiate

Mitglied
Auch wenn dieses Thema des öfteren bereits angeschneidet wurde - meine Redensart, also echt^^ - so habe ich nichts gefunden.
Ich schwöre es!
Ich habe gegoogelt, in diesen Foren gesucht, und sogar dort nachgesehen wo ich angefangen habe PHP zu lernen.
Aber das was ich bekomme sind entweder Logins ohne Session oder Logins mit Cookies.
Was ich brauche sind folgende Dinge:

Ein Login das beim Einloggen die geposteten Daten in $_SESSION ablegt und die der User dann sehen kann, als Bsp. lege ich euch ein Bild dazu.
Ich möchte ganz einfach das der User - wenn er sich eingeloggt hat - dort steht und nicht alle User die hier registriert sind. :D

Echt lol, voll lustig diese PHP Sprache.^^

Also die Files + Bild:

account_login.php
PHP:
<?
session_start();
include 'sessionhelpers.inc.php';

if (isset($_POST['login'])) {
	$id=check_user($_POST['username'], $_POST['password']);
	
	if ($id!=false) {
	login($id);
	echo 'User: ';
	$sql = "SELECT username FROM dxcp_user";
	$result = mysql_query($sql);
	while($row = mysql_fetch_object($result))
	echo "$row->username<br><br>";
	echo '<a href="index.php?section=account_logged_in" onfocus="if(this.blur)this.blur()">Account Übersicht</a><br>';
	echo '<a href="index.php?section=account_logout" onfocus="if(this.blur)this.blur()">Account Logout</a>';
	}
	
	else {
	echo 'Logindaten nicht<br>';
	echo 'korrekt!<br><br>';
	echo '<a href="index.php?mainpage" onfocus="if(this.blur)this.blur()">zurück</a>';
	}
	
	}
else {
	echo 'Hallo, Besucher!<br><br>';
	echo '<form method="post" action="index.php?section=account_login">
	Benutzername:<br> <input name="username" type="text" size="14" maxlength="32"><br>
	Password:<br> <input name="password" type="password" id="password" size="14" maxlength="32"><br><br>
	<input name="login" type="submit" id="login" value="Login">
	</form>';
	echo '<a href="index.php?section=register" onfocus="if(this.blur)this.blur()">Account erstellen</a>';
	}
?>

account_logged_in.php
PHP:
<?
session_start();
include 'sessionhelpers.inc.php';

if (logged_in()) {
	echo 'User: ';
	$sql = "SELECT username FROM dxcp_user";
	$result = mysql_query($sql);
	while($row = mysql_fetch_object($result))
	echo "$row->username<br><br>";
	echo '<a href="index.php?section=account_logged_in" onfocus="if(this.blur)this.blur()">Account Übersicht</a><br>';
	echo '<a href="index.php?section=account_logout" onfocus="if(this.blur)this.blur()">Account Logout</a>';
	echo $id;
	}
else {
	echo 'Hallo, Besucher!<br><br>';
	echo '<form method="post" action="index.php?section=account_login">
	Benutzername:<br> <input name="username" type="text" size="14" maxlength="32"><br>
	Password:<br> <input name="password" type="password" id="password" size="14" maxlength="32"><br><br>
	<input name="login" type="submit" id="login" value="Login">
	</form>';
	echo '<a href="index.php?section=register" onfocus="if(this.blur)this.blur()">Account erstellen</a>';
	}
?>

Bild
Als Anhänge drunter


Bitte helft mir, ein Login mit Session wie es so derzeit ist, nur das statt alle registrierten User halt nur der eingeloggte User angezeigt wird.

Im "logged_in" Anhang oben Rechts.

Vielen Dank schonmal im Voraus. ;)
 

Anhänge

  • login.jpg
    login.jpg
    152,2 KB · Aufrufe: 47
  • logged_in.jpg
    logged_in.jpg
    179,3 KB · Aufrufe: 44
Tausche den Abschnitt, in dem alle Benutzernamen ausgegeben werden, einfach mit der Ausgabe des Benutzernamens der aktuellen Sitzung aus.
 
Also wenn ich den Code kennen würde, dann würde ich hier nicht nach Hilfe posten. ;)

Ich benötige einen Code der dies auswechselt.

Ganz ehrlich, ich habe nach diesen Code gesucht und gesucht und jede Sekunde verflucht!

Dies habe ich gefunden aber es passt sogarnicht in mein Script, jedenfalls weiß ich nicht wie ich das bewerkstelligen soll.

PHP:
$username = $_POST["username"];
$passwort = md5($_POST["password"]);

$abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
    {
    $_SESSION["username"] = $username;
    echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
    }

Wenn du dir meinen Code einmal ansiehst, dann wirst du feststellen das ich nicht weiß wie ich das hier rein hauen soll.

Denn die Logins werden mithilfe dieser File erreicht:

sessionhelpers.inc.php
PHP:
<?
include("config.php");

function check_user($username, $password)
{
    $sql="SELECT id
    FROM dxcp_user
    WHERE username='".$username."' AND password=MD5('".$password."')
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $username=mysql_fetch_assoc($result);
        return $username['id'];
    }
    else
        return false;
}

function login($id)
{
    $sql="UPDATE dxcp_user
    SET session='".session_id()."'
    WHERE id=".$id;
     mysql_query($sql);
}

function logged_in()
{
    $sql="SELECT id, username
    FROM dxcp_user
    WHERE session='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
      return ( mysql_num_rows($result)==1);
}

function logout()
{
    $sql="UPDATE dxcp_user
    SET session=NULL
    WHERE session='".session_id()."'";
     mysql_query($sql);
    session_destroy();
}
?>
 
Soweit ich das beurteilen kann, sorgt folgender Abschnitte für die Ausgabe aller Benutzer:
PHP:
$sql = "SELECT username FROM dxcp_user";
$result = mysql_query($sql);
while($row = mysql_fetch_object($result))
echo "$row->username<br><br>";
 
Ich mag dich immer mehr @ Gumbo. ;)

Hab die besagte Stelle durch diese ersetzt:

besagte
PHP:
$sql = "SELECT username FROM dxcp_user";
$result = mysql_query($sql);
while($row = mysql_fetch_object($result))
echo "$row->username<br><br>";

neu
PHP:
echo "".$_POST['username']."<br><br>";

Problem jetzt, wie bekomme ich das auf die logged_in.php? :D
 
Okay, Smooth Criminal. :D

Erst übergebe ich die $_POST username Daten vom Formular in eine Variable, etwa so:

PHP:
$name = $_POST['username'];

als nächstes werde ich die Variable in eine $_SESSION legen - möge sie behütet werden^^ -

PHP:
//Session registieren
$_SESSION['username'] = $name;

Und nun sind wir der Variabel mächtig und können sie auf jeder Seite verwenden. ;)

Achja, und so können wir dies dann erscheinen lassen, in jeder Seite dieser Homepage oder eurer. :P

PHP:
echo "".$_SESSION['username']."";

Bekomm ich ne Note dafür?^^

Wieder einmal herzlichsten Dank an Gumbo
 
PHP:
echo "".$_SESSION['username']."";

Die Anführungszeichen sind in diesem Falle unnötig.

PHP:
echo $_SESSION['username'];

Reicht da vollkommen.
 
Informiere dich noch über SQL-Injektionen und die Gefahren, die davon ausgehen. Die dahinter stehen Sicherheitslücke (das Nichtmaskieren von möglichen Metazeichen) lässt sich auch auf andere Sprachen übertragen, so etwa (X)HTML/JavaScript und sogar PHP selbst (siehe Cross-Site Scripting).
 
Zurück