• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit Login

Status
Für weitere Antworten geschlossen.

Anonymous

Neues Mitglied
Hallo,

ich habe ein Problem mit folgendem Script.

Den Fehler könnt ihr selbst unter http://ltm.lm.funpic.de/php/gb_login.html sehen. Dort einfach etwas eingeben (oder auch nicht) und auf Abschicken klicken.

In folgendem Code (gb_login.php) muss ein Fehler sein, den ich leider nicht finde:
Code:
<html>
<head>
<title>G&auml;stebuch :: Admin-Login</title>
<link rel="stylesheet" type="text/css" href="gb_style.css">
</head>
<body>
<div align="center">
<div class="index">
<?php
include("gb_datenbank.php");
					
$benutzername = $_POST["benutzername"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$cookie = $_POST["cookie"];
					
if(!empty($passwort))
{
$sql = "SELECT * FROM `gaestebuch_admin` WHERE `passwort` = '$passwort' LIMIT 1";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{
if($cookie == "on")
{
setcookie("benutzername", $benutzername, time()+864000);
}
session_start();
$_SESSION["benutzername"] = $benutzername;
echo "
";
echo "Hallo $benutzername,";
echo "
";
echo "Sie haben sich erfolgreich eingeloggt.";
echo "
";
echo "<a href=gb_uebersicht.php>Zur &Uuml;bersicht</a>";
echo "

";
}
else
{
echo "
";
echo "Sie haben das falsche Passwort eingegeben.";
echo "
";
echo "<a href=gb_login.html>Zur&uuml;ck</a>";
echo "

";
}
}
else
{
echo "
";
echo "Sie m&uuml;ssen das Passwort angeben.";
echo "
";
echo "<a href=gb_login.html>Zur&uuml;ck</a>";
echo "

";
}
?>
</div>
</div>
</body>
</html>

Kann jemand den / die Fehler finden?

Ich würde mich sehr über hilfreiche Antworten freuen.
 
Werbung:
Das Problem ist, dass er immer "Sie m&uuml;ssen das Passwort angeben." ausgibt, egal, ob man nun gar nichts angibt (da soll es kommen), das falsche Passwort (da soll "Sie haben das falsche Passwort eingegeben." kommen) oder ob man das richtige Passwort angibt. Er zeigt immer das an.

P.S. Benutzernamen soll man auch nicht ändern können. Gibt nur einen Admin.
 
Werbung:
in deinem html formular heisst das feld für die passwort eingabe passwort...
Code:
<input type="password" name="passwort" class="standard">

im php skript willst du den wert von password holen.
[tippfehler?]
Code:
$passwort = $_POST["password"];

da er aus dem feld eben keinen wert holen kann, durchläuft er die erste if anweisung nicht sondern springt immer direkt zum else (;
 
Ich hab noch ein weiteres Problem mit dem Gästebuch.

Ich schreibe es nun in diesen Thread um keinen neuen aufmachen zu müssen.

Also, ich habe es so programmiert, dass wenn man sich mit den Admin-Daten einloggt, man die Beiträge löschen kann.

Und links von dem Beitrag steht ja immer "Eintrag: Zahl". Dort lasse ich einfach die ID ausgeben. Das funktioniert auch gut.
Jetzt ist nur, wenn ich jetzt einen Beitrag lösche mit "DELETE FROM `gaestebuch` WHERE `id` = '$id' LIMIT 1". Dann ist das Problem, dass sich dadurch ja nicht die ID verkleinert.

Das heisst, wenn ich einen Beitrag schreibe, steht links "Eintrag: 1". Wenn ich ihn lösche und einen neuen schreibe steht links "Eintrag: 2", obwohl man nur einen sieht.

Wie kann ich dieses Problem umgehen, beziehungsweise einfach lösen?
 
Werbung:
mhm, ich nehem an du liest deine einträge in ner schleife aus deiner datenbank, oder?
dann würd ich einfach ne neue variable definiern, die bei jedem schleifendurchlauf um eins erhöht und ausgegeben wird (;
 
Werbung:
[php:1:901a49bbb1]<?php
$sql = "SELECT * FROM guestbook ORDER BY id ASC";
$ergebnis = mysql_query($connection, $sql);

$zaehlmich = '1';

while ($row = mysql_fetch_object($ergebnis)){
echo "Eintrag $zaehlmich :
", $row->comment, "

von", $row->user , "usw... bla";
$zaehlmich++; #erhöht den spaß um eins
}

?>[/php:1:901a49bbb1]

...keine ahnung wie deine ausgabe aussieht (;

[edit] ich bin zu langsam -.-' [/edit]
 
Ich hab es nun so versucht:
Code:
while($row = mysql_fetch_array($result))
{
$eintrag = 0;
$eintrag++;
/* ... */
echo $eintrag;
/* ... */
}

Dann gibt er aber immer die Zahl 1 aus.
 
wenn
Code:
$eintrag = 0;

innerhalb der schleife steht wird die variable auch jedesmal auf 0 gesetzt, wenn die schleife durchlaufen wird (;

also muss sie vor der schleife deklariert werden.
 
Werbung:
Also, so in etwa:
Code:
$sql = SELECT `beitrag` FROM `gaestebuch`";
$result = mysql_query($sql);
$eintraege = mysql_num_rows($result);
while(...)
$eintraege--;
echo $eintraege

?

Wäre im Prinzip okay, aber das Problem ist ja, dass wenn man das so machen würde, immer eine Zahl zu niedrig ausgegeben würde.

Beispiel:
$eintraege erhält den Wert "2".

Nun wird es in der Schleife allerdings erst um 1 runtergesetzt. Aktueller Wert: "1".
Dieser wäre allerdings falsch!?

Außer man würde mit der Zählung bei 0 anfangen (1 beitrag = eintrag 0), aber das wäre ja Schwachsinn...
 
Werbung:
addier doch einfach eins auf die eintragszahl aus der datenbank drauf
 
Wie soll das funktionieren?

Beispiel:
- Der erste Beitrag.
- In der Datenbank existiert nur ein Datensatz.
- 1+1 = 2

2 wäre doch falsch!?
 
mir faellt grade auf das es sowieso immer klappt. da hat niemals ein eintrag nummer 0 :)
allerdings ist es falsch was du machst - erst variable erniedrigen und dann ausgeben. mach es lieber so:
[php:1:d5f20a2a4c]
<?php
print ($eintrage--);
[/php:1:d5f20a2a4c]
 
Werbung:
Wie meinst du das?

Klar, normalerweise würde es funktionieren, aber wenn ich z.B. 5 Beiträge habe steht bei denen logischerweise "Eintrag: 1, Eintrag: 2, Eintrag: 3, Eintrag: 4, Eintrag: 5". Wenn ich nun aber alle 5 lösche, dann hat der nächste Eintrag, der geschrieben wird folgende Erkennung "Eintrag: 6", obwohl es der einzigste sichtbare Eintrag ist. Verstehst du mein Problem?
 
wie kommst du auf diese idee ??
num_rows wird bei jeder abfrage aktualisiert
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben