Защита аккаунта пользователя
#1

Hi people

Возникла такая проблема. Хочу сделать, чтобы пользователь мог ставить защиту на свой аккаунт (да, да, пароля мало). Защита устанавливается по IP адресу. Вообщем в файл юзера успешно записывается последний IP адрес, всё как надо, но нормально считать этот IP из файла, он не может... (объяснять я не умею )

Вообщем вод основа защиты:

Quote:

if(PlayerInfo[playerid][pAccountProtection] == 1)
{
if(GetPlayerIp(playerid, currentip, sizeof(currentip)) == PlayerInfo[playerid][pLastIp])
{
return 1;
}
else
{
SendClientMessage(playerid, COLOR_LIGHTYELLOW, "Ваш IP адрес не совпадает с IP адресом использованным при установке защиты аккаунта!");
Kick(playerid);
}
}

Видимо я что то не так наляпал своими корявыми руками, но кикает в любом случае, даже если IP совпадает -_-

Вопрос: Что не так? о.о
Reply
#2

если кто-то на димамике поставит так называемую защиту, то потом уже ты будешь востанавливать этот аккаунт, потому что его не пустит после ребута интернета.
Reply
#3

https://sampwiki.blast.hk/wiki/GetPlayerIp
https://sampwiki.blast.hk/wiki/Strcmp
pawn Код:
if(PlayerInfo[playerid][pAccountProtection] == 1)
{
    GetPlayerIp(playerid, currentip, sizeof(currentip));
    if ( strcmp(currentip, PlayerInfo[playerid][pLastIp]) )
    {
        SendClientMessage(playerid, COLOR_LIGHTYELLOW, "Ваш IP адрес не совпадает с IP адресом использованным при установке защиты аккаунта!");
        Kick(playerid);
    }
}
Reply
#4

White_116, спасибо кэп, у меня вообще то в диалогах предупреждение стоит, мол юзерам с динамикой лучше не ставить, если игрок принимает условия, то устанавливается защита...

Fro1sha, спасибо
Reply
#5

по емейлу делай, асе, по мобилке. HTTP есть же
Reply
#6

Romanius, я в этих функциях пока не особо разбираюсь

Если есть урок по их использованию, кидай
Reply
#7

Fro1sha, хм... По началу работало прекрасно, сейчас, то IP совпадает, то не совпадает... Хотя IP прописан один и тот же (127.0.0.1) для теста на блокировку захожу по этому адресу 192.168.1.2...

Хз в чём трабл -_-
Reply
#8

PlayerInfo[playerid][pLastIp]
Криво записал в нее данные скорее всего...
Reply
#9

Вот моя функция записи IP адреса:

Quote:

// Запись последнего ip адреса
new ip[MAX_PLAYER_IP], ipstring[MAX_PLAYER_IP];
GetPlayerIp(playerid, ip, sizeof(ip));
format(ipstring, sizeof(ipstring), "%s", ip);
strmid(PlayerInfo[playerid][pLastIp], ipstring, 0, strlen(ipstring), 255);

Reply
#10

Quote:
Originally Posted by Miller
Посмотреть сообщение
Вот моя функция записи IP адреса:
Код:
new ip[MAX_PLAYER_IP];
GetPlayerIp(playerid, ip, sizeof(ip));
strmid(PlayerInfo[playerid][pLastIp], ip, 0, strlen(ip));
Не проще ли?
Reply
#11

Makar93, ну может и проще, но функционал то один и тот же получается -_-
Reply
#12

pawn Код:
GetPlayerIp(playerid, PlayerInfo[playerid][pLastIp], MAX_PLAYER_IP);
Reply
#13

Makar93, ну пистец, твой код попробовал, теперь вообще ничего не записывается, и юзер может входить с любого IP >.<
Reply
#14

Stepashka, и что с этим делать >_<?
Reply
#15

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
pawn Код:
GetPlayerIp(playerid, PlayerInfo[playerid][pLastIp], MAX_PLAYER_IP);
Ну или так
Quote:
Originally Posted by Miller
Посмотреть сообщение
Makar93, ну пистец, твой код попробовал, теперь вообще ничего не записывается, и юзер может входить с любого IP >.<
Извиняюсь за выражение, не виноваты ли ваши криворучки?
Reply
#16

Makar93, бывает что я жалуюсь на свои руки, в чём то они и в правду кривы, но не до такой же степени, что я не могу банально заменить две строки одной... -_-
Reply
#17

Quote:
Originally Posted by Miller
Посмотреть сообщение
Makar93, бывает что я жалуюсь на свои руки, в чём то они и в правду кривы, но не до такой же степени, что я не могу банально заменить две строки одной... -_-
Степашка тебе показал как записать в PlayerInfo[playerid][pLastIp] IP игрока, дальше сам.
Reply
#18

Stepashka, разобрался ^^

Makar93, незнаю почему, но с твоим кодом у меня не записывало...

Какбэ запись в файл была, спасибо что сжали код, но...

Как исправить трабл с тем, что я не могу зайти даже с того IP адреса, который был установлен при включении защиты ><?
Reply
#19

Покажи конечный вариант проверки.
Reply
#20

Stepashka, вот:

Код:
	if(PlayerInfo[playerid][pAccountProtection] == 1)
	{
		GetPlayerIp(playerid, currentip, sizeof(currentip));
    		if(strcmp(currentip,PlayerInfo[playerid][pLastIp]))
    		{
    	    		SendClientMessage(playerid, COLOR_LIGHTYELLOW, "Ваш IP адрес не совпадает с IP адресом использованным при установке защиты аккаунта!");
    	    		Kick(playerid);
    		}
	}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)