2014-05-13 3 views
0

Je suis venu avec la solution suivante:Wordpress - Page Redirects basé sur IP de l'utilisateur

CREATE TABLE logger ( id int (11) AUTO_INCREMENT NOT NULL, ip int (11) NOT NULL, landing varchar (16) NULL DEFAULT, updated timestamp NOT NULL current_timestamp DEFAULT ON UPDATE CURRENT_TIMESTAMP, clé primaire (id) ) MOTEUR = DEFAULT InnoDB charset = latin1

Voir si l'entrée existe select id, landing from logger où ip = INET_ATON ('10 .0.5.9 ') et mis à jour> date_add (CURRENT_TIMESTAMP, intervalle -2 DAY) order by id desc limite 1;

S'il existe une mise à jour. Ceci met automatiquement à jour le champ mis à jour update logger set landing = 'landing' où id = 1;

S'il n'existe pas, ajouter l'entrée insérer dans la valeur logger (ip, landing) (INET_ATON ('10 .0.5.9 '),'/');

Quelqu'un pourrait-il m'aider avec les bits php à ajouter dans mes en-têtes comme j'ai réussi à trier les bits MySQL maintenant.

Merci d'avance les gars!

+0

La réponse est probablement des sessions/cookies. C'est simple, avec des fonctions PHP intégrées. Mais que se passe-t-il s'ils visitent l'url sur la carte de visite, puis voient la publicité TV et suivent cette URL? Quelle page d'accueil voient-ils? – Steve

+0

Il est très facile de collecter l'IP et déposer un cookie mais si vous savez déjà d'où vient l'utilisateur, alors pourquoi ne pas passer le soucce dans l'url comme un paramètre et ensuite déposer un cookie basé sur la source? Les IP ne sont plus fiables –

+0

Avez-vous déjà essayé quelque chose? [Cookies] (http://www.php.net/manual/fr/features.cookies.php) sont faciles à configurer, et vous pouvez les définir lors de la première visite, et les lire lors de la deuxième visite etc. (En utilisant une instruction 'if' ou quelque chose de similaire). En utilisant la variable globale '$ _SERVER ['REMOTE_ADDR']' vous pouvez obtenir l'adresse IP d'un utilisateur. Je ne suggérerais pas d'utiliser des IP pour cela, car ils peuvent facilement être changés ou partagés. Peut-être lire comment l'utilisateur est sur la page, puis définir un cookie basé sur cela? – BananaMan

Répondre

2

Une bonne solution serait d'utiliser une URL spéciale que vous lier à des campagnes e-mail, où l'adresse « réelle » est ajoutée comme paramètre de requête:

Exemple qui rediriger vers http://example.com/foo http://example.com/campaign.php?forward_to=http%3A%2F%2Fexample.com%2Ffoo&campaign=bar

Dans ce script, vous définissez un cookie et transmettre à l'adresse réelle

<?php 
    setcookie('campaign', $_GET['campaign']); 
    header('Location: ' + $_GET['forward_to']); 
?> 

Notez que ce script doit être sur le même domaine. Vous pouvez également le faire sans redirection en configurant simplement un hook dans functions.php et en recherchant un paramètre de requête de requête campaign et en servant différentes feuilles de style en fonction de cela. Exemple:

(cela suppose que vous avez la campagne stylesheets spécifiques situés dans mytheme/styles/ nommé campaign-1.css, campaign-2.css)

// in /functions.php 

/** 
* Sets cookie if 'campaign' var is passed in url 
*/ 
function get_campaign_code($query_vars) { 
    if (isset($query_vars['campaign'])) { 
     setcookie('campaign_code', $query_vars['campaign']); 
    } 
} 

add_filter('query_vars', 'get_campaign_code'); 

/** 
* Enqueue a campaign specific stylesheet if $_COOKIE['campaign_code'] is available 
*/ 
function enqueue_campaign_stylesheet() { 

    $cid = $_COOKIE['campaign_code']; 

    if ($_COOKIE['campaign_code']) { 
     // creates uri to campaign specific 
     $src = sprintf('%s/styles/campaign-%d.css', 
        get_template_directory_uri(), 
        $cid 
        ); 
     wp_enqueue_style('campaign_css', $src); 
    } 
} 

add_action('after_setup_theme', 'function_name'); 
+0

Cela semble être le chemin à parcourir. Seriez-vous capable de l'exposer en termes factices si - désolé. Merci de votre aide. – dmt

+0

Soyez prudent avec cela. "example.com/campaign.php?forward_to=http%3A%2F%2FMY-EVIL-SITE.com" Un attaquant peut créer une URL pour lancer une attaque de phishing. Consultez cette URL pour obtenir plus d'informations https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet – jspurim

+0

@jspurim très bon point. J'essayais juste de démontrer le concept général. En production, vous devez utiliser une liste blanche de valeurs acceptables. – max

1

Vous ne devriez pas utiliser l'adresse IP pour identifier un utilisateur, l'utilisation des sessions au lieu (qui est, utilisez le cookie) De cette façon, l'utilisateur verra la même page qu'il a vue la première fois tant qu'il conserve le cookie. Gardez présent que cela n'interdit pas l'accès aux autres URLs. Si vous ne voulez pas restreindre l'accès, c'est plus difficile. Vous pouvez ajouter un code aléatoire différent dans chacune de vos cartes de visite et le demander dans la page. Idem pour l'email. La page TV est par définition publique je suppose que vous ne voulez pas en restreindre l'accès.

+0

Est-ce que cela va juste dans la fete header.php de mon thème, avec la bonne page et les urls inclus dans le code? – dmt

+0

La réponse est une sorte de pseudo-code. Je ne sais pas comment vous identifiez la page la première fois. Si vous utilisez des URL séparées, le triple si pourrait être divisé entre trois fichiers (gardez le if (! Isset ($ _ SESSION ['page') dans tous les!) La redirection devrait être sur votre en-tête, mais gardez à l'esprit si le la page n'est pas définie, vous devriez définir une valeur par défaut – jspurim

+0

Je pense que je suis en train d'envelopper ma tête maintenant - merci – dmt

Questions connexes