keepz Posted April 28, 2008 at 03:42 PM Report Share #181950 Posted April 28, 2008 at 03:42 PM Boa tarde Eu, atravaes de php, e ja adqirido o ip, queria saber como posso banir esse ip do meu site durante um X tempo. Obrigado pela colaboração, cumpz Link to comment Share on other sites More sharing options...
fnds Posted April 28, 2008 at 03:45 PM Report Share #181951 Posted April 28, 2008 at 03:45 PM Usas uma bd com um campo para o ip e outro com a hora em que esse ip pode voltar a aceder á página, enquanto esse tempo não passar mostras-lhe uma mensagem a dizer que não pode aceder. Link to comment Share on other sites More sharing options...
keepz Posted April 28, 2008 at 04:16 PM Author Report Share #181960 Posted April 28, 2008 at 04:16 PM <? include('connectdb.php'); if(isset($_COOKIE['Key_my_site'])) { $username = $_COOKIE['Id_my_site']; $query=mysql_query("SELECT tempo FROM users WHERE username='".$username." ' "); while (mysql_num_rows($query) < 0): echo " Banned "; endwhile; } else{ echo " not banned "; } ?> Tipo isto ? Link to comment Share on other sites More sharing options...
Battousai Posted April 28, 2008 at 04:21 PM Report Share #181967 Posted April 28, 2008 at 04:21 PM Não. Na base de dados guardas o IP e a DATA, depois seleccionas o registo onde o IP é igual ao IP que está a aceder o site, onde a Data ainda se encontra dentro do prazo de "Ban". $q = mysql_query('SELECT id FROM user WHERE ip = "'.$_SERVER['REMOTE_ADDR'].'" AND data>NOW() LIMIT 1'); echo mysql_num_rows( $q ) ? 'banido' : 'n banido'; Link to comment Share on other sites More sharing options...
slack_guy Posted April 28, 2008 at 10:27 PM Report Share #182194 Posted April 28, 2008 at 10:27 PM Se puderes, bloqueia o IP na Firewall. Não sei o que é que estás a tentar obter, mas repara neste cenário (para a solução proposta nos posts anteriores): um utilizador brincalhão está a 'brincar' com o teu site e faz, de rajada, umas centenas de requests ao www.teusite.com. Se por cada request vais à BD perguntar pelos IPs banidos o resultado pode não ser famoso... Ou seja, colocaste mais um problema em cima do problema. A menos que queiras informar o utilizador que ele está impedido de visualizar o conteúdo do teu site por um período de tempo, o melhor é mesmo nem lhe dares resposta. :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave ^X^C ^C ^D ^Z ^Q QUITDAMMIT Link to comment Share on other sites More sharing options...
Kimico Posted April 28, 2008 at 11:05 PM Report Share #182216 Posted April 28, 2008 at 11:05 PM Se puderes, bloqueia o IP na Firewall. Não sei o que é que estás a tentar obter, mas repara neste cenário (para a solução proposta nos posts anteriores): um utilizador brincalhão está a 'brincar' com o teu site e faz, de rajada, umas centenas de requests ao www.teusite.com. Se por cada request vais à BD perguntar pelos IPs banidos o resultado pode não ser famoso... Ou seja, colocaste mais um problema em cima do problema. A menos que queiras informar o utilizador que ele está impedido de visualizar o conteúdo do teu site por um período de tempo, o melhor é mesmo nem lhe dares resposta. Apoiado! shell_exec('iptables') Link to comment Share on other sites More sharing options...
djthyrax Posted April 28, 2008 at 11:09 PM Report Share #182220 Posted April 28, 2008 at 11:09 PM Não se esqueçam que não podem fazer isso num servidor partilhado. A melhor opção nestes casos é mesmo bloquear pelo .htaccess, redireccionando para uma página estática e cache-friendly a notificar da situação. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
skin Posted April 28, 2008 at 11:12 PM Report Share #182222 Posted April 28, 2008 at 11:12 PM Boa tarde Eu, atravaes de php, e ja adqirido o ip, queria saber como posso banir esse ip do meu site durante um X tempo. Obrigado pela colaboração, cumpz Deve haver problemas de leitura... :dontgetit: Our lives begin to end the day we become silent about things that matter - Martin Luther King Link to comment Share on other sites More sharing options...
djthyrax Posted April 28, 2008 at 11:18 PM Report Share #182228 Posted April 28, 2008 at 11:18 PM Deve haver problemas de leitura... :dontgetit: Não percebi essa. Ele pediu como fazer com PHP, teve uma resposta, e teve um conselho que era não recorrer a PHP, devido ao overhead que havia só para bloquear o utilizador. Qual é a espiga disso? Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Battousai Posted April 29, 2008 at 08:15 AM Report Share #182247 Posted April 29, 2008 at 08:15 AM Hum, mas vocês dizem iptables, htaccess, etc, mas isso não é demasiado "estático" para bans temporários de utilizadores? É só um pensamento Link to comment Share on other sites More sharing options...
cyclop Posted April 29, 2008 at 10:30 AM Report Share #182253 Posted April 29, 2008 at 10:30 AM Uma ideia, seguindo a logica de um sistema de utilizadores online, podes alterar e criar um codigo para nao deixar esse ip visualizar a pagina durante X horas ou entao alojar um cookie no cliente, esse é menos eficaz pois o utilizador pode apagar o cookie (sim, com o ip tambem podem fazer reset ao modem e PODEM ficar com um novo ip em pouco tempo... mas... escolham lol ) "Quando eu for grande quero ser como o Celso" Link to comment Share on other sites More sharing options...
Guest id194 Posted April 29, 2008 at 11:42 AM Report Share #182270 Posted April 29, 2008 at 11:42 AM Se o sistema usar sessões podes muito bem fazer uma query à BD apenas uma vez, depois guardas a lista de IPs banidos numa variável de sessão e pronto, não será preciso estar sempre a ir à BD... Link to comment Share on other sites More sharing options...
Battousai Posted April 29, 2008 at 11:49 AM Report Share #182273 Posted April 29, 2008 at 11:49 AM Se o sistema usar sessões podes muito bem fazer uma query à BD apenas uma vez, depois guardas a lista de IPs banidos numa variável de sessão e pronto, não será preciso estar sempre a ir à BD... Hum? Assim se forem actualizadas, não sabes. Chega a uma altura em que tens que actualizar a lista de IPs e verificar se o cliente se encontra em algum deles. E depois se a lista de IPs for enorme, imagina uma sessão por utilizador com uma lista de IPs Link to comment Share on other sites More sharing options...
djthyrax Posted April 29, 2008 at 02:04 PM Report Share #182298 Posted April 29, 2008 at 02:04 PM Nazgulled, para sessões, o cliente tem de manter o cookie. Ou seja, facilmente te obrigam a ir à bd. Anyway, em relação ao ser demasiado estático Battousai, um cronjob a ir à db buscar os bans e actualizar o .htaccess não é propriamente estático... Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Battousai Posted April 29, 2008 at 02:12 PM Report Share #182300 Posted April 29, 2008 at 02:12 PM Nazgulled, para sessões, o cliente tem de manter o cookie. Ou seja, facilmente te obrigam a ir à bd. Anyway, em relação ao ser demasiado estático Battousai, um cronjob a ir à db buscar os bans e actualizar o .htaccess não é propriamente estático... Hum... Isso tem defeitos de fabrico.Para já, o cronjob tinha que trabalhar aos segundos para que os bans fossem extintos na altura exacta. Depois limpar e encher um ficheiro de x em x segundos, é só mais carga para o servidor. Link to comment Share on other sites More sharing options...
djthyrax Posted April 29, 2008 at 02:18 PM Report Share #182301 Posted April 29, 2008 at 02:18 PM O cronjob não seria executado segundo a segundo mas sim de 30 em 30 minutos. Além disso, só precisavas de ver quais os bans que acabaram de ser eliminados, e, caso existisse algum, fazer um dump para o htaccess dos bans que continuam. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Battousai Posted April 29, 2008 at 02:23 PM Report Share #182303 Posted April 29, 2008 at 02:23 PM De 30 em 30 minutos limitavas o ban a horas certas e meias horas (pronto de meia em meia hora). Depois no script ias ver quais os que já passavam da data e eliminava-os, depois enchias o .htaccess com os que ainda subsistiam e com os novos. Depois quando adicionasses um novo ban, executavas este processo também. Eu continuo a não achar este processo lá muito viável, porque os bans são levantados e actualizados de 30 em 30 minutos. Ou então estou a apanhar mal alguma coisa. Link to comment Share on other sites More sharing options...
djthyrax Posted April 29, 2008 at 02:50 PM Report Share #182319 Posted April 29, 2008 at 02:50 PM Não é viável porquê? Banir, ele actualizava ao banir o pessoal. Desbanir, ele desbania de 30 em 30 minutos/quando se mexesse nos bans. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Battousai Posted April 29, 2008 at 02:54 PM Report Share #182320 Posted April 29, 2008 at 02:54 PM Certo, agora imagina o seguinte: O cron actualiza de 30 em 30 minutos. Vamos imaginar que isto calha às 14:00 e 14:30 e por aí adiante. Agora imagina que tu tens um ban de 45 minutos para um utilizador e marcas-te esse ban às 14, ou seja o ban acaba às 14:45. O cron vai actualizar às 14:30 e a próxima actualização vai ser às 15. No primeiro, não elimina o ban, porque ainda não passaram 45 minutos, na actualização das 15 o ban já passou em 15 minutos. Link to comment Share on other sites More sharing options...
djthyrax Posted April 29, 2008 at 03:00 PM Report Share #182323 Posted April 29, 2008 at 03:00 PM Solução: Predefinir tempos de bans e fazer cronjobs para esses periodos. OU, fazer o cronjob remover os bans que já expiraram E os que vão expirar nos próximos minutos (excepto se tiver marcado como necessário ir até ao fim, ou seja, só aparecia na próxima actualização. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now