Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Problem mit Login (https://www.gegen-bilderklau.net/thread.php?threadid=176309)


Geschrieben von Raindrops am 14.10.2010 um 22:56:

  Problem mit Login

Hey,

ich habe ein kleines Problem mit meinem Login: Wenn ich mich einlogge, werde ich ja logischerweise auf die Seite "login_action.php" weitergeleitet, von wo ich dann in den LogIn-Bereich geleitet werde. Auf der Seite kommt allerdings diese Fehlermeldung:
Zitat:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in /users/zsavenue/www/Login/login_action.php on line 18
Wenn ich aber auf "Weiterleiten" klicke, komme ich auf die nächste Seite, so wie's sein soll.

Der Code sieht momentan so aus [& stammt aus dem Login-TuT hier bei GB]:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
<?php
session_start();
include("datenbank.php");
?>
<html>
<head>
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
if(!empty($_POST["username"]) && !empty($_POST["password"])) 
{

$username $_POST["username"]; 
$password $_POST["password"]; 

$abfrage mysql_query("SELECT Name, Passwort FROM Turnierrieter WHERE name = '$username' LIMIT 1");
$daten mysql_fetch_array("$abfrage");

if($daten[passw] == $passwort)
    {
    $_SESSION["name"] = $username; 
    echo "Login erfolgreich! <br> <b><a href="http://zsavenue.square7.ch/Login/checkuser.php" target="_self">Weiterleitung</a></b>";
    } 
else 
    { 
    echo "Benutzername und/oder Passwort waren falsch. <br><a href="login.php">Login</a>";
    }
}
else
    {
    echo "Bitte fülle alle Felder aus! <br><a href="login.php">Zurück</a>";
}

?>
</body>
</html>


zum ausprobieren:
klick
Benutzername: Admin
Passwort: Admin

Ich hoffe, dass mir jemand helfen kann (:

LG



Geschrieben von kext am 14.10.2010 um 23:02:

 

Und es heißt auch nicht $daten[passw] sondern $daten['Passwort'], wenn deine Query denn richtig ist.

Ansonsten ist die Query falsch, weil die Feldernamen falsch geschrieben sind. Außerdem schreibt man Feldernamen in Backticks (`).



Geschrieben von Raindrops am 14.10.2010 um 23:26:

 

Vroni, danke, nun wird keine Fehlermeldung mehr angezeigt smile Was nun allerdings noch bleibt: Wenn ich mich jetzt mit den im Starpost angegebenen Daten einloggen möchte, erscheint die Meldung, dass Benutzername bzw. Passwort fehlerhaft seien. Dabei bin ich mir hunderpro sicher, dass ich keine Rechtschreibfehler gemacht habe bei der Eingabe des Benutzernamens und Passwort...



Geschrieben von Raindrops am 14.10.2010 um 23:35:

 

nein, daran liegt's nicht :/ habs grad ausgebessert, dennoch, das Problem bleibt...



Geschrieben von Raindrops am 14.10.2010 um 23:42:

 

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
<?php
session_start();
include("datenbank.php");
?>
<html>
<head>
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
if(!empty($_POST["username"]) && !empty($_POST["password"])) 
{

$username $_POST["username"]; 
$passwort $_POST["password"]; 

$abfrage mysql_query("SELECT 'name' , 'passw' FROM turnierreiter WHERE 'name' = '$username' LIMIT 1");
$daten mysql_fetch_array ($abfrage);

if($daten['passw'] == $passwort)
    {
    $_SESSION['name'] = $username; 
    echo "Login erfolgreich! <br> <b><a href="http://zsavenue.square7.ch/Login/checkuser.php" target="_self">Weiterleitung</a></b>";
    } 
else 
    { 
    echo "Benutzername und/oder Passwort waren falsch. <br><a href="login.php">Login</a>";
    }
}
else
    {
    echo "Bitte fülle alle Felder aus! <br><a href="login.php">Zurück</a>";
}

?>
</body>
</html>



Geschrieben von Kuhmuhphu am 14.10.2010 um 23:58:

 

heißen deine tabellenfelder wirklich name und passw?

Und heißt deine erste interne Seite checkuser?

Denn checkuser sollst du includen aber nich auf die seite direkt weiter leiten



Geschrieben von Raindrops am 15.10.2010 um 00:12:

 

die Tabellenfelder heißen name & passw Augenzwinkern

oh nein, meine erste interne Seite heißt Start.html also muss ich den checkuser.php in login_action.php includen oder auf der Start.html Seite? verwirrt



Geschrieben von Kuhmuhphu am 15.10.2010 um 00:18:

 

auf der start.html

wobei nenn sie mal lieber statt html php Augenzwinkern

gleich oben vor dem <html> includen



Geschrieben von Raindrops am 15.10.2010 um 00:21:

 

okay, hab's jetzt in Start.php umbenannt & auch direkt includet...das ursprüngliche Problem behebt das allerdings nicht =/



Geschrieben von Kuhmuhphu am 15.10.2010 um 00:23:

 

davon ging ich auch nich aus xDD
Habs nur eben bemerkt Augenzwinkern



Geschrieben von Raindrops am 15.10.2010 um 00:23:

 

achsu großes Grinsen



Geschrieben von Kuhmuhphu am 15.10.2010 um 00:26:

 

ok..
php:
1:
if($daten['passw'] == $passwort)


änder hier mal das t zu einem d



Geschrieben von Kuhmuhphu am 15.10.2010 um 00:28:

 

Zitat:
Original von Vroni
Hat sie doch extra schon angepasst, das stimmt schon so.


stimmt du hast recht.. ich hab die ganze Zeit nur d gesehn..^^



Geschrieben von Raindrops am 15.10.2010 um 09:57:

 

hab mir das jetzt mal mit echo ausgeben lassen. Wenn ich mich jetzt einlogge, sieht das so aus:
Zitat:
Der Username ist korrekt
Das Passwort ist korrekt
Benutzername und/oder Passwort waren falsch.
Login



Geschrieben von Oli am 15.10.2010 um 10:44:

 

Hi,

in MySQL gehören Feldnamen in sogenannte Backticks:
´ oder ` - nicht ' oder "

Die von dir verwendeten einfachen Anführungszeichen stellen Text dar.



Somit rufst du bei dieser Abfrage ...
code:
1:
SELECT 'name' , 'passw' FROM turnierreiter WHERE 'name' = '$username' LIMIT 1
... einen Datensatz ab, bei dem der Text 'name', der selbe Text ist, wie das, was in $username steht.

Du vergleichst also nicht, wie du es wohl vor hattest, $username mit dem Feld `name`. Außerdem vermute ich, dass dir MySQL auch nicht die Felder `name` und `passw` zurückgibt, sondern eben die Texte, da auch hier die falschen Zeichen sind.

LG



Geschrieben von kext am 15.10.2010 um 11:08:

 

` - nicht ´ oder ' oder "

Auf der deutschen Tastatur erzeugt man immer zwei davon auf einmal, wenn man mit gedrückt gehaltener Shift-Taste zweimal die Akzenttaste drückt.



Geschrieben von Raindrops am 15.10.2010 um 11:23:

 

Muss ich jetzt überall wo " oder ' sind die austauschen oder wie wie jetz? verwirrt



Geschrieben von Oli am 15.10.2010 um 11:38:

 

Zitat:
Original von kext
` - nicht ´ oder ' oder "

Auf der deutschen Tastatur erzeugt man immer zwei davon auf einmal, wenn man mit gedrückt gehaltener Shift-Taste zweimal die Akzenttaste drückt.


Danke fürs Korrigieren, du hast natürlich Recht, es funktioniert wirklich nur mit ` . Das Andere wäre auch gar kein Backtick gewesen...

Was das Eingeben anbelangt, ich glaube mich zu erinnern, dass man die Taste einmal betätigen und dann die Leertaste drücken kann, um nur eines dieser Zeichen zu erzeugen. Kann das leider nicht testen, arbeite unter Linux, welches (bei meiner Konfiguration) ohnehin immer nur eines eingibt.



@Raindrops:
Du musst:

Außerdem sollte man auch den Tabellennamen in Backticks schreiben. Der Query sieht korrekt also so aus:
code:
1:
SELECT `name` , `passw` FROM `turnierreiter` WHERE `name` = '$username' LIMIT 1



Geschrieben von Raindrops am 15.10.2010 um 11:59:

 

ahh, danke nun klappt es smile


Forensoftware: Burning Board, entwickelt von WoltLab GmbH