Fehler bei login

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Fehler bei login

      also ich bin am verzweifeln sitz schon mehrere stunden dran
      ich verstehs einfach nicht
      Meine funktion:

      PHP-Quellcode

      1. function CheckUserID($Username,$Pass) {
      2. echo "SELECT * FROM `Accounts` WHERE Username = '".$Username."' AND Password = '".$Pass."';";
      3. $ID = "NotExsists";
      4. $con = mysql_connect($MySQL_Adress, $MySQL_User, $MySQL_Pass);
      5. mysql_select_db($MySQL_Database, $con);
      6. $query = mysql_query("SELECT * FROM `Accounts` WHERE Username = '".$Username."' AND Password = '".$Pass."';". $con);
      7. if (mysql_num_rows ($query) > 0) {
      8. $data = mysql_fetch_array ($result);
      9. $ID = $data['id'];
      10. }
      11. return $ID;
      12. }
      Alles anzeigen

      Der Fehler:

      Quellcode

      1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Test\MySQL\MySQL_Config.php on line 18
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Also, ich hab jetzt schon lange Zeit nicht mehr mit Php gearbeitet, aber der Fehler liegt, laut Fehlermeldung, beim query.

      Meiner Meinung nach ist das ".$con" am ende Falsch, weshalb beim "mysql_num_rows" ein Fehler kommt. -> Siehe hier zum Vergleich PHP - mysql_query - MySQL-Funktionen

      Du kannst es ja mal ausprobieren, aber wie gesagt, ist schon ne Weile her, das ich mit Php zu tun hatte. Vllt meldet sich ja noch wer, der mehr Ahnung als ich hat ^^
    • aus der gleichen datei stehen nur 3 teilen über der funktion
      $MySQL_Adress="lokalhost";
      $MySQL_User="root";
      $MySQL_Pass="root";
      da es keine wichtigen daten sind und auch nur zu testzewcken kann ich sie wohl ruhig hier hinschreiben
      edit habe nun ein wenig umgeschrieben:

      PHP-Quellcode

      1. function CheckUserID($Username,$Pass) {
      2. $MySQL_Adress="localhost";
      3. $MySQL_User="root";
      4. $MySQL_Pass="root";
      5. $MySQL_Database="testdb";
      6. $UsrTable="accounts";
      7. $ID = "NotExsists";
      8. $con = mysql_connect($MySQL_Adress, $MySQL_User, $MySQL_Pass);
      9. mysql_select_db($MySQL_Database, $con);
      10. $query = mysql_query("SELECT * FROM `Accounts` WHERE Username = '".$Username."' AND Password = '".$Pass."';");
      11. if (mysql_num_rows ($query) > 0) {
      12. $data = mysql_fetch_array ($result);
      13. $ID = $data['id'];
      14. }
      15. return $ID;
      16. }
      Alles anzeigen

      und login.php

      PHP-Quellcode

      1. <?php
      2. include "MySQL/MySQL_Config.php";
      3. $ID = CheckUserID($_POST["UserName"],($_POST["PW"]));
      4. if ($ID != "NotExsists") {
      5. session_start();
      6. $_SESSION['ID'] = $ID;
      7. $_SESSION["exist"]=true;
      8. $con = mysql_connect($MySQL_Adress, $MySQL_User, $MySQL_Pass);
      9. mysql_select_db($MySQL_Database);
      10. $query = mysql_query("SELECT * FROM `".$UsrTable."` WHERE id=".$ID.";");
      11. while($row = mysql_fetch_array($query)){
      12. $_SESSION["Username"] = $row['Username'];
      13. }
      Alles anzeigen


      und die fehler:
      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Rezepte\MySQL\MySQL_Config.php on line 23
      ID

      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Rezepte\login.php on line 14


      bei einer ausgabe der id kam "ID" raus

      edit2 die session funktioniert auch nicht
      bei einem anderen script dann echo $_SESSION["exist"]; rein und nichts passiert

      anderes script:
      <body bgcolor="dfdfdf">
      <?php
      echo $_SESSION["exist"];
      if($_SESSION["exist"]==true ) {
      echo "<center>Willkommen ".$_SESSION["Username"]."</center>";
      } else {
      echo '<center>Bitte Einloggen um den Service nutzen zu können<br><br><Form Action="login.php" method="post">Benutzername:<br>
      <input type="hidden" Name="mode" value="intern"><input type="Text" Name="UserName"><br>Password:<br><input type="password" Name="PW"><br><input type="Submit" value="Login"></form>';
      }

      ?>
      </body>
    • Und wo ist ihm da geholfen?? Ist es Sinn und Zweck einfach alles mit @ zu unterdrücken was man nicht in den Griff bekommt?

      Machen das die Autohersteller auch so?? Hoppla Airbaglampe leuchtet, naja klemmen wir halt die Birne ab.

      Probier es doch einfach mal damit das du die Leerzeichen zwischen den funktionen entfernst. Ich kann mich nämlich net daran erinnern das eine Funktion in PHP so arbeitet wenn ein Leerzeichen zwischen dem Namen und der Klammer ist.

      Ob es funktioniert kann ich an dieser Stelle nicht sagen da ich es nicht getestet habe, falls es nicht Funktioniert dann poste doch einfach nochmal hier.
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Mach mal bei beiden Querys das Ende weg.
      Bei mysql_Query muss kein Semikolon folgen, es darf glaub ich sogar keins folgen, da dies automatisch schon erfolgt bei der Verarbeitung.
      Vielleicht gehts damit, ich jedenfalls nehme nie ein ; als Queryabscghluss und es ging bisher immer[/SIZE][/COLOR][/FONT]
    • Okay, nun ernsthaft. :)

      @ulle: Zum einen macht das nichts aus und zum anderen wäre das dann ein Fehler in der Syntax und würde nicht den Rückgabewert der Funktion beeinflussen.

      @Icii: Wenn du dir einmal die Signatur von mysql_query() auf php.net anschaust, wirst du merken, was für einen Unsinn du hier erzählst.

      @internetfreak: Das kommt auf den eingestellten Abgrenzer an, welcher Standardgemäß ";" ist. Es sollte daher kein Fehler darstellen.

      @ichbinniemand: Erst einmal ist es der Localhost, nicht der Lokalhost. Mit "Lokalhost" würden wir Deutsch und Englisch in einem Wort vermischen - und das wollen wir ja nicht, oder? :) Ansonsten gilt das, was felix bereits sagte:

      Prüfe, ob der Rückgabewert von mysql_query() FALSE ist. Wenn ja, lasse dir mittels mysql_errno() und mysql_error() die Fehlermeldung ausgeben.
    • Na also Well warum nicht gleich so. Muss man dich immer erst in den Arsch treten bevor da was ordentlich aus deinem Mund kommt :D

      Und nun zu den Leerzeichen in den Funktionen. Es mag vll funktionieren, aber wer macht das schon? Es macht doch gar keinen Sinn da man Funktionen ja auch ohne Leerzeichen deklariert. Sieht ja auch einfach nur Doof aus: function test () oder function test()

      Ich glaube jeder halbwegs gescheite Programmierer macht da kein Leerzeichen rein. Alleine der Übersichtshalber.
    • ok hab noch ein bisschen was geändert: login.php:

      PHP-Quellcode

      1. <html>
      2. <body bgcolor="dfdfdf">
      3. <?php
      4. include "MySQL/MySQL_Config.php";
      5. $ID = CheckUserID($_POST["UserName"],($_POST["PW"]));
      6. if ($ID != "NotExsists") {
      7. $_SESSION["exist"]=true;
      8. $_SESSION['ID'] = $ID;
      9. $con = mysql_connect($MySQL_Adress, $MySQL_User, $MySQL_Pass);
      10. mysql_select_db($MySQL_Database);
      11. $query = mysql_query("SELECT * FROM `".$UsrTable."` WHERE id='".$ID."'");
      12. while($row = mysql_fetch_array($query)){
      13. $_SESSION["Username"] = $row['Username'];
      14. }
      15. if( $_POST["mode"] == "extra"){
      16. echo "<a href='index.php'> Klick </a>";
      17. } else {
      18. echo "<a href='Start.php'> Klick </a>";
      19. }
      20. } else {
      21. echo "Falscher Nutzername oder falsches Password";
      22. if( $_POST["mode"] == "extra"){
      23. echo "<a href='index.php'> Klick </a>";
      24. } else {
      25. echo "<a href='Start.php'> Klick </a>";
      26. }
      27. }
      28. ?>
      29. </body>
      30. </html>
      Alles anzeigen

      funktion:

      PHP-Quellcode

      1. function CheckUserID($Username,$Pass) {
      2. $MySQL_Adress="localhost";
      3. $MySQL_User="root";
      4. $MySQL_Pass="root";
      5. $MySQL_Database="testdb";
      6. $UsrTable="accounts";
      7. $ID = "NotExsists";
      8. $con = mysql_connect($MySQL_Adress, $MySQL_User, $MySQL_Pass);
      9. mysql_select_db($MySQL_Database, $con);
      10. $query = mysql_query("SELECT * FROM `Accounts` WHERE Username = '".$Username."' AND Password = '".$Pass."'");
      11. if (mysql_num_rows($query) > 0) {
      12. $data = mysql_fetch_array ($result);
      13. $ID = $data['id'];
      14. }
      15. return $ID;
      16. }
      17. ?>
      Alles anzeigen

      und fehler:
      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Rezepte\MySQL\MySQL_Config.php on line 23


      edit fast vergessen mit mysql_errorno und Mysql_error wird kein fehler angezeit also liegts im php
    • Wie verwendest du denn die beide Funktionen?
      Es liegt eben nicht am PHP Code. Wenn das Query nicht erfolgreich ausgeführt werden kann, liefert mysql_query() ein FALSE anstelle einer Resource, welche mysql_fetch_array() aber erwartet. Deswegen erscheint diese Fehlermeldung.

      Nur mal so nebenher: Verwende ' anstelle von "; Es ist unangebracht, mehrere Verbindungen zur gleichen Datenbank in einem Script aufzubauen. (Das macht keinen Sinn)

      Baue einmal eine Verbindung am Anfang des Scripts auf - mysql_query() verwendet dann immer diese Verbindung. Der zweiten Parameter wird nur dann gebraucht, wenn mehrere Datenbanken im Einsatz sind.

      echo "Falscher Nutzername oder falsches Password";

      Passwort... Password ist englisch.

      $ID = "NotExsists";

      "Exsists"? Du meinst wohl exist(s)...

      UserName / Username

      Entscheide dich für eine Variante...

      $con = mysql_connect($MySQL_Adress, $MySQL_User, $MySQL_Pass);
      mysql_select_db($MySQL_Database, $con);

      Rückgabe auswerten!

      @ulle: Da hast du natürlich recht!
    • Also ich denke das er einfach nur nen schlechtes Tutorial durcharbeitet, oder er probiert von 0 auf 100 zu arbeiten.
      PHP ist nun mal eine komplexe Sprache (zumindest am Anfang der Lernphase). Man sollte sich vorher mit den Grundlagen vertraut machen bevor man sich an MySQL Verbindung und Datenbank Strukturen setzt.

      Weil irgendwie seh ich das schon kommen. Wenn sein Script mal funktioniert dauert es dann vll 3 Tage bis er wieder Postet, weil er gehackt wurde.

      Um ihn das zu ersparen, würde ich meinen Rat beherzigen.

      Natürlich will ich niemanden etwas befehlen, aber Tatsachen kann man nun nicht zurückhalten.

      @Well
      Danke :D
    • 1. ich arbeite keine tutorials durch sondern arbeite mich selbst von den grundlagen an durch die sprache
      2. es ist nicht mein erstes script das auf eine datenbank zugreift und alle anderen funktionieren problem los
      3. mit datenbanken etc beschäftige ich mich nun schon seit fast 2 jahren
      4. zufällig weiss ich wie das Hacken funktioniert: SQL injection: Durch lücken im php code werden die befehle die das script an den sql server sendet so bearbeitet dass man den sql server problemlos steuern kann z.b. wenn man bei nem lückenhaften login a' Or 1=1 -- eingibt so kommt man rein da ja eine bedingung erfüllt ist
      5. Ich frage nur weil ich schon 1 woche dran sitze und keine ahnung hab wieso es nicht funktioniert
      ich hab 3 verschiedene apache server ausgetestet und nichts klappt

      @Well
      ja mein geniales denglisch ich weiss
      2. jap da is mir ein s zuviel rein aber bei einem übergangswert stört es nicht
      3. es sind andere variablen einersets der input aus dem formular (UserName) und dann die übergebene variable für die funktion (Usernam) durch unterschiedliche schreibweisen getrennt
      4. hab ich schon alles gemacht MySQL gibt keine fehler raus
    • Es tut mir leid euch alle entäuschen zu müssen, aber ich habe dem Typen das mal gemacht.

      Es ist im Anhang dabei. Ich habe weder auf die Überprüfung der Eingaben geachtet noch auf sonst irgendeine Sicherheit.

      Ich hoffe nun hat das Dumme Gequatsche von Ihm endlich ein Ende. Ich werde ihm auch nicht sagen was bei ihm falsch war, weil ich kein Bock auf Diskussionen habe.

      So und nun viel Spass mit deinem Login Script.

      Solltest du noch weitere Frage haben, dann empfehle ich dir PHP: Hypertext Preprocessor
      Dateien
      • login.zip

        (3,14 kB, 133 mal heruntergeladen, zuletzt: )
    • danke anscheinend hatte ich nur den falschen befehl

      aber du hast ein MYSQL_ASSOC als parameter zu viel drin gehabt

      Mein Session prob besteht weiterhin

      in der index.php wird in der ersten zeile des body tags mit
      <?php @session_start(); $_SESSION['exist']=false; ?>
      die session erstellt

      in der start.php wo auch das login fenster drin ist steht das:

      PHP-Quellcode

      1. <?php
      2. if($_SESSION['exist']==true ) {
      3. echo "<center>Willkommen ".$_SESSION["Username"]."</center>";
      4. } else {
      5. echo '<center>Bitte Einloggen um den Service nutzen zu können<br><br><Form Action="login.php" method="post">Benutzername:<br>
      6. <input type="hidden" Name="mode" value="intern"><input type="Text" Name="UserName"><br>Password:<br><input type="password" Name="PW"><br><input type="Submit" value="Login"></form>';
      7. }
      8. ?>

      und in der login.php nun das:

      PHP-Quellcode

      1. $_SESSION['Username'] = $result_data['Username'];
      2. $_SESSION['exist']=true;
      3. $_SESSION['ID'] = $ID;
      4. echo "Willkommen ".$result_data['Username']."<br>";

      aber immer meint er dass ich nicht eingeloggt sei
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Hast du auch in jeder Datei, die Sessions nutzt, ein session_start() hinterlegt?
      Ohne dies kannst du keine Sessions in der betreffenden Datei nutzen, da die Session ja immer wieder geöffnet werden muss vor dem Gebrauch.
      Les dir dazu mal meinen Sessionsguide durch, den ich gepostet habe im tutorialsbereich, evtl. hilfts dir[/SIZE][/COLOR][/FONT]
    • Stimmt sehe gerade dass ichs in der start.php vergessen habe

      edit neuer fehler:

      Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\Rezepte\index.php:97) in C:\AppServ\www\Rezepte\index.php on line 97

      zeile:
      <?php session_start(); if($_SESSION['exist']!=true){ $_SESSION['exist']=false; }?></font>