Участник
Пользователь
- Сообщения
- 28
- Реакции
- 0
Да. Это в планах до НГ залитьРегистрацию запилишь?
Да. Это в планах до НГ залитьРегистрацию запилишь?
// Поиск пользователя по стим ид
format(g_szQuery, charsmax(g_szQuery), "\
SELECT `%s`.*\
FROM `%s`\
WHERE `%s`.`ip` = '%s' OR `%s`.`steam_id` = '%s'\
",
L 11/01/2024 - 10:36:33: [AMXX] Displaying debug trace (plugin "SQL_Core.amxx", version "1.1 BETA")
L 11/01/2024 - 10:36:33: [AMXX] Run time error 4: index out of bounds
L 11/01/2024 - 10:36:33: [AMXX] [0] SQL_Core.sma::SQL_QueryConnection_Service (line 86)
[ 5] [SQL] Core 1.1 BETA Mittu SQL_Core.amxx debug
public SQL_QueryConnection_Service(iState, Handle:hQuery, const szError[], iErrorCode, const szData[], iDataSize) // Получает список всех привилегий
{
if(iState == TQUERY_CONNECT_FAILED || iState == TQUERY_QUERY_FAILED)
return MySQL_connection_failed(iState, szError, iErrorCode, szData, iDataSize);
if(SQL_NumResults(hQuery))
{
new iResults = SQL_NumResults(hQuery), Coll = 0;
new iStrSize[] = {255, 32};
g_iResultService = iResults;
while(iResults && Coll < sizeof(g_BDServiceInfo)) // Bounds check for Coll
{
g_BDServiceInfo[Coll][SERVICE_ID] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "id"));
SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "name"), g_BDServiceInfo[Coll][SERVICE_NAME], iStrSize[0] - 1); // size = 255
SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "rights"), g_BDServiceInfo[Coll][SERVICE_FLAGS], iStrSize[1] - 1); // size = 32
g_BDServiceInfo[Coll][TRIM] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "trim"));
g_BDServiceInfo[Coll][IMMUNITY] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "immunity"));
g_BDServiceInfo[Coll][SALE] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "sale"));
g_BDServiceInfo[Coll][USERS_GROUP] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "users_group"));
g_BDServiceInfo[Coll][SHOW_ADM] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "show_adm"));
g_BDServiceInfo[Coll][SERVER_SERVICE] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "service"));
g_BDServiceInfo[Coll][SERVER_PRICE] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "price"));
g_BDServiceInfo[Coll][PRICE_RENEWAL] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "price_renewal"));
g_BDServiceInfo[Coll][TIME] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "time"));
g_BDServiceInfo[Coll][DISCOUNT] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "discount"));
SQL_NextRow(hQuery);
Coll++;
iResults--;
}
}
return PLUGIN_HANDLED;
}
было бы интересно увидеть исходный код и API, это было бы хорошо сделать перед тем как разрабатывать какой-то публичный плагин, который будет опираться на эту реализацию mysql клиентатурбо-SQL
new szName[250];
get_user_name(id, szName, charsmax(szName));
while(replace(g_BDUserInfo[id][NAME], charsmax(szName), "'", "'")) {}
if(!equali(g_BDUserInfo[id][NAME], szName) && g_BDUserInfo[id][ID] && UserId)
{
while(replace(szName, charsmax(szName), "'", "'")) {}
new iParams[1];
iParams[0] = UserId;
format(g_szQuery, charsmax(g_szQuery), "UPDATE `%s` SET `nick` = '%s' WHERE `id` = %d", g_szDataBase[TABLE_USERS],
szName, g_BDUserInfo[id][ID]);
SQL_ThreadQuery(g_SqlTuple, "SQL_QueryConnection_Users_AutoNick", g_szQuery, iParams, sizeof iParams);
}
szName
не экранируется, возможна sql-инъекцияТогда окВ коде указана принудительная кодировкаSQL_SetCharset(g_SqlTuple, "utf8")
на 41 строке