Ну, первое делается при помощи Geo IP (PHP функция geoip_country_code_by_name()), а второе на основе анализа реферрера (храниться в $_SERVER["HTTP_REFERER"]).
Если Вы готовы потратить на подоный скрипт некоторую сумму - обращайтесь в PM - сделаю согласно ТЗ.