Enregistrer IP dans la bdd

Résolu/Fermé
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019 - 2 févr. 2019 à 20:28
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 - 3 févr. 2019 à 22:05
Bonjour,
Je tente d'enregistré l'Ip des visiteurs de mon site mais je galère un peu...
J'ai réussi à copier l'adresse IP mais comment l'envoyer sur ma BDD?

Voici le code que j'ai utilisé pour récupérer l'adresse IP et l'écrire sur la page (durant les tests):
<?php
    /**
     * Récupérer la véritable adresse IP d'un visiteur
     */
    function get_ip() {
    	// IP si internet partagé
    	if (isset($_SERVER['HTTP_CLIENT_IP'])) {
    		return $_SERVER['HTTP_CLIENT_IP'];
    	}
    	// IP derrière un proxy
    	elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    		return $_SERVER['HTTP_X_FORWARDED_FOR'];
    	}
    	// Sinon : IP normale
    	else {
    		return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
    	}
    }
    ?>
          <?php
    // Afficher l'adresse IP
    echo 'Adresse IP du visiteur : '.get_ip();
    ?>


Merci d'avance pour les éclaircissement :)

Configuration: Windows / Firefox 64.0

4 réponses

yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 Ambassadeur 1 557
Modifié le 2 févr. 2019 à 20:52
bonjour, as-tu créé ta base de données et la table pour y enregistrer les adresses?
as-tu de l'expérience dans l'utilisation de bases de données à partir de PHP?
recherche-tu des exercices dans ce domaine?
ne serait-il pas préférable de d'abord finaliser ceci?
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
2 févr. 2019 à 22:07
J'ai une base de donnée crée où il y a déjà quelques users et mots de passe. J'ai ajouté un colonne pour les IP.
Je suis novice mais j'ai déjà crée une ou deux bdd pour les clients. La bdd où je veux enregistrer l'IP a été faites par un professionnel.
Je cherche juste à savoir s'il y a un code à mettre pour enregistrer les adresses ip dans ma bdd. Il y a t'il un code à mettre?

Mon sujet précédent est 'résolu'... En raison du peu de temps que je possède pour réaliser le tout, j'ai du changer d'option et j'ai sécurisé le tout autrement. Je vais donc le mettre ''résolu''.
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719
2 févr. 2019 à 22:22
Bonjour,

Tout dépend... soit tu utilises PDO soit mysqli pour établir la connexion entre ton script PHP et la BDD
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

Puis ensuite, une requête SQL de type INSERT si c'est pour ajouter une ligne dans la table .. ou UPDATE si c'est pour la mettre à jour....


0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 09:36
Bonjour,
J'utilise PDO pour le connexion... J'ai déjà une page de connexion, une page qui se connecte à ma bdd (qui sont liées) ainsi que la bdd qui va 'avec'.

Sur ma page de connexion, j'ai réussi à obtenir l'adresse ip et la voir sur ma page (echo). Mais je bloque là.

En effet les autres informations (pseudo et mot de passe) doivent être complétées dans un formulaire et puis envoyées. Est-il possible de mettre un autre champ mais qu'il soit automatiquement rempli avec l'IP de la personne pour que cela soit envoyé en même temps que les autres informations (quand il clique sur le bouton envoyé)?

J'espère avoir été clair sinon je reprendrai :) Sinon je pourrais aussi vous mettre mes codes...

Merci à vous.
0
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 1 557 > Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 10:27
si je comprends bien, ton code php est déjà capable d'enregistrer des informations dans la base de données. il serait alors capable de faire cela pour toutes les informations qu'il connait. le fait que ces informations viennent d'un formulaire ou pas n'a pas d'importance.
à quel moment veux-tu enregistrer l'adresse IP dans la base de données, dans quelle page?
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 12:20
Voilà c'est bien ça...
Je souhaite l'enregistrer quand il se connecte à mon site. Ils doivent valider leur pseudo et mdp en cliquant sur un bouton, je pensais donc l'enregistrer quand il clique sur le bouton mais je ne sais pas si cela est possible et si oui comment?

Merci à toi. :)
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719 > Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 12:25
Ben dans ton code php pour la connexion, tu ajoutes une requête pour inserer l'IP...
Je ne vois pas où est le souci...

Si tu n'y arrives pas.. donnes nous ton code php de connexion
0
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 1 557 > Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 12:25
donc le code php devrait simplement faire INSERT ou UPDATE au bon moment.
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 17:43
Vers la ligne 140 où j'ai déjà commencé... Mais qu'est ce que cela change?

J'avais mis l'adresse ip dans add_users pour l'enregistrer quand ils s'inscrivent. Mais avec cela j'aurais peut être pu l'avoir juste lors de la création du compte et non pas à chaque connexion...
Donc je dois créer une nouvelle fonction (update_IP) de ce genre là?

    function update_IP($dbh, $username, $adresse_ip) {
        try {
            $stmt = $dbh->prepare("UPDATE users SET adresse_ip=:adresse_ip WHERE username=:username");
            $stmt->bindParam(':username', $username);
            $stmt->bindParam(':adresse_ip', $adresse_ip);
            $stmt->execute();
            return true;
        } catch(Exception $e) {
            return false;
        }
    }
?>
0
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 1 557
3 févr. 2019 à 17:57
cela correspond à ma suggestion.
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719
3 févr. 2019 à 17:58
Déjà.. tout dépend de ce que tu veux faire.
Ne garder qu'une seule IP (la dernière utilisée) de chaque utilisateur
Ou bien pouvoir stocker toutes les IP (un historique) ?

A noter qu'avec la RGPD... tu as des obligations à suivre concernant le stockage d'informations telles que les adresses IP ...
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019 > jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024
3 févr. 2019 à 18:06
Je pense garder seulement la dernière IP utilisée.

J'ai été mis au courant du RGPD mais j'évite la plupart car c'est dans le cadre d'une association. Mais je respecte au mieux afin de m'y habituer pour mes futurs projets :)
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719 > Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 18:16

Je pense garder seulement la dernière IP utilisée.

Donc oui.. ta fonction update devrait suffire


J'ai été mis au courant du RGPD mais j'évite la plupart car c'est dans le cadre d'une association

Dans les faits...Ca ne change rien.
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019 > jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024
3 févr. 2019 à 18:21
Ok par contre je ne comprends pas comment envoyer l'adresse IP (fonction get_ip) de ma page 'connexion.php') à ma fonction update_ip... Saurais-tu m'éclairer? Cela doit être tout bête mais sur le champs je ne vois pas la solution.
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719
3 févr. 2019 à 20:35
Y'aurait pas mal de choses à dire sur ton code...
concernant le md5 par exemple .... ( à la place, désormais on utilise password_hash et password_verify )

Mais bon.. concernant ta question actuelle :
 function update_IP($dbh, $username) {
        try {
            $stmt = $dbh->prepare("UPDATE users SET adresse_ip=:adresse_ip WHERE username=:username");
            $stmt->bindParam(':username', $username);
            $stmt->bindParam(':adresse_ip', get_ip());
            $stmt->execute();
            return true;
        } catch(Exception $e) {
            return false;
        }
    }
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 20:55
J'ai mis le code que tu m'as mis. Je n'ai aucune erreur mais toujours aucune adresse IP dans ma bdd...
0
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 1 557 > Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 20:59
il reste à appeler la fonction, par exemple en ajoutant
update_IP($dbh, $username);
avant la ligne 116 de ta page de connexion.
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719
3 févr. 2019 à 21:16
Au lieu de faire un return false dans le exception.. il serait utile de pouvoir savoir qu'il y a une erreur et l'afficher...
Essaye :
function update_IP($dbh, $username) {
        try {
             $ip = get_ip();
            $stmt = $dbh->prepare("UPDATE users SET adresse_ip=:adresse_ip WHERE username=:username");
            $stmt->bindParam(':username', $username);
            $stmt->bindParam(':adresse_ip', $ip);
            $stmt->execute();
            return true;
        } catch(Exception $e) {
            echo " <br><b>Erreur !!</b> " .$e->getMessage();
            echo " <br>Datas : <br> IP : ". $ip . "<br> username : " .  $username ; 
             return false;
        }
    }

montres nous aussi à quel endroit tu as appelé cette fonction...
0
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
Modifié le 3 févr. 2019 à 21:49
Merci à toi, cela fonctionne bien maintenant... J'ai passé bcp de temps pour cela mais le résultat est là. :) A bientôt.
0
jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719 > Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019
3 févr. 2019 à 21:56
et histoire qu'on se couche moins bêtes... :-)
c'était quoi l'erreur ?

Et bon.. j'insiste...
Pour gérer l'authentification des utilisateurs... vire le md5 et passe par :http://php.net/manual/fr/function.password-hash.php et https://www.php.net/manual/fr/function.password-verify.php
0