Beiträge von Campbell


    PlayerConnectInfo = fopen("PlayerConnectionLog.log", io_append);
    printf("%i", PlayerConnectInfo);


    Testgrund: fopen() - Returns the Filehandle. 0 if failed to open file

    jap, doppeltes hashen ist ja eigentlich auch viel sicherer :)


    Falsch, es könnte zwar sein, dass bei einer mehrfachen Anwendung eine Brute-Force-Attacke etwas länger brauchen könnte, jedoch steigt die Gefahr von neuen Attacken. Ebenfalls wird bei Algorithmen immer dazu notiert, ob es sicher ist, diesen Algorithmus mehrfach anzuwenden oder nicht, da es evt. zu Ausnahmesituationen kommen kann.


    Zitat

    Jo schon, aber ich würde ihn ja gerne "unhashen" ;/


    Das tut man nicht - Man speichert das Passwort gehasht und hasht die Eingabe, um es mit dem gespeicherten gehashten Passwort zu vergleichen.


    PHP
    $res = mysql_query("SELECT `Passwort` FROM `accounts` WHERE `Name` = '". mysql_real_escape_string($username) ."'"); // Query ausführen und Ergebnis der Abfrage in $res speichern.
    $row = mysql_fetch_array($res); // mysql_query() gibt eine Resource zurück, daher speichern wir unsere Ergebnisse in Form eines Arrays in $row.
    
    
    if($row['Passwort'] == md5($_POST['Passwort']) { // Gehashtes Passwort aus Datenbank mit neuem Hash der Eingabe vergleichen.
        // Eingeloggt.
    } else {
        // Falsche Eingabe.
    }

    Wieso machst du dir das Leben mit diesem Script so schwer? Das sind lediglich drei Schritte:


    • Sicherheitscode erstellen.
    • Sicherheitscode ausgeben.
    • Sicherheitscode-Eingabe überprüfen.



    #include <a_samp>


    #define DIALOG_SECURITY (1)


    new securityCode[MAX_PLAYERS];


    public OnPlayerConnect(playerid) {
    new dialogMsg[45];


    // Generieren
    securityCode[playerid] = random(9000) + 1000;


    // Ausgeben
    format(dialogMsg, sizeof(dialogMsg), "Geben sie den folgenden Sicherheitscode ein: %i.", securityCode[playerid]);
    ShowPlayerDialog(playerid, DIALOG_SECURITY, DIALOG_STYLE_INPUT, "Sicherheitsabfrage", dialogMsg, "Bestätigen", "Abbrechen");
    return 1;
    }


    // Eingabe überprüfen.


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    switch(dialogid) {
    case 1: {
    if(response) {
    if(strval(inputtext) == securityCode[playerid]) {
    // Eingabe erfolgreich.
    } else {
    // Eingabe nicht erfolgreich.
    }
    } else {
    // Abbruch der Eingabe.
    }
    }
    }
    return 1;
    }


    Hier geschrieben, ungestestet.

    Das ist komisch, gehe auf Nummer sicher, dass du die neuste Version von Y_Less benutzt (Plugin & Include) und dass deine Variablen-Typen übereinstimmen.

    Campbell ©
    Ich habe aber die Datei mir dini erstellt und fwrite klappt da doch nicht oder?


    Benutze kein Dini, da es von der Performance wohl das schlechteste ist, was man benutzen kann. Es ist doch ganz klar, dass für jeden Funktionsaufruf keine Datei geöffnet und geschlossen werden soll.

    Du möchtest, dass die Kiste an einem bestimmten Punkt landet. Du möchtest aber auch, dass der Flieger von einem Menschen geflogen wird und dass die Kiste -realistisch- vom Himmel fällt. Zu fliegen und bei genau einer Koordinate einen Befehl zu erwischen halte ich für sehr diskussionsbedürftig.