%s В DIALOG_STYLE_INPUT
#1

Ребята, искал, может что кто подскажет? Как можно защитить себя от крэша сервера?
Reply
#2

Поиск символа в inputtext
Если найден заменить на #
PROFIT
Reply
#3

PHP Code:
for(new strlen(inputtext); != 0; --i)
    switch(
inputtext[i])
    {
        case 
'%':return Kick(playerid);
    } 
Reply
#4

Quote:
Originally Posted by Aizov
View Post
PHP Code:
for(new strlen(inputtext); != 0; --i)
    switch(
inputtext[i])
    {
        case 
'%':return Kick(playerid);
    } 
Прочтите книги про "экранирование данных". И ни когда не работайте с сфере где нужно обрабатывать пользовательские данные. С вашим подходом пользователя за опечатку в тюрьму отправят!
Reply
#5

Quote:
Originally Posted by Aizov
View Post
PHP Code:
for(new strlen(inputtext); != 0; --i)
    switch(
inputtext[i])
    {
        case 
'%':return Kick(playerid);
    } 
Мне кажется, или логичней было бы после % добавить еще "s"?
Reply
#6

Quote:
Originally Posted by 0x002
View Post
Мне кажется, или логичней было бы после % добавить еще "s"?
вам кажется.
Reply
#7

Quote:
Originally Posted by Stepashka
View Post
вам кажется.
Тоесть вы считаете нецелесообразным использовать код, который выложил товарищ выше?
Reply
#8

Quote:
Originally Posted by 0x002
View Post
Тоесть вы считаете нецелесообразным использовать код, который выложил товарищ выше?
Да. Во-первых, есть не только определение строки через %s, но и другие - интовых чисел через %i и %d, дробных через %f, etc.
А во-вторых, проверка на следующий после % символ в рамках указанного кода вообще смысла не несёт.
Reply
#9

Пофиксили же это уже давно, не? Она автоматически заменяется сама. В чате, по крайней мере, точно.
Reply
#10

Quote:
Originally Posted by DrumYum
View Post
Пофиксили же это уже давно, не? Она автоматически заменяется сама. В чате, по крайней мере, точно.
В чате давно, в диалогах нет
Reply
#11

Если не понял суть самого первого ответа, то вот

PHP Code:
strreplace(inputtext'%''#'); 
Reply
#12

Quote:
Originally Posted by Randall
View Post
Если не понял суть самого первого ответа, то вот
PHP Code:
strreplace(inputtext'%''#'); 
Это же не стандартная ?


Как вариант.
PHP Code:
if(strfind(inputtext,"%") != -1
Reply
#13

Quote:
Originally Posted by k3dr
View Post
Это же не стандартная ?


Как вариант.
PHP Code:
if(strfind(inputtext,"%") != -1
Да, точно..

Но твоим способом ему придется вставлять в каждый вызываемый диалог

Проще добавить сток, а тот вариант, что я кинул выше, поставить в начало каллбека

PHP Code:
stock strreplace(string[], findreplace)
{
    for(new 
i=0string[i]; i++)
    {
        if(
string[i] == find)
        {
            
string[i] = replace;
        }
    }

Reply
#14

Quote:
Originally Posted by Randall
View Post
Да, точно..

Но твоим способом ему придется вставлять в каждый вызываемый диалог

Проще добавить сток, а тот вариант, что я кинул выше, поставить в начало каллбека

PHP Code:
stock strreplace(string[], findreplace)
{
    for(new 
i=0string[i]; i++)
    {
        if(
string[i] == find)
        {
            
string[i] = replace;
        }
    }

Хороший вариант, а мой же, можно в начале паблика, не обязательно в каждый диалог.
Reply
#15

Quote:
Originally Posted by Randall
View Post
Да, точно..

Но твоим способом ему придется вставлять в каждый вызываемый диалог

Проще добавить сток, а тот вариант, что я кинул выше, поставить в начало каллбека

PHP Code:
stock strreplace(string[], findreplace)
{
    for(new 
i=0string[i]; i++)
    {
        if(
string[i] == find)
        {
            
string[i] = replace;
        }
    }

С чего это в каждый, если также в начало коллбэка тот код пихнуть можно без проблем? Если диалоговое окно не имеет поля для ввода, длина inputtext будет равна нулю и strfind спокойно вернет -1. Если я правильно задумку с strfind понял.
Reply
#16

inputtext при MSGBOX не проверяли, но при LIST содержит то, что в listitem.
Reply
#17

http://forum.sa-mp.com/showpost.php?...09&postcount=9
учимся юзать поиск
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)