Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Queria saber como fazer para bloquear o cadastro de um formulário por 5 min, por ip.
Um IP só pode se cadastrar a cada 5 min
>
Primeiramente você vai ter que criar uma tabela de "logs".
CREATE TABLE log_request (ipadress VARCHAR(50) NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)Nela você vai pegar o ip do usuário e gravar-lo junto com a data atual do servidor toda vez que alguem fizer o cadastro.
pode pegar o ip do usuário assim:
function getUserIpAddr(){
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
return $_SERVER['HTTP_CLIENT_IP'];
} else
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
return $_SERVER['REMOTE_ADDR'];
}
}
$ip = getUserIpAddr();
Para verificar se usuário pode ou não fazer a requisição faça da sequinte maneira:
$consult = "SELECT ipadress, date, date + 5 as allow, NOW() as now FROM log_request WHERE ipadress = '{$ip}'";
//se retornar 0 então prossiga o cadastro e da um insert na tabela log_request
$insert = "INSERT INTO log_request (`ipadress`, `date`) VALUES ('{$ip}', NOW())";
//se retornar alguma coisa, verifique o horario que foi gravado na linha, se a variavel "allow (vindo do banco)" foi maior que a variavel "now (vindo do banco)" quer dizer que ele já fez um cadastro nos ultimos 5 minutos, se não for maior da um update
$update = "UPDATE log_request SET date = NOW() WHERE ipadress = '{$ip}'";
espero que tenha ajudado.
abç
Olá Gui0, como eu faço pra adicionar este comando que você me passou em uma tabela que eu já tenho criada??
Eu tenho uma tabela já criada neste link - http://encontregames.com/divulgareacmix.php
Gostaria de colocar o bloqueio de 5 min por ip nesta tabela, depois que ela é preenchida e divulgada.
Posso enviar o script que eu tenho por MP para você??
Primeiramente você vai ter que criar uma tabela de "logs".
CREATE TABLE
log_request(ipadressVARCHAR(50) NOT NULL,COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
Nela você vai pegar o ip do usuário e gravar-lo junto com a data atual do servidor toda vez que alguem fizer o cadastro.
pode pegar o ip do usuário assim:
Para verificar se usuário pode ou não fazer a requisição faça da sequinte maneira:
//se retornar 0 então prossiga o cadastro e da um insert na tabela log_request
espero que tenha ajudado.
abç