MySQL (IP's abgleichen?)

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
  • Guten Abend, liebe Breadfish Freunde und Kollegen, ich hab eine kleine Frage, wie kann ich die IP nun mit der gespeicherten hier vergleichen? (Siehe Quelltext)
    new ip[16], query[128], name[MAX_PLAYER_NAME];
    GetPlayerIp(playerid, ip, sizeof(ip));
    GetPlayerName(playerid, name, sizeof(name));
    format(query, sizeof(query), "INSERT INTO `logs` (`Name`,`IP-Addresse`) VALUES ('%s',('%s'))", name, ip);
    mysql_query(query);

    Die IP möchte ich nun beim Connect wieder vergleichen, und wenn es die gleiche ist ggf. bannen bzw. kicken - Kleiner Denkanstoss evtl? :whistling:


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!


  • format(query, sizeof query, "SELECT `IP-Addresse` FROM `logs` WHERE `IP-Addresse` = '%s'", ip);
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(rows > 0) //wenn die IP gefunden wurde
    {
    Kick(playerid);
    }


  • Das funktioniert aber leider nicht?
    Kann mir immer noch einen 2. Account mit 127.0.0.1 erstellen...
    //Edit: Sorry, verlesen. - Funktioniert doch danke.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Gib die IP aus und Splite sie mit der
    split() funktion:
    stock split(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }

    BSP:
    new IP[16], IP2[4][5], test[128];
    split(IP, IP2, '.');
    format(test, sizeof test, "Block 1: %s, 2: %s, 3: %s, 4: %s", IP2[0], IP2[1], IP2[2], IP2[3]);
    und vergleich sie dann
    Also, gibst die IP in den Logs aus Splitest sie
    dann Splitest du die IP vom Spieler.. und vergleichst halt alles
    hoffe du verstehst mich :'D


    /edit: bei Beispeil etwas hinzugefügt

  • split(IP, IP2, '.');



    Ne, verstehe dich nicht so richtig, was soll ich nun splitten / vergleichen? :s


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!


  • new logip[16], playerip[16], query[128];
    GetPlayerIp(playerid, playerip, sizeof playerip);
    format(logip, sizeof logip, "%s", mysql_GetString("logs", "IP-Addresse", "IP-Addresse", playerip);
    new logip2[4][5], playerip2[4][5];
    split(logip, logip2, '.'); split(playerip, playerip2, '.');
    if(!strcmp(logip2[0], playerip2[0], false))
    {
    print("der erste block der beiden sind gleich!");
    }
    müsste denk ich klappen, ist spät :O


  • Versteh ich nicht, was hier nun was bewirkt, aber naja. - Lass ich es erst mal ohne Split o_O
    Aber andere Frage, wie kann ich verhindern wenn die IP gefunden wurde, dass es denn nochmals eine neue Datei in den logs anlegt?


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!


  • new ip[16], query[128], name[MAX_PLAYER_NAME];
    GetPlayerIp(playerid, ip, sizeof(ip));
    GetPlayerName(playerid, name, sizeof(name));
    format(query, sizeof query, "SELECT `IP-Addresse` FROM `logs` WHERE `IP-Addresse` = '%s'", ip);
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(rows > 0) //wenn die IP gefunden wurde
    {
    //IP bereits vorhanden!
    }
    else if(rows == 0)
    {
    //IP nicht vorhanden!
    format(query, sizeof(query), "INSERT INTO `logs` (`Name`,`IP-Addresse`) VALUES ('%s',('%s'))", name, ip);
    mysql_query(query);
    }


  • Ah ok. - Soweit hätte ich auch selbst denken können^^ danke xDDDDDD


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!