Captive portal Setup:
This cannot be achieved by only dnsmasq,dhcp and hostapd. You need a webserver. You redirect all the default (except whitelisted ones) traffic to webserver .
If you want push mechanism , dhcp,dns,wifi protocol doesn't support. Well you have dhcp option default_url but it is not standard and may or may not work.
The best is to have a poller or trigger on the clients that launch a page or ip when connected . For example when you connect to a wifi you can setup a rule in client side saying "popup if connected" . A shell script with sleep or 10 secs or 1 minute is easy.
Like try to ping your gateway or dhcp server . That should be reachable once you are connected and the output exit code is 0.
But since it is client side the clients can turn this off or the page .