Blokada widoczności strony www dla danego obszaru/krajów


(lieft) #1

witam, jestem zielony w tematyce programowania, dlatego skorzystałem z kreatora www. Jednak mam problem taki: chciałbym mianowicie, żeby moja strona nie była widoczna dla niektórych krajów, w tym Polski.  Kompletnie nie wiem, jak to można zrobić, a podejrzewam, że zrobić można. 

Czy znalazłby się ktoś, kto by mnie pokierował w wolnej chwili i pomógł uporać się z tym zadaniem?

 

Chciałbym, żeby to wyglądało mniej więcej jak na Facebooku, gdzie w banalny sposób jako admin mogę ustawić widoczność swojej strony np tylko dla Austrii, przy tym nie tracąc dostępu do tej strony Facebooka, gdy jestem np we Francji. 

 

Mam że tak powiem zapodane dwie strony, z których można czerpać wiedzę, ale mnie jako laikowi nic to nie mówi. Z angielskim jeszcze bym sobie poradził, ale tam są same pojęcia techniczne, czego już zupełnie nie łapię.

 

https://php.net/manual/en/function.geoip-country-name-by-name.php

 

https://httpd.apache.org/docs/current/mod/mod_access_compat.html

 

 

Z góry dziękuję za każą chęć pomocy. Gdy to będzie wymagać jakiejś dłuższej rozmowy, to proponuję priwa.

 

Pozdrawiam.


(Drobok) #2

Twój główny problem to to, że ty chcesz się logować pomimo obecności w danym kraju, więc w htaccess nie zrobisz nic. Potrzebujesz kodu który pozwoli ci się zalogować mimo niedostępności w danym rejonie. Mając stałe unikalne ip mógłbyś się tam po prostu dopisać. Z tym że zmieniajac ip tracisz dostęp do strony / podstrony. A jeśli chcesz mieć formularz:

 

Na stronie http://www.ip2nation.com/ masz bazę sql

W http://www.ip2nation.com/ip2nation/Sample_Scripts/Country_Based_Redirect masz skrypt: 

<?php
	//dane do logowania do twojej bazy danych
	$server = ''; // MySQL hostname
	$username = ''; // MySQL username
	$password = ''; // MySQL password
	$dbname = ''; // MySQL db name
	
	//polaczenie z baza
	$db = mysql_connect($server, $username, $password) or die(mysql_error());
	      mysql_select_db($dbname) or die(mysql_error());
	//pobranie 2literowej nazwy panstwa z bazy na podstawie ip
	$sql = 'SELECT 
	            country
	        FROM 
	            ip2nation
	        WHERE 
	            ip < INET_ATON("'.$_SERVER['REMOTE_ADDR'].'") 
	        ORDER BY 
	            ip DESC 
	        LIMIT 0,1';
	
	list($country) = mysql_fetch_row(mysql_query($sql));
	//a tutaj wybierasz co konkretnie chcesz zrobic na podstawie kraju z ktorego sie laczysz
?>

Masz już podstawę, teraz powinieneś stworzyć listę krajów, np za pomocą checkbox, albo option. W/W formularz zapisać do innej bazy (np id, kraj, dostepnsc), później sprawdzasz to co dostałeś w w/w skrypcie jest w twojej bazie dostępne lub nie jesteś zalogowany. Jeśli jest wyświetlasz treść, jeśli nie logowanie lub wyrzucasz na inną stronę, a logowanie dostępne w jakiejś innej lokalizacji.

Jak nie uda ci się przez to przebrnąć to pytaj.


(lieft) #3

Dziękuję, będę to starał się zrobić na spokojnie. Jestem w stanie się pogodzić z tym, że nie będę miał dostępu do strony będąc na jakichś wyjazdach, wakacjach, więc jeżeli to byłoby łatwiejsze w ustawieniach, to jestem w stanie to “przeboleć”. Dam potem znać, może też na pw, bo nie wiem, czy dostaniesz kolejne powiadomienie stąd. Strasznie to mimo wszystko jest skomplikowane dla laika, a miało być łatwo, lekko i przyjemnie z kreatorem. Na Facebooku jest to banalnie prosto rozwiązane, nie wiem czemu tego samego nie można zrobić z www zwykłymi.

Pozdrawiam.


(Drobok) #4

Na fb też jest skrypt tego typu, to że użytkownik widzi tylko formularz to inna sprawa.