MySQL Passwort Abfrage Problem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Communiy,


    ich habe glaube gerade irgendwas Falsch gemacht, und zwar ist egal was ich Eingebe das PW immer Falsch ? ..
    Auch wenn es richtig ist... Datenbank ist alles eingetragen ^^


    new query[200];
    format(query, sizeof(query), "SELECT `Serverpw` FROM `Stuff` WHERE Serverpw = '%s'",sachen[Serverpw]);
    mysql_query(query);
    mysql_store_result();
    new numrows = mysql_num_rows();
    if(numrows == 1)
    {
    // Passwort Falsch
    }
    if(!numrows)
    {
    // Passwort richtig
    }
    mysql_free_result();

  • So sollte es auch gemacht werden
    format(query, sizeof(query), "SELECT `Serverpw` FROM `Stuff` WHERE Serverpw = '%s LIMIT 1;'",sachen[Serverpw]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    // Passwort richtig
    }
    else
    {
    // Passwort falsch
    }
    ! ist falsch alles darüber is nen Treffer

    All in all it's just another brick in the wall


  • Nein klappt auch nicht ^^ Ich kann es mir nicht erklären ..


    new query[200];
    format(query, sizeof(query), "SELECT `Serverpw` FROM `Stuff` WHERE Serverpw = '%s LIMIT 1;'",sachen[Serverpw]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    // Passwort richtig
    TextDrawHideForPlayer(playerid,ServerLogin[2]);
    TextDrawHideForPlayer(playerid,ServerLogin[3]);
    TextDrawShowForPlayer(playerid,IRP);
    TextDrawShowForPlayer(playerid,LBox);
    TextDrawShowForPlayer(playerid,Streifen1);
    TextDrawShowForPlayer(playerid,Streifen2);
    TextDrawShowForPlayer(playerid,Streifen3);
    TextDrawShowForPlayer(playerid,Streifen4);
    TextDrawShowForPlayer(playerid,Login);
    TextDrawShowForPlayer(playerid,Regi);
    TextDrawShowForPlayer(playerid,Leave);
    SelectTextDraw(playerid,0x4B0000FF);
    return 1;
    }
    else
    {
    Spieler[playerid][PWFail]++;
    format(string,sizeof(string),"Falsches Server Passwort! %d/3",Spieler[playerid][PWFail]);
    SendClientMessage(playerid,Weiss,string);
    if(Spieler[playerid][PWFail] >= 3) { SetTimerEx("SpielerKicken",888,0,"d",playerid); return 0;}
    ShowPlayerDialog(playerid,DIALOG_SERVERPWLOGIN,DIALOG_STYLE_INPUT,""#Servername" - Server Passwort","Bitte gib das Server Passwort ein,\n um zum Login Bereich zu gelangen.","absenden","abbrechen");
    }
    mysql_free_result();


    Edit: Wofür steht das Limit 1?

  • Das limit ist, das du nur 1 wert rausbekommst, wo sich das pw befindet, glaube.


    /e
    machs so

    format(query, sizeof(query), "SELECT `Serverpw` FROM `Stuff` WHERE Serverpw = '%s LIMIT 1;'",sachen[Serverpw]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    if(mysql_retrieve_row())
    {
    // Passwort richtig
    TextDrawHideForPlayer(playerid,ServerLogin[2]);
    TextDrawHideForPlayer(playerid,ServerLogin[3]);
    TextDrawShowForPlayer(playerid,IRP);
    TextDrawShowForPlayer(playerid,LBox);
    TextDrawShowForPlayer(playerid,Streifen1);
    TextDrawShowForPlayer(playerid,Streifen2);
    TextDrawShowForPlayer(playerid,Streifen3);
    TextDrawShowForPlayer(playerid,Streifen4);
    TextDrawShowForPlayer(playerid,Login);
    TextDrawShowForPlayer(playerid,Regi);
    TextDrawShowForPlayer(playerid,Leave);
    SelectTextDraw(playerid,0x4B0000FF);
    return 1;
    }
    else
    {
    Spieler[playerid][PWFail]++;
    format(string,sizeof(string),"Falsches Server Passwort! %d/3",Spieler[playerid][PWFail]);
    SendClientMessage(playerid,Weiss,string);
    if(Spieler[playerid][PWFail] >= 3) { SetTimerEx("SpielerKicken",888,0,"d",playerid); return 0;}
    ShowPlayerDialog(playerid,DIALOG_SERVERPWLOGIN,DIALOG_STYLE_INPUT,""#Servername" - Server Passwort","Bitte gib das Server Passwort ein,\n um zum Login Bereich zu gelangen.","absenden","abbrechen");
    }
    }
    mysql_free_result();

  • was steht denn in den array sachen[Serverpw]


    Der string wird richtig geladen und gesetzt.


    mysql_fetch_field_row(query,"Serverpw"); format(sachen[Serverpw],32,query);


    & in der Datenbank steht auch alles richtig drinne ^^

    [20:20:34] CMySQLHandler::Query(SELECT `Serverpw` FROM `Stuff` WHERE Serverpw = 'Test LIMIT 1;') - Successfully executed.


    [20:20:34] >> mysql_store_result( Connection handle: 1 )

  • indirekt
    Das ; signaliesiert den nur hier ist schluss mit den Query
    nach einen ; kannst du direkt einen neuen machen und das sogar ohne ein 2. query zu nutzen


    Da hab ich gleich noch ne Frage dazu ^^
    Die Befehle werden dann nacheinander ausgeführt oder?

    SQL
    UPDATE table SET X=1;UPDATE table SET Y=2 WHERE X=1


    würde überall Y=2 setzen, auch wenn X am Anfang 0 war, oder?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen