Wo liegt der Fehler? PHP/Sessions/MySql
SamanthaMaster
- php
Hy!
Ich stehe irgendwie auf der Leitung... Zuerst hat alles funktioniert, dann habe ich die Sessions eingefügt... Und plötzlich war da ein Fehler obwohl ich in dieser Zeile gar nichts geändert habe...
<?php session_start();?>
<html>
<head>
<title>Datenregister</title>
</head>
<body style="background-image:url(bilder/top.jpg); background-repeat:repeat-x; font-size:150%; background-color:orange;">
<img src="bilder/logo.gif" width="97" height="93" align="top" alt="hintergrund">
<br>
<br>
<h1 align="center">SMOG</h2>
<form name="anmelden" method="post" action=<?php echo $_SERVER['PHP_SELF'];?> ><table align="center">
<tr>
<th>Benutzername:</th>
<th>Passwort:</th>
</tr>
<tr>
<td><input name="benutzername" type="text" size="30" maxlength="30" value="Gast"></td>
<td><input name="passwort" type="password" size="30" maxlength="40"></td>
</tr>
<tr>
<td colspan="2" align="center"><input name="bleiben" type="checkbox"> Angemeldet bleiben</td>
</tr>
<tr>
<td colspan="2" align="center"><input name="login" type="submit" value="Anmelden"></td>
</tr>
<tr>
<td colspan="2" align="center"><a href="?">Passwort vergessen?</a></td>
</tr>
</table>
<?php
//error_reporting(E_ALL);
$result = mysql_query("SELECT * FROM user");
while ($row = mysql_fetch_assoc($result)) // Zeile 35
{
if ($_POST["benutzername"] == $row["benutzername"] && $_POST["passwort"] == $row["passwort"] && $row["status"] == "personal" && isset($_POST["login"]))
{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=http://inflamp.technikum-wien.at/~WS09_smog/PHP/Kurse/kursliste.php\">";
$_SESSION['id'] = $row["patientID"];
$_SESSION['user'] = $row["benutzername"];
}
else
if ($_POST["benutzername"] == $row["benutzername"] && $_POST["passwort"] == $row["passwort"] && $row["status"] == "patient" && isset($_POST["login"]))
{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=benutzer.php\">";
$_SESSION['id'] = $row["personalID"];
$_SESSION['user'] = $row["benutzerame"];
}
else
if ($_POST["benutzername"] == "Gast" && isset($_POST["login"]))
{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=info.php\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=falsch.php\">";
}
}
?>
</form>
</body>
</html>
Das ist der Fehler:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in index.php on line 35
LG Samantha
Du hast recht: diese Zeile ...
<?php session_start();?>
...
$result = mysql_query("SELECT * FROM user");
while ($row = mysql_fetch_assoc($result)) // Zeile 35 Fehler:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in index.php on line 35
stehen stehen in keinem Zusammenhang!!! Das wirst du auch sehen, wenn
du die Zeile mal so <?php // session_start();?> auskommentierst. Du
hast meines erchtens ein reines Datenbankproblem. Wo loggst du dich
in die DB ein???????
Prof. Sakkkkarre
Die Datenbank Anbindung habe ich versehentlich beim herumprobieren gelöscht... jetzt funktionierts wieder... mehr oder weniger...
wenn ich versuche auf die Seite benutzer.php zu zugreifen, also den richtigen Benutzername und Passwort eingeben, kommt gleich die falsch.php Seite
Dabei wird so ein Fehler angezeigt ... Konnte ich gerade noch kopieren..
[IMG]http://s2.directupload.net/images/100130/3sc37e6c.jpg@alt=Fehler]
Danke, manchmal kann ich ganz schön blind sein..
Die Datenbank Anbindung habe ich versehentlich beim herumprobieren gelöscht... jetzt funktionierts wieder... mehr oder weniger...
Dein Teilerfolg freut mich!
wenn ich versuche auf die Seite benutzer.php zu zugreifen, also den richtigen Benutzername und Passwort eingeben, kommt gleich die falsch.php Seite
Ein paar grundsätzliche Tipps für Formulare:
gibt in der Testversion immer
<?php echo "<pre>"; print_r $_POST; echo "</pre>"; ?>
aus. Natürlich muss das in der Produktionsversion raus. Und falls
due GET machst muss $_GET ausgegeben werden.
Nimm "griffige Variablennamen" in deinem Formaular. Es passiert
schneller als du denkst, dass man 5 Formulare in einer HTML Ausgabe
hat und sich Variablen beissen.
zeige mit <form action= > imme auf die Datei, die das Formalar
ausgibt. Das hat, nach meiner Erfahrung nur Vorteile. Beispiele:
- wenn ein User eine flasche Passwort abesetz hat (musst du
ja ohnehin irgenwo prüfen), dann gibst du die selbe Seite nochmal
aus uns setzt im <input> Tag gleich die richtigen Werte. Etwa so:
<input .... <?php echo §_POST{user_name]; ?>">
- für weiter Beispiele geht mir die Puste aus - ich muss noch
einkaufen gehn .... (mein Buttler hat diese Wochenende frei)
Tschau.
Hi!
Dabei wird so ein Fehler angezeigt ... Konnte ich gerade noch kopieren..
[IMG]http://s2.directupload.net/images/100130/3sc37e6c.jpg@alt=Fehler]
Lass beide genannten Direktiven in der PHP-Konfiguration deaktivieren.
Danke, manchmal kann ich ganz schön blind sein..
Dein Script arbeitet immer noch blind. Es vertraut darauf, dass die DBMS-Funktionen stets fehlerfrei arbeiten. Tun sie das nicht, gibt es den bereits bekannten Folgefehler. Du wertest die Rückgabewerte der Funktionen nicht aus, prüfst sie nicht auf false, was der "Fehler ist aufgetreten"-Indikator ist.
Lo!