IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Récupérer l'ip locale et l'écrire dans un .txt avec du javascript


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Récupérer l'ip locale et l'écrire dans un .txt avec du javascript
    Bonjour ,
    j'ai besoin d'aide pour un script qui récupèrerait l'ip locale en 192.168... puis l'écrirais dans un .txt . et que j'aimerais utiliser pour mon site . Je comptais tout faire en php mais ceci semble impossible sans js .
    Je n'arrive pas à le à le faire se lancer. J'ai regardé plusieurs méthodes pour lancer un javascript avec du php mais rien ne marche. Je ne sais pas si c'est que j'ai mal utilisé "echo" ou si je l'ai mal inséré dans mon index.php ou si ça vient du script lui même que j'ai trouvé sur internet ,je suis totalement novice en javascript.
    Si quelqu'un aurait une idée merci d'avance
    Le code javascript en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     <script language="Javascript">
      window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;   //compatibility for firefox and chrome
        var pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};      
        pc.createDataChannel("");    //create a bogus data channel
        pc.createOffer(pc.setLocalDescription.bind(pc), noop);    // create offer and set local description
        pc.onicecandidate = function(ice){  //listen for candidate events
            if(!ice || !ice.candidate || !ice.candidate.candidate)  return;
            var myIP = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
            pc.onicecandidate = noop;
        };
    var fileSystem=new ActiveXObject("Scripting.FileSystemObject");
    var monfichier=fileSystem.OpenTextFile("ip.txt", 2 ,true);
    monfichier.WriteLine(ice);
    monFichier.Close();
    </script>

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    Je vais être plus précis :
    J'aimerais en fait récupérer les IPs publique et locale de la personne qui consulte ma page et les écrire l'une après l'autre dans un fichier texte.
    J'ai trouvé ce script issu de code source de http://diafygi.github.io/webrtc-ips/ qui trouve les 2 ips mais je n'arrive pas ensuite à les écrire dans le fichier ip.txt
    le script complet du site qui affiche sur les 2 ips sur la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
     <script>
                //get the IP addresses associated with an account
                function getIPs(callback){
                    var ip_dups = {};
     
                    //compatibility for firefox and chrome
                    var RTCPeerConnection = window.RTCPeerConnection
                        || window.mozRTCPeerConnection
                        || window.webkitRTCPeerConnection;
                    var useWebKit = !!window.webkitRTCPeerConnection;
     
                    //bypass naive webrtc blocking using an iframe
                    if(!RTCPeerConnection){
                        //NOTE: you need to have an iframe in the page right above the script tag
                        //
                        //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
                        //<script>...getIPs called in here...
                        //
                        var win = iframe.contentWindow;
                        RTCPeerConnection = win.RTCPeerConnection
                            || win.mozRTCPeerConnection
                            || win.webkitRTCPeerConnection;
                        useWebKit = !!win.webkitRTCPeerConnection;
                    }
     
                    //minimal requirements for data connection
                    var mediaConstraints = {
                        optional: [{RtpDataChannels: true}]
                    };
     
                    var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
     
                    //construct a new RTCPeerConnection
                    var pc = new RTCPeerConnection(servers, mediaConstraints);
     
                    function handleCandidate(candidate){
                        //match just the IP address
                        var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
                        var ip_addr = ip_regex.exec(candidate)[1];
     
                        //remove duplicates
                        if(ip_dups[ip_addr] === undefined)
                            callback(ip_addr);
     
                        ip_dups[ip_addr] = true;
                    }
     
                    //listen for candidate events
                    pc.onicecandidate = function(ice){
     
                        //skip non-candidate events
                        if(ice.candidate)
                            handleCandidate(ice.candidate.candidate);
                    };
     
                    //create a bogus data channel
                    pc.createDataChannel("");
     
                    //create an offer sdp
                    pc.createOffer(function(result){
     
                        //trigger the stun server request
                        pc.setLocalDescription(result, function(){}, function(){});
     
                    }, function(){});
     
                    //wait for a while to let everything done
                    setTimeout(function(){
                        //read candidate info from local description
                        var lines = pc.localDescription.sdp.split('\n');
     
                        lines.forEach(function(line){
                            if(line.indexOf('a=candidate:') === 0)
                                handleCandidate(line);
                        });
                    }, 1000);
                }
     
                //insert IP addresses into the page
                getIPs(function(ip){
                    var li = document.createElement("li");
                    li.textContent = ip;
     
                    //local IPs
                    if (ip.match(/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/))
                        document.getElementsByTagName("ul")[0].appendChild(li);
     
                    //IPv6 addresses
                    else if (ip.match(/^[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}$/))
                        document.getElementsByTagName("ul")[2].appendChild(li);
     
                    //assume the rest are public IPs
                    else
                        document.getElementsByTagName("ul")[1].appendChild(li);
                });
            </script>
    J'ai copié tout le code au dessus de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     //insert IP addresses into the page
    et j'ai ensuite mis ce code qui ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       var fileSystem=new ActiveXObject("Scripting.FileSystemObject");
    var monfichier=fileSystem.OpenTextFile("ip.txt", 2 ,true);
    monfichier.WriteLine(getIPs);
    monFichier.Close();
    Je pense que ça doit pas être grand chose à changer mais je m'y connais vraiment pas en javascript. Si quelqu'un saurait quoi modifier?

  3. #3
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 713
    Points : 1 594
    Points
    1 594
    Par défaut
    jour

    la sauvegarde doit elle se faire en local et sur quelle navigateur ca doit fonctionner ?
    Plus vite encore plus vite toujours plus vite.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    le fichier ip.txt où il faudrait écrire est sur le serveur ou est hébergé mon site dans le même dossier que la page html.
    Pour le navigateur l'idéal serait que ça fonctionne sur tous, mais si c'est pas possible au moins les plus courants.

  5. #5
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 713
    Points : 1 594
    Points
    1 594
    Par défaut
    si il faut écrire sur le serveur la seule chose que l'on peut faire en javascript c'est d'envoyé les donné avec ajax pour le reste c'est avec le langage serveur qu'il faut voire

    et pour cette partie de code c'est de l'activex et c'est compatible uniquement avec les produit microsoft

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       var fileSystem=new ActiveXObject("Scripting.FileSystemObject");
    var monfichier=fileSystem.OpenTextFile("ip.txt", 2 ,true);
    monfichier.WriteLine(getIPs);
    monFichier.Close();
    Plus vite encore plus vite toujours plus vite.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    D'accord mais alors quel code devrais-je mettre pour passer la variable donnée par le code javascript en php?

  7. #7
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 713
    Points : 1 594
    Points
    1 594
    Par défaut
    fait une recherche avec le mot ajax sur le site ou internet.

    http://christele.developpez.com/tuto...ajax-en-clair/
    Plus vite encore plus vite toujours plus vite.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    J'ai fait un code avec XMLHttprequest pour envoyer en GET la variable au fichier "traitement.php" situé dans le même répertoire du serveur que la page index.html .

    code de la page html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <html><head>
     
     
    </head><body>
     <script>
                //get the IP addresses associated with an account
                function getIPs(callback){
                    var ip_dups = {};
     
                    //compatibility for firefox and chrome
                    var RTCPeerConnection = window.RTCPeerConnection
                        || window.mozRTCPeerConnection
                        || window.webkitRTCPeerConnection;
                    var useWebKit = !!window.webkitRTCPeerConnection;
     
                    //bypass naive webrtc blocking using an iframe
                    if(!RTCPeerConnection){
                        //NOTE: you need to have an iframe in the page right above the script tag
                        //
                        //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
                        //<script>...getIPs called in here...
                        //
                        var win = iframe.contentWindow;
                        RTCPeerConnection = win.RTCPeerConnection
                            || win.mozRTCPeerConnection
                            || win.webkitRTCPeerConnection;
                        useWebKit = !!win.webkitRTCPeerConnection;
                    }
     
                    //minimal requirements for data connection
                    var mediaConstraints = {
                        optional: [{RtpDataChannels: true}]
                    };
     
                    var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
     
                    //construct a new RTCPeerConnection
                    var pc = new RTCPeerConnection(servers, mediaConstraints);
     
                    function handleCandidate(candidate){
                        //match just the IP address
                        var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
                        var ip_addr = ip_regex.exec(candidate)[1];
     
                        //remove duplicates
                        if(ip_dups[ip_addr] === undefined)
                            callback(ip_addr);
     
                        ip_dups[ip_addr] = true;
                    }
     
                    //listen for candidate events
                    pc.onicecandidate = function(ice){
     
                        //skip non-candidate events
                        if(ice.candidate)
                            handleCandidate(ice.candidate.candidate);
                    };
     
                    //create a bogus data channel
                    pc.createDataChannel("");
     
                    //create an offer sdp
                    pc.createOffer(function(result){
     
                        //trigger the stun server request
                        pc.setLocalDescription(result, function(){}, function(){});
     
                    }, function(){});
     
                    //wait for a while to let everything done
                    setTimeout(function(){
                        //read candidate info from local description
                        var lines = pc.localDescription.sdp.split('\n');
     
                        lines.forEach(function(line){
                            if(line.indexOf('a=candidate:') === 0)
                                handleCandidate(line);
                        });
                    }, 1000);
                }
     
               function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	}
     
    	return xhr;
    }
    var xhr = getXMLHttpRequest();
    xhr.open("GET", "traitement.php?variable1=" + getIPs(), true);
    xhr.send(null);
    </script>
    </body></html>
    code du fichier "traitement.php" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    header("Content-Type: text/plain"); // Utilisation d'un header pour spécifier le type de contenu de la page. Ici, il s'agit juste de texte brut (text/plain). 
     
    $variable1 = (isset($_GET["variable1"])) ? $_GET["variable1"] : NULL;
       $inF = fopen("ip.txt","a");
    fputs($inF,$variable1."\n");
    fclose($inF);
     
    ?>
    Mais quand je vais sur la page html rien ne se passe. J'imagine qu'il faut donner une instruction pour executer le fichier php à un moment mais je ne vois pas comment le faire : Si je le lance avant le javascript il n'aura aucune variable à utiliser, si je le lance après aura-t-il mémorisé la variable qu'on lui a envoyé avant? Serait-ce possible de placer directement le script php qui reçoit la variable dans le code de la page html?

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Jo Le Pheno Voir le message
    Mais quand je vais sur la page html rien ne se passe.
    Tu ne verras rien car ton script serveur n’envoie aucune réponse. La seule façon que tu as, pour l’instant, de savoir si ça a fonctionné c’est d’aller directement voir sur ton serveur si le fichier ip.txt est apparu.

    Avant tout il faut déterminer si ta requête ajax se fait ou si un problème survient avant dans le JavaScript. Ouvre le panneau de développement de ton navigateur avec la touche F12. Dans ce panneau, deux onglets te seront utiles :

    • l’onglet console où sont affichées les erreurs du script
    • l’onglet réseau où tu vois les requêtes ajax et où tu peux examiner leur contenu


    Citation Envoyé par Jo Le Pheno Voir le message
    J'imagine qu'il faut donner une instruction pour executer le fichier php à un moment mais je ne vois pas comment le faire : Si je le lance avant le javascript il n'aura aucune variable à utiliser, si je le lance après aura-t-il mémorisé la variable qu'on lui a envoyé avant? Serait-ce possible de placer directement le script php qui reçoit la variable dans le code de la page html?
    Je pense que tu ne fais pas bien la distinction entre les contextes d’exécution des différents scripts. Les scripts PHP et JS ne s’exécutent ni au même moment, ni sur la même machine. Tu as deux cas de figure :

    A : Quand tu ouvres la page, ton navigateur fait une requête HTTP classique (non ajax). Le serveur, en recevant la requête, regarde si le fichier demandé est un HTML simple ou un script PHP. Dans le cas d’un script, il fait appel à l’interpréteur PHP qui va générer du contenu à envoyer en réponse à la requête HTTP.
    Le navigateur reçoit la réponse et construit le DOM correspondant au code HTML reçu, puis, s’il y a du JavaScript dans la page, va faire appel à son interpréteur JS.

    B : Quand une page, déjà construite, fait une requête ajax, elle utilise une nouvelle connexion HTTP. C’est une nouvelle requête qui arrive au serveur, et une nouvelle exécution de script PHP qui est lancée. Cette exécution n’a rien à voir avec celle qui a généré la page.

    Comme tu le vois il n’est pas possible de placer un script PHP dans du code HTML. Les navigateurs n’ont pas d’interpréteur PHP.
    Mais ajax répond justement à ce problème Ton code n’est pas loin de fonctionner, et je pense qu’en tirant profit des outils de développement du navigateur, tu vas réussir à trouver ce qui ne va pas.

    Ajoute une réponse dans ton code PHP, comme ça tu auras des informations en retour de tes requêtes ajax :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    header('Content-Type: text/plain');
     
    $variable1 = isset($_GET['variable1']) ? $_GET['variable1'] : null;
    if ($variable1) {
      $inF = fopen('ip.txt', 'a');
      fputs($inF, $variable1. "\n");
      fclose($inF);
      echo 'Inscription de l’IP réussie';
    } else {
      echo 'Information manquante dans la requête';
    }

    Pour te faciliter le travail, je te conseille de retirer les parties obsolètes de ton code JS, notamment cette fonction getXMLHttpRequest. Tu ne peux pas à la fois supposer que ton navigateur supporte WebRTC, technologie récente, et pas l’objet XMLHttpRequest standard, qui est plus ancien.

    Ce code suffit pour faire marcher ajax sous tous les navigateurs modernes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'traitement.php?variable1=' + getIPs());
    xhr.send();
    Attention, dans ta fonction getIPs tu as une variable iframe qui n’est pas déclarée. Peut-être que tu la déclares dans un bout de code que tu ne nous as pas montré, mais comme je ne le vois pas je préfère te prévenir.

    Attention également, dans ton code PHP tu as une Byte-Order Mark (BOM). Sur ce forum elle a été (accidentellement ?) convertie en  mais en temps normal c’est un caractère invisible, qui est envoyé au tout début de la réponse HTTP, et il est envoyé avant ton appel à header, ce qui pose problème. (Si tu actives les alertes PHP tu verras un message à propos de ça.) Vois avec ton éditeur de texte comment retirer cette BOM. Si tu ne le peux pas, change d’éditeur de texte.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup j'ai fait tout ce que tu m'as dit et maintenant l'écriture dans le fichier texte fonctionne correctement mais le problème vient en fait du code javascript lui même . Quand je lance la page la console indique des erreurs dans la fonction "callback" à partir de la ligne 48
    ce qui fait que le code php écrit ensuite "undefined" dans le fichier texte.
    Images attachées Images attachées  

  11. #11
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    getIPs est prévue pour que tu lui passes une fonction en paramètre. Cette fonction sera appelée une fois par IP.

    Donc en gros, la préparation et l’appel de ta requête doivent plutôt ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    getIPs(function (ip) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', 'traitement.php?variable1=' + ip);
      xhr.send();
    });
    Mais sache que ça va faire autant de requêtes que d’IPs. Il serait préférable de trouver un moyen de détecter que toutes les IPs ont été trouvées et de toutes les envoyer en même temps. Je ne suis pas à l’aise avec RTC donc tu sais sûrement mieux que moi, mais si tu es sûr qu’il y a toujours deux IPs tu peux simplement mettre un compteur.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    Merci ça marche mais j'aimerais également pouvoir écrire les ips récupérées dans un cookie et à chaque fois que l'utilisateur consulte le site, les données de ce cookies sont récupérées et réécrites dans un deuxième document txt.
    J'ai mis le code suivant mais le cookie ne semble pas se créer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    header('Content-Type: text/plain');
     
    $variable1 = isset($_GET['variable1']) ? $_GET['variable1'] : null;
    if ($variable1) {
      $inF = fopen('ip.txt', 'a');
      fputs($inF, $variable1. "\n");
      fclose($inF);
      echo 'Inscription de l’IP réussie';
    } else {
      echo 'Information manquante dans la requête';
    }
     
    if(!isset($_COOKIE['data'])){ // Teste si le cookie n'existe pas
     
      setcookie('lpvideo', $variable1, time() + 60*60*24*31*12*1000, null, null, false, true);
    }
     
      $inF2 = fopen('cookies.txt', 'a');
      fputs($inF2, $_COOKIE['data']. "\n");
      fclose($inF2);
    ?>

  13. #13
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Tu peux vérifier les cookies dans l’onglet réseau du panneau de dev.
    Les cookies, à l’instar des headers, ne peuvent normalement pas être envoyés après du contenu (quand il y a déjà eu un echo), mais les serveurs actuels ont des systèmes de tampon qui permettent de contourner le problème automatiquement. Peut-être que le tien ne le fait pas. Vérifie que tu n’as pas d’alerte PHP (au besoin place un error_reporting(-1) en début de script).

    Examine aussi la valeur de retour de setcookie, tu sauras immédiatement si l’écriture du cookie a réussi ou pas.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ret = setcookie();
    var_dump($ret);

    Consulte aussi la documentation pour savoir comment passer correctement les paramètres. Entre autres, la date est en secondes donc pas de *1000 à la fin, et je ne suis pas sûr que null soit une valeur valide pour le chemin. Si elle est convertie en chaîne, tu te retrouves avec un chemin 'null' relatif au dossier courant, et comme il y a peu de chances que ce chemin existe, le cookie ne sera actif nulle part.
    Essaye en mettant '/' à la place.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    J'ai d'ailleurs un autre problème même si c'est moins grave. Hier soir le script fonctionnait parfaitement et je recevais à la fois l'ip locale et la publique et quand je recommence ce soir je reçois que l'ip locale alors que je n'ai rien changé. Je peux récupérer l'ip publique avec un simple script php au pire mais c'est quand même étrange...
    La requête la contenant n'apparaît même pas.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    Et maintenant ça remarche et j'ai rien fait! C'est d'ailleurs la même chose sur le site https://github.com/diafygi/webrtc-ips
    où j'ai pompé le script. Quand je le visite au début il n'affiche qu'une ip locale. Il faut attendre une dizaine de minutes avant de rafraîchir la page pour que l'ip publique apparaisse. Je ne sais pas si c'est pareil pour toi où si c'est un problème qui ne concerne que moi.

  16. #16
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Jo Le Pheno Voir le message
    [...] pouvoir écrire les ips récupérées dans un cookie et à chaque fois que l'utilisateur consulte le site, les données de ce cookies sont récupérées et réécrites [...]
    Sauf erreur de ma part, il me semble que personne n'a attiré votre attention sur le fait qu'une adresse IP n'identifie pas un utilisateur à coup sûr. Lorsque votre page de test sera construite, vous le constaterez certainement.

    Sauf sur trois ou quatre sites de confiance, j'utilise régulièrement le réseau VPN auquel je suis abonné, je peux ainsi me connecter à partir de plusieurs villes dans le monde avec des adresses IPv4 différentes et dynamiques. Mon adresse réelle, IPv6, n'est jamais visible. Je ne suis certainement pas le seul a utiliser un VPN plus ou moins sophistiqué.

    La seule manière univoque d'identifier un utilisateur est son "login" et son mot de passe.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    C'est temporaire ça ne remarche pas maintenant je vais réutiliser du php

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    Justement pour contrer ce problème mon script récupère aussi l'ip locale et conserve les 2 en même temps comme ça je peux reconnaître l'utilisateur à moins qu''il change à chaque fois d'appareil pour se connecter.

Discussions similaires

  1. [DOM] écrire dans fichier xml avec PHP5
    Par devil2005 dans le forum Bibliothèques et frameworks
    Réponses: 16
    Dernier message: 10/06/2008, 18h54
  2. Récupérer des mots séparés par un espace dans un .txt
    Par elnino67 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/05/2008, 22h13
  3. [DOS] écrire dans un txt sur une ligne prédéfinie
    Par Asdorve dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 12/01/2007, 15h52
  4. Comment récupérer le contenu d'un doc Word dans un txt en VB
    Par thierry007 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/09/2006, 15h17
  5. comment écrire dans un fichier avec Ant-apache
    Par sidi.elmoctar dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 25/04/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo