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


    Der Fehler:

    Code
    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
    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • 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:


    und login.php

    und die fehler:

    Zitat

    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:

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • 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:


    funktion:


    und fehler:

    Zitat

    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

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • 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.

    Zitat

    echo "Falscher Nutzername oder falsches Password";


    Passwort... Password ist englisch.

    Zitat

    $ID = "NotExsists";


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

    Zitat

    UserName / Username


    Entscheide dich für eine Variante...

    Zitat

    $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

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • 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

  • 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
    <?php
    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>';
    }  
    
    
    ?>


    und in der login.php nun das:

    PHP
    $_SESSION['Username'] = $result_data['Username'];
    		$_SESSION['exist']=true;
    		$_SESSION['ID'] = $ID;
    		echo "Willkommen ".$result_data['Username']."<br>";


    aber immer meint er dass ich nicht eingeloggt sei

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • [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:

    Zitat


    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:

    Zitat

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

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!