Tu as 2 méthodes pour géolocaliser un utilisateur :
- En se basant sur son IP
Tu vas dans ce cas avoir besoin d'une base de donnée faisant les relations entre les plages d'IP et les zones géographiques. Le résultat est certaines fois imprécis (voir complètement faux), mais tu pourras le faire sans l'aval de l'utilisateur.
- En utilisant l'API de géolocalisation HTML5
Pour cette technique, tu dépends du javascript et non du PHP.
Un bon exemple sera plus parlant qu'un long discours : HTML5 Playground - Géolocalisation
L'utilisateur devra accepter d'être géolocalisé.