What you're looking for is called a "captive portal".
Here are some options of how to implement it:
Open Source/Free
- ChilliSpot
- Wifidog
- PacketFence
- HotSpotPA
- CoovaChilli
- Untangle captive portal
- pfSense
- PepperSpot
- Zeroshell
Closed Source/Paid:
- FirstSpot
- antamedia
- polkaspots