SESSION bekommt falschen Wert

Nepheus

Erfahrenes Mitglied
Hallo,

hab ein kleines problem, ich arbeite mit sessions und beim login soll die Session 'name' den Wert Name aus der Tabelle Members bekommen von dem Benutzer der sich halt anmeldet. Er sucht zwar Name raus nur nicht aus der Tabelle Members sondern aus der Tabelle Links. Ich versteh nicht warum er das macht vielleicht kann mir ja jemand helfen hier der Code:

PHP:
$sql = "SELECT * FROM members WHERE (Nickname = '$Nickname') AND (Kennwort = '".md5 ($Kennwort)."')";
$rs = mysql_query ($sql , $dbverbindung);
$row = mysql_fetch_array($rs);
$_SESSION["name"] = $row["Name"];

Ausgabe:

PHP:
echo "Hallo ".$_SESSION["name"];

am Anfang jeder Datei steht:

PHP:
<?php session_start (); ?>


Greetz
 
Schonmal folgendes probiert?
PHP:
$rs = mysql_query ($sql , $dbverbindung)  or die("Error: " . mysql_error());
 
da kommt kein fehler, ich sehe gerade das die variable $status auch keinen wert bekommt, irgendwie geht der auf die falsche Datenbank aber ich versteh nicht was da falsch sein soll
 
Poste doch mal die ganze Datei ;)

Testweise würde ich auch mal alle Variablen ausgeben lassen...

Achja: Nickname sollte Unique in der Tabelle sein, sonst geht da garnichts ;) Am besten auch eMail als Unique speichern.
 
Habs folgendermaßen abgeändert:

PHP:
<?php
include('settings.php');

$dbverbindung = mysql_connect ($host, $user, $pw);
@mysql_select_db ($db, $dbverbindung);

$sql = "SELECT * FROM members WHERE (Nickname like '$Nickname') AND (Kennwort = '".md5 ($Kennwort)."')";
$rs = mysql_query ($sql, $dbverbindung) or die("Error: " . mysql_error());  
while ($row = mysql_fetch_array($rs))
{
$status = $row["status"];
$name   = $row["name"];

echo $status;
echo $name;
}

Ausgabe = 0
wieso
Habe eine ältere Datei die genauso aussieht wos funktioniert:

PHP:
<?php
session_start (); // Starte eine Session.

// ======== AUFBAU DER DATENBANKVERBINGUN ========
$connectionid = mysql_connect ("localhost", "user", "pw");
@mysql_select_db ("db", $connectionid);

// Generiere und starte die Abfrage
$sql = "SELECT * FROM members WHERE (Nickname like '$Nickname') AND (Kennwort = '".md5 ($Kennwort)."')"; 
$result = mysql_query ($sql, $connectionid); 

if (mysql_num_rows ($result) > 0) {
  // Ein Datensatz wurde gefunden.
  $datenrichtig = true;

  // Variable $user_eingeloggt erstellen.
  $user_eingeloggt = true;
  
  $data = mysql_fetch_array ($result);

  $_SESSION["dd_usernickname"] = $data["Nickname"];
} else {
  // Die Benutzerdaten waren falsch.
  $datenrichtig = false;

  // Variable $user_eingeloggt erstellen.
  $user_eingeloggt = false;
}

// Variable $user_eingeloggt in der Session registrieren.
session_register ("dd_usereingeloggt");
?>

<html>
<head>
  <?php if ($datenrichtig) { ?>
  <meta http-equiv="Refresh" content="0; url=../profile.php?<?=session_name()?>=<?=session_id()?>">
  <?php } ?>
</head>
<body>
<?php

if ($datenrichtig) {
  echo "";
} else {
ob_start ();

session_start ();
session_unset ();
session_destroy ();

ob_end_flush ();
  echo "Die Daten waren falsch.";
}

?>
</body>
</html>
 
hab die beiden dateien vertauscht jetzt geht es, obwohl sie fast gleich sind, naja ich änder die datei jetzt bisschen um dann benutz ich sie so, danke für eure hilfe...
 
Benutzt du POST oder GET? Dann ersetze mal $Nickname durch z.b. $_POST["nickname"]

PHP:
<?php
session_start();
include('settings.php');

$dbverbindung = mysql_connect ($host, $user, $pw);
@mysql_select_db ($db, $dbverbindung);

$sql = "SELECT member, nickname FROM members WHERE Nickname LIKE '".$_POST["Nickname"]."' AND (Kennwort = '".md5($_POST["Kennwort"])."')";
$rs = mysql_query ($sql, $dbverbindung) or die("Error: " . mysql_error());
while ($row = mysql_fetch_array($rs))
{
	echo $row[0].'<br>';
	echo $row[1];
}
?>

Wenn das geht, ersetze die echo-Zeilen mit
PHP:
$_SESSION["userid"] = $row[0]; 
$_SESSION["nickname"] = $row[1];
 
Zurück