Zdravím, mám web http://buildstate.net a potřebuju zamezit surfům a jiným iframe aby se mi přes to dostal nekdo na web (porušuje to pravidla hry, ničí to "opravdovou návštěvnost"). Nevíte nekdo jak zakázat přístupy z nejakých webů? Není na to už dopředu definovaná některá proměná, která by v sobě mela předchozí web?
Moc děkuji za každou radu :)
Fórum › PHP
Zakázání přístupu z určitých webů
Zkusil bych:
$_SERVER["HTTP_REFERER"]
viz. http://cz.php.net/manual/en/reserved.variables.server.php
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
The address of the page (if any) which referred the user agent to the current page.
Do téhle proměnné $_SERVER["HTTP_REFERER"] se ukládá stránka, ze které jsi se dostal na aktuální stránku. Chtělo by to tedy vytvořit například soubor kontrola.php, který by jsi includoval do každé stránky a tam kontroloval, zda uživatel nepřišel ze zakázané stránky.
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
PHP je dobre mit zorganizovane
a) Pomoci modulu - mas jednu stranku, pres kterou se prostrednictvim include pristupuje k ostatnim jako modulum.
b) Mas jeden soubor, ktery includujes do kazde stranky. tento soubor obbsahuje include vsech potrebnych knihoven, inicializace atd.
Kdyz se podivas na nejake vetsi projekty, tak snad kazdy je zorganizovany jednim z techto dvou zpusobu (podstane obvyklejsi je A).
Problem ktery ty mas tam pak neexistuje :)
další dotaz s $_SERVER["HTTP_REFERER"]; zjistim odkud přišel, ale treba to bude www.stranka.cz/banan/index.php a já to porovnávám jen s www.stranka.cz a tak se to nehoduje, jde nejak udelat aby to kontrolovalo tak, aby to našlo "www.stranka.cz" v té kompletní adrese.
Víte?
tu stranku si nakodil sam???
jo vime, ja pouzivam regularne vyrazy (napr. eregi http://sk.php.net/manual/en/function.eregi.php)
ale uplne by mohlo stacit strpos.... http://sk.php.net/manual/en/function.strpos.php
a ze som taky dobry , tu mas moje riesenie:
<?php
$vstup = $_SERVER["HTTP_REFERER"];
if (eregi("^((http|https)?[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4})[/]?(.*)?$",$vstup,$vysledok)) {
$adresa = urldecode($vysledok[2]); // tu mas tu adresu co potrebujes....
}
PS: newiem ci sa v refereri nachadza aj protokol (asi nie) ?
A co budete delat, kdyz vam na tu stranku prijde nekdo LINKEM z jineho webu? Vykopnete ho?
asi nepripocita dalsieho cloveka do statu... :smile4:
To CommanderZ :
já jen potřebuju udělat to, že když nekdo přijde ze zakázaného serveru (surfy atd.), tak at ho to nepustí dál a vypíše zákaz.
Mám soubor kontrola.php
a v něm mám toto
<?php
$zakaz = array("http://baryhoshop.wz.cz/2/", "http://www.baryhoshop.wz.cz/2/", "http://websurf.cz", "http://websurf.cz","http://ebesucher.de","http://www.ebesucher.de","http://autohits.dk","http://www.autohits.dk");
$pocet = count($zakaz);
$ref = $_SERVER["HTTP_REFERER"];
for ($i=0;$i<$pocet;$i++) {
if ($zakaz[$i]==$ref) {
echo "Zákaz - cz.buildstate.net";
exit;
}
}
?>
funguje to ale jen při tom, když se tam někdo dostane přes PŘESNOU adresu, ale kdyby nekdo přisel třeba z www.baryhoshop.wz.cz/slozka/index.php tak už ho to pustí a tomu já potřebuju nějak zamezit. Nejaké nápady?
P.S. Jo kodoval jsem to a cele delal ja (krom anglickeho překladu) a párkrát mi pomohl známý :)
To baryman : Příspěvek viz výše:
<?php
$zakaz = array("http://baryhoshop.wz.cz/2/", "http://www.baryhoshop.wz.cz/2/","http://websurf.cz","http://websurf.cz","http://ebesucher.de","http://www.ebesucher.de", "http://autohits.dk","http://www.autohits.dk");
$ref = $_SERVER["HTTP_REFERER"];
if (eregi("^((http|https)?[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4})[/]?(.*)?$",$ref,$vysledok)) {
$adresa = urldecode($vysledok[2]);
if (in_array($adresa, $zakaz)) {
echo "Zákaz - cz.buildstate.net";
exit;
}
?>
skus toto a skopiruj vysledok sem! :
<?php
$zakaz = array("http://baryhoshop.wz.cz/2/", "http://www.baryhoshop.wz.cz/2/","http://websurf.cz","http://websurf.cz","http://ebesucher.de","http://www.ebesucher.de", "http://autohits.dk","http://www.autohits.dk");
echo "ref: ";
echo $ref = $_SERVER["HTTP_REFERER"];
echo "";
if (eregi("^((http|https)?[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4})[/]?(.*)?$",$ref,$vysledok)) {
echo "adresa: ";
echo $adresa = urldecode($vysledok[2]);
echo "";
if (in_array($adresa, $zakaz)) {
echo "Zákaz - cz.buildstate.net";
exit;
}
?>
nejak sa validne < b r / > straca z textu .....
To survik1 :
ok už jsem to udělal takhle
<?php
$zakaz = "bary";
$ref = $_SERVER["HTTP_REFERER"];
if (eregi($zakaz, $ref)) {
echo "Zákaz";
exit;
}
?>
a když prijdu z webu www.baryhoshop.wz.cz/... tak to napíše zákaz, jen potrebuju vedet jestli udelat z $zakaz pole kde budou všechny zakázané weby bude to fungovat?
To baryman : boze moj vyskusaj prispevok vyssie a hod mi vysledok.....
a ten posledny kusok kodu si myslel zo srandy , vsak????
To baryman : v mojom kode if nechyba, survik sa pozabudol.... no ale co ti vypise potrebujem vidiet...???.... musi vypisal minimalne referera
tento som myslel :smile6:
<?php
$zakaz = "bary";
$ref = $_SERVER["HTTP_REFERER"];
if (eregi($zakaz, $ref)) {
echo "Zákaz";
exit;
}
?>
tak jsem to vyřešil takto a vše funguje jak má
<?php
$zakaz = array("bary","besucher.de",); // jen ukazky pro ilustraci
$ref = $_SERVER["HTTP_REFERER"];
for ($p = 0; $p < count($zakaz); ++$p) {
if (eregi($zakaz[$p], $ref)) {
echo "Zákaz";
exit;
}
}
?>
skus toto , trochu som to prerobil:
<?php
$ref = $_SERVER["HTTP_REFERER"];
$zakaz= array("programujte.com", "baryhoshop.wz.cz");
if (eregi("^http[s]?://([_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4})",$ref,$vysledok)) {
$adresa = urldecode($vysledok[1]);
}
if (in_array($adresa, $zakaz)) {
echo "Zákaz - cz.buildstate.net";
exit;
}
?>
PS: otestoval som to, musi to ist!
mě už funguje toto
<?php
$zakaz = array("bary","besucher.de",); // jen ukazky pro ilustraci
$ref = $_SERVER["HTTP_REFERER"];
for ($p = 0; $p < count($zakaz); ++$p) {
if (eregi($zakaz[$p], $ref)) {
echo "Zákaz";
exit;
}
}
?>
zdá se ti na tom něco šptného že ses tomu kodu předtím tak smál? piš at vím a předejdu chybám :)
odporucam ti jednu vec... cykly pouzivaj len ked je to nutne... hlavne ked sa da problem vyriesit o dost jednoduchsie...
napr. na tvoju stranku pride niekto zo stranky barybary.sk a tiez ma zakaz... pretoze tvoj kod hlada vyrazy nachadzajuce sa v celej adrese...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zakázání určitých funkcí JS — založil Petrs71
Zakazani pristupu na stranku ve FF — založil CommanderZ
Zakázání přístupu na mechaniku — založil Jarda
Zakazani osy — založil koudis
Zakazání EXPLOLERU — založil DSalieri
Moderátoři diskuze