Login / Session Problem

DaKa

Mitglied
Folgendes:

<?php
session_start ();
include ("db.php");
$result=mysql_result(mysql_query("SELECT COUNT(*) FROM user WHERE name = '$name' AND password = '$password'"), 0);

if ($result>0) {

$user = true;

} else {

$user = false;
echo "Die Daten waren falsch.";
}
session_register("name");
session_register("user");
?>
<html>
<head> <?php if ($user){ ?>
<meta http-equiv="Refresh" content="1; url=http://localhost/index.php">
<?php } ?>
</head>

<body>
<?php if ($user){
echo " Erfolgreich eingeloggt. Sie werden zur Startseite weitergeleitet… ";
}
?>

</body>
</html>

Geht nicht. Die eigegebenen Daten stimmmen aber. Wenn ichs ohne Session mach log er sich ein. Müsste also darin liegen. Aber ich wüsste nicht was falsch ist.
 
PHP:
$user = false; 
echo "Die Daten waren falsch."; 
} 
session_register("name"); 
session_register("user");


hier liegt der fehler. du darfst keine ausgabe an den browser machen bevor du nich alles mit den sessions abgehandelt hast.
 
wenn man mit sessions nen passwort geschützten bereich macht, muss man doch die session id muss man doch bei jedem link übergeben, der im geschützten bereich sein soll???
 
@ doppel : ne muss man nicht
php vergibt die session id automatisch soviel ich weiss

@ stiffy

so gehts aber auch nicht :

<?php
session_start ();
include ("db.php");
$result=mysql_result(mysql_query("SELECT COUNT(*) FROM user WHERE name = '$name' AND password = '$password'"), 0);

if ($result>0) {

$user = true;

session_register("name");
session_register("user");

} else {

$user = false;
echo "Die Daten waren falsch.";
}

?>
<html>
<head> <?php if ($user){ ?>
<meta http-equiv="Refresh" content="1; url=http://localhost/index.php">
<?php } ?>
</head>

<body>
<?php if ($user){
echo " Erfolgreich eingeloggt. Sie werden zur Startseite weitergeleitet… ";
} ?>

</body>
</html>

Ich habe jetzt keine ausgabe an den Browser vor den Sessions.
 
ich will mich nciht einmischen aber hier mal n auszug aus meinem login script

PHP:
if(isset($submit))
{
$select = mysql_query("SELECT * FROM members WHERE name = '$nick'") or die ("Nick exestiert nicht");
$arr = mysql_fetch_array($select);
if ($pw == "$arr[pw]")
{
echo "zugriff";
}
else
{
echo "falsches pw";
}
}

versuchs so ^^
 
gaaaaanz einfach :D

moin :)


ich hab das so gemacht:

PHP:
@mysql_select_db ("deinetabelle", $connID);     // db connection
$sql = "SELECT * FROM benutzerdaten WHERE (benutzername like '$username') AND (kennwort = '$password')";
$result = mysql_query ($sql, $connID);

if (mysql_num_rows ($result) > 0)
{
	$datenrichtig = true;
	$user_eingeloggt = true; 
}

else
{
	$datenrichtig = false;
	$user_eingeloggt = false;
}

session_register ("user_eingeloggt", "username");

if ((session_is_registered ("user_eingeloggt")) and ($user_eingeloggt))     // auch deine abfrage ob man eingeloggt ist für geschützte bereiche!
{
       # blub
}

else     // wenn man halt nich eingeloggt ist...
{
         # bla
}


cu, slimie
 
Zuletzt bearbeitet:
@Daka

ich habe Deinen Code genommen, den ganz ersten, und ausprobiert und er ging. Was hast Du denn für ein Problem, wie war denn die Fehlermeldumg?????

Cu Major
 
Fehlermeldung direkt gibt es nicht er gibt nur aus, dass die Daten nicht stimmen. Ich weiss aber das sie richtig sind.
 
Ja und?
Dann mach halt ein paar debugs und Du kommst da hinter was da nicht stimmt.

PHP:
<?php 
session_start (); 
include ("db.php"); 
$result=mysql_result(mysql_query("SELECT COUNT(*) FROM user WHERE name = '$name' AND password = '$password'"), 0); 
echo "Resultat: $result<br>Name: $name<br>";

if ($result>0) { 

$user = true; 

} else { 

$user = false; 
echo "Die Daten waren falsch."; 
} 
session_register("name"); 
session_register("user"); 
?> 
<html> 
<head> <?php if ($user){ ?> 
<meta http-equiv="Refresh" content="1; url=http://localhost/index.php"> 
<?php } ?> 
</head> 

<body> 
<?php if ($user){ 
echo " Erfolgreich eingeloggt. Sie werden zur Startseite weitergeleitet… "; 
} 
?> 

</body> 
</html>
 
Zurück