Adresse IP

Eléphanteau du PHP | 17 Messages

27 sept. 2012, 18:38

Bonjour,
J'ai créé un formulaire de commentaire en php avec une base de donnés. je voudrais récupéré les adresses ip des gens qui postent des commentaires. Dans ma table j'ai créé un champ "ip" en "varchar 15".
Ma question est: Faut-il rajouter un code php dans mon fichier pour l'adresse ip s'affiche dans ma table.
Merci

Eléphant du PHP | 267 Messages

27 sept. 2012, 19:06

salut,

tu peux récupérer l'adresse IP du poste client par :
$_SERVER['REMOTE_ADDR'];
@+
dix2

Eléphanteau du PHP | 17 Messages

27 sept. 2012, 19:10

OK merci pour le code
je le mets ou ce code, je suis débutant

Eléphant du PHP | 343 Messages

27 sept. 2012, 19:55

Avant l'envoi en base.
Développeur web

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

27 sept. 2012, 21:10

Ton type de champ formaté à 15 caractères est tout à fait adapté aux IP v4.
tout dépend de la pérennité que tu comptes accorder à ton développement,
mais tu risques de te retrouver bien embêté quand on passera à l'IP v6. ;)

Comment ça, c'est pas pour demain ? :evil:

Eléphanteau du PHP | 17 Messages

27 sept. 2012, 22:38

Y a-t-il une solution pour l'IP v6?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 sept. 2012, 10:07

deux possibilités auxquelles je pense :
- soit tu crées deux champs : 'ipv4' en varchar(15) et 'ipv6' en varchar(39)
- soit tu crées ton champ : 'ip' en varchar(39)

La première solution me paraît beaucoup plus propre
car elle évite les mélanges.

Eléphanteau du PHP | 17 Messages

28 sept. 2012, 16:55

Et le code reste le même?

$_SERVER['REMOTE_ADDR'];

Je ne l'ai pas encore mis sur ma page, mais je vais le faire

Petit nouveau ! | 7 Messages

28 sept. 2012, 17:51

Oui, c'est $_SERVER['REMOTE_ADDR'];

Par contre, pourquoi imposer une longueur au champ "ip" ?

Il peut très bien être de type text, sans longueur définie, et ça posera pas de problème dans le futur.

Eléphanteau du PHP | 17 Messages

28 sept. 2012, 18:20

OK merci, mais il faudrait m'indiquer ou mettre exactement ce code.
Sam 12 m'a dit "avant l'envoie en base" mais je ne comprends pas trop. j'ai fais des essais, mais ça ne fonctionne pas

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 sept. 2012, 18:21

Il peut très bien être de type text, sans longueur définie, et ça posera pas de problème dans le futur.
On va dire que je n'aurais rien entendu... :afraid:

Regarde la place mémoire que prend chacun de ces types,
multiplie par le nombre de champs et d’enregistrements correspondants
et dis-moi si tu trouves ta solution optimisée.

Petit nouveau ! | 7 Messages

28 sept. 2012, 18:29

Code : Tout sélectionner

<?php $ip_address = $_SERVER["REMOTE_ADDR"]; $sql_insert_ip = "INSERT INTO tabase.`ta_table` (`ip`) VALUES ('".$ip_address."')"; $req_insert_ip = mysql_query($sql_insert_ip) or die('SQL ERROR !<br>'.$sql_insert_ip.'<br>'.mysql_error()) ; ?>

Petit nouveau ! | 7 Messages

28 sept. 2012, 18:32

Tu chipotes, albat.

Ca offre une plus grande souplesse et surtout moins de prise de tête dans le codage. En plus, les tables peuvent s'optimiser directement en base.

Eléphanteau du PHP | 17 Messages

28 sept. 2012, 18:41

Vous prenez pas la tête les gars, ça sert à rien. :mrgreen:
Bon, je ne sais toujours pas ou il faut mettre ce code :(

Petit nouveau ! | 7 Messages

29 sept. 2012, 07:54

Ben le code que je t'ai donné est bon.

Tu peux le mettre où tu veux lol.