Autor | Zpráva | ||
---|---|---|---|
Akali Profil |
#1 · Zasláno: 19. 7. 2010, 14:21:10
Ahoj, jak mám udělat blokování ip adres, které mám uložené v databázi?
<?php $db_spojeni = mysqli_connect ('udaje'); $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); $objekt_vysledku = mysqli_query($db_spojeni, 'SELECT * FROM ip_ban'); while ($radek = mysqli_fetch_array($objekt_vysledku)) { $ban = $radek['ip_adresa']; } mysqli_free_result($objekt_vysledku); if ($db_spojeni) mysqli_close($db_spojeni); $ip = $_SERVER['REMOTE_ADDR']; if ($ip == $ban) { include ("ban.php"); } else { ?> php, html <? } ?> Vím, že to dělám blbě. Protože do proměnné $ban vkládám všechny ip_adresy z DB a ty se pak nemůžou rovna jedné IP (návštěvníka).. Jak se tohle prosímvás řeší? |
||
Radek9 Profil |
#2 · Zasláno: 19. 7. 2010, 14:25:28
Akali:
… $ban[] = $radek['ip_adresa']; … if(in_array($ip, $ban)){ … |
||
Akali Profil |
#3 · Zasláno: 19. 7. 2010, 14:29:58 · Upravil/a: Akali
<?php $db_spojeni = mysqli_connect ('udaje'); $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); $objekt_vysledku = mysqli_query($db_spojeni, 'SELECT * FROM ip_ban'); while ($radek = mysqli_fetch_array($objekt_vysledku)) { $ban[] = $radek['ip_adresa']; } mysqli_free_result($objekt_vysledku); if ($db_spojeni) mysqli_close($db_spojeni); $ip = $_SERVER['REMOTE_ADDR']; if(in_array($ip, $ban)){ include ("ban.php"); } else { ?> php, html <? } ?> Pokud jsem tě správně pochopoil tka to nefunguje.. IP_adresy mám uložený v jednom řádku v DB zrovna teď tam mám tohle (88.100.64.89, 23.158.155.12).. První je moje IPadresa a druhá vymyšlená |
||
Danqo Profil |
#4 · Zasláno: 19. 7. 2010, 14:35:01
Akali:
v tom tvojom prvom kode v tom while hod if($ban == $_SERVER['REMOTE_ADDR']) { echo "Mas BAN"; exit(); (popripade to tvoje BAN.php ale neviem co v nom mas)} |
||
Akali Profil |
#5 · Zasláno: 19. 7. 2010, 14:45:44
Jenže proměnná $ban obsahuje dvě ip adresy a to 88.100.64.89, 23.158.155.12 a ty se nikdy nebudou rovant jedné IP adrese a to třeba té mojí 88.100.64.89
čili podmínka if(in_array($ip, $ban)) nebude nikdy pravdivá, pokud se tam bude nacházet více ip adres pokud mám 2 ip - 88.100.64.89, 23.158.155.12 se nerovná 88.100.64.89 a tím pádem mě to tam vždy pustí.. |
||
Radek9 Profil |
#6 · Zasláno: 19. 7. 2010, 14:45:53
Akali:
Takže to je řetězec, ve kterém jsou IP adresy oddělené čárkou a mezerou? Kdyžtak sem hoď schéme té tabulky. |
||
Akali Profil |
#7 · Zasláno: 19. 7. 2010, 14:48:09 · Upravil/a: Akali
Je to insert, ale to je úplně jedno
INSERT INTO `ip_ban` (`id`, `ip_adresa`, `komentar`) VALUES (1, '88.100.64.89, 23.158.155.12', 'blbeček'); Já právě nevím, zda je lepší ukládat do jednoho řádku, nebo do 2 |
||
Radek9 Profil |
#8 · Zasláno: 19. 7. 2010, 14:52:07 · Upravil/a: Radek9
Akali:
Do dvou, potom můžeš použít ten můj způsob. A možná by bylo lepší to dát rovnou do query: if(mysqli_fetch_assoc(mysqli_query("SELECT * FROM ip_ban WHERE ip_adresa = '".$_SERVER["REMOTE_ADDR"]."' LIMIT 1"))){ //BAN exit; } //Stránka |
||
Akali Profil |
#9 · Zasláno: 19. 7. 2010, 14:56:28
Díky všem pánové. Použil jsem ten způsob od radka a uložil to do 2 řádků takže to teď funguje..
|
||
mattyZEM Profil |
#10 · Zasláno: 19. 7. 2010, 15:09:36 · Upravil/a: mattyZEM
Podmínka, jestli nění IP zabanována by měla být určitě na každé podstránce, pokud tedy není nutný i komentář, pro toto bych použil asi fileDB. Pokud stránky načítáš v indexu a pak includuješ, je to jen jedna podmínka na všechny podstránky.
bany.txt 123.456.789.012 256.256.256.256 1.2.3.4 127.0.0.1 if(!in_array($_SERVER['REMOTE_ADDR'], explode("\n", file_get_contents("bany.txt")))){ // Načítání stránky podle $_GET[]-u }else { @include "stranky/zabanovana.php"; } |
||
Akali Profil |
#11 · Zasláno: 19. 7. 2010, 15:14:23
Já jsem potřeboval kontrolovat bany jenom asi na 3 stránkách..
|
||
curdto Profil |
#12 · Zasláno: 19. 7. 2010, 21:54:32
Já používám tento kód a zdá se mi jednodušší než ty uvedené, tak ho sem hodím, kdyby ho někdo potřeboval :-)
$ipadresaktualni = $_SERVER["REMOTE_ADDR"]; $kontrola=mysql_num_rows(mysql_query("select id from blokovane_ip where ip='".$ipadresaktualni."'")); if($kontrola==1){ echo("Tvoje IP adresa je blokována."); exit; }else{ } |
||
Akali Profil |
#13 · Zasláno: 20. 7. 2010, 12:27:04
Pěkné řešení.. Kdyby si ho sem dal dřív tak ho rád použiju
|
||
Časová prodleva: 15 let
|
0