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?
MySQL (IP's abgleichen?)
- BOMBER
- Geschlossen
- Erledigt
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
-
-
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);
} -
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. -
Ist die Ip auch in den Logs ?
-
Ist die Ip auch in den Logs ?
Habe editiert, funktioniert doch, wie lasse ich jetzt die Bezirksziffern abgleichen? -
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, '.');
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];
split(IP, IP2, '.');
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
Ne, verstehe dich nicht so richtig, was soll ich nun splitten / vergleichen? :s -
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 -
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], playerip[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? -
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);
} -
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 -
Und wegen split, split teilt den string an den stellen wie z.B. hier ein '.' ist..
also aus
127.0.0.1 wird
127(IP2[0]) 0(IP2[1]) 0(IP2[2]) 1(IP2[3]) -
Und wegen split, split teilt den string an den stellen wie z.B. hier ein '.' ist..
also aus
127.0.0.1 wird
127(IP2[0]) 0(IP2[1]) 0(IP2[2]) 1(IP2[3])
Versteh sowieso nicht soviel von MySQL, also kA wie man die verwendet -
breadfish.de
Hat das Thema geschlossen.