Comment ne pas copier mon code source sur d'autres serveurs et leur fournir un JS ou une iframe comme l'analyse et STANDCOUNTER nous fournir?
J'ai écrit un script PHP avec JS que dans sa description de base: Lorsque quelqu'un visite mon site Web, obtient un cookie avec une valeur d'une pièce d'identité unique et utilise en même temps Ajax, je fais des chèques et je sauve la même valeur à MySQL en conséquence. Après cela, s'il revient à nouveau mon site, un cookie n'est plus créé à nouveau. P>
Le cookie La valeur est créée avec JS et je veux le garder de cette façon pour des améliorations futures. p> mon code ( Je souhaite utiliser ce script dans mes domaines supplémentaires et certains d'entre eux sont dans différents serveurs. mais strong> Je ne veux pas mettre tous mes fichiers source là-bas de comptes. P> L'idéal pour moi est de leur fournir un code JS, comme l'analyse Google Analytics ou STANDCounter US (ou alternative façons similaires), une iframe ... solutions comme celles-ci. P> Lorsqu'un visiteur entre dans leur page, mon MySQL dans un serveur distant (mon serveur) sera mis à jour et un cookie sera créé sur leur site. Transférer des données de et à. P> est-ce que quelque chose est possible d'être fait? Si oui, comment puis-je commencer à étudier pour cela? Pouvez-vous me fournir quelques directives? P> merci. P> Il s'agit d'un bloc de code, la fonction AJAX qui publie le nombre aléatoire sur le index.php code>, add-to-mysql.php code>) a JS et PHP. P> add- to-mysql.php code> fichier où je fais des actions em> p>
3 Réponses :
Il me semble que vous avez trois options ici.
JSONP vous permet de faire des appels AJAX de Domaine Ajax afin que vous puissiez simplement appeler votre serveur de maison à partir de vos autres domaines sans être obstruée.
C'est probablement la voie la plus facile à aller je pense. P> Voir ici pour une nouvelle écriture sur la façon dont Jsonp fonctionne: En bref, les en-têtes que vous devrez définir à partir de la page Serving HTML sont les suivants: P>
https://stackoverflow.com/a/2067584/867294 p> $('#my_iframe')[0].contentWindow.postMessage('hash', 'my-server.com');
Qu'en est-il d'IE <8? Comme il le semble, JSONP n'est pas compatible avec IE <8 Stackoverflow.com/a/614006/1437261
Si l'OP a besoin, c'est-à-dire <8 SUPPORT, je pense qu'il est préférable qu'il déclare explicitement dans sa question
@ Willemd'Haeseer merci pour cette réponse. S'il vous plaît dites-moi de manière pratique (s'il vous plaît, si votre réponse est longue, mettez-vous à jour votre réponse), quelles modifications doivent être apportées à mes fichiers (index, add-à-mysql) et que dois-je leur fournir cela?
@Fataoulas j'ai ajouté des informations supplémentaires pour la méthode JSONP
Il convient de mentionner que l'OP peut également utiliser window.postMessage code> et une iframe bien que j'avoue que c'est une alternative pire.
@ Willemd'Haeseer merci pour les mises à jour. Je pense avoir besoin d'une dernière modification. Comment puis-je utiliser la méthode iframe mais sans l'utilisation de la forme? Sur la charge, l'iframe fait ce que je dois faire.
@Fataoulas a ajouté un exemple à ma réponse sur la façon de faire ça
Vous n'avez pas besoin d'une forme cachée si vous utilisez un iframe. Vous pouvez toujours utiliser Ajax. C'est une approche plus propre car votre solution peut être pure JavaScript et vous pouvez séparer plus facilement les données de la logique qui envoie les données à votre serveur.
@rulio, pas sûr de ce que vous voulez dire, comment allez-vous combiner un iframe avec Ajax?
@ Willem-dhaeseler je pense que j'ai mal compris votre suggestion. Je pensais que vous vouliez dire incluez le code principal JS Analytics dans l'IFrame, puis communiquez avec l'IFrame avec PostMessage. Mais il semble que vous dites d'envoyer des postes de formulaire de la page d'accueil à l'IFrame. Je pense que vous rencontrerez des problèmes là-bas. Comme s'appuyer sur JQuery étant installée sur le site tiers. L'un des grands avantages de l'approche iframe est qu'il atténue le risque de conflits entre le code incorporé et le code natif. C'est ce que je pensais que vous pensiez que vous vouliez dire: déplacer la plupart des JS sur l'iframe.
Vous n'avez pas besoin de jQuery pour soumettre le formulaire, c'était juste un exemple.
@Fataoulas, avez-vous réussi à résoudre votre problème? Avez-vous besoin d'une aide supplémentaire?
Afin d'éviter la problématique du domaine croisé, vous pouvez inclure une iframe sur les autres sites, qui se charge de votre site. Il crée sa propre portée (domaine) et vous pouvez utiliser librement Ajax à partir de l'intérieur de la communication avec votre site. Toutefois, si vous définissez des cookies là-bas, il sera associé au domaine source iFrames (votre domaine). Cela pourrait ou pourrait ne pas être un problème. Remarque, que cela peut être utilisé pour identifier les utilisateurs sur tous les autres domaines, y compris ce même iframe (de votre domaine). P>
Je ne pense pas que cela fonctionne dans mon cas puisque je veux créer un cookie sur la page et non sur la mienne ...
Google Analytics Fournissez un script qui ne post pas de données, il charge un script asynchrone (il est très important d'éviter de jouer avec des heures de chargement du site Web d'origine), puis il envoie toutes leurs informations demandant une image .gif . Votre code doit faire une demande à une URL se terminant par .gif, avec toutes les données dans le formulaire d'obtenir. Faites votre magie et retournez un gif de taille 1px * 1px et sans contenu.
Demandez simplement quelque chose comme ceci P> mettre toutes vos données là-bas
Je recommande de l'empêcher un peu, mais cela devrait vous aider à éviter les cors, les iframes ou JSOP P> //You won't have jquery, but you get the idea
//Create a tag
var i = $('<img>').prop('src', 'yourdomain.com/a.gif?domain' + window.location.origin).css('display', 'none');
$('body').append(i);
C'est l'instère. Pouvez-vous élargir votre réponse avec des exemples de code pratiques?
Les demandes AJAX ne sont possibles que si le port, le protocole et le domaine de l'expéditeur et du récepteur sont égaux. Vous pouvez contourner cela avec Cors [ EN.Wikipedia.org/wiki/Cross-origin_resource_shaing], Jsonp [ en.wikipedia.org/wiki/jsonp ] ou un iframe.