2017-07-20 1 views
2

Je travaille actuellement sur un nouveau système de liens pour mes sites affiliés. Cependant, je suis encore relativement inexpérimenté dans le domaine PHP, même si je l'ai toujours géré. Les liens d'affiliation ont une structure différente et je voudrais créer une URL au moyen de PHP, avec laquelle ceux-ci sont automatiquement fournis avec la structure. Je ne peux pas le décrire très bien, mais je l'essaie toujours avec un exemple:Redirection basée sur Domaine à l'URL-Variable

L'utilisateur X entre l'URL "example.net/ref.php?url=NORMAL_URL" et en fonction du domaine dans le "NORMAL_URL" un la structure est appliquée. Par exemple, un "? Aff = XYZ" est ajouté à l'URL "example.net/ref.php?url= http://example.de/". Si l'URL "example.net/ref.php?url= http://example.nl/" est dirigée vers "affiliate_network.de/encoded_url=http%3A%2F%2Fexample.nl%2F j'espère que vous l'avez au moins un très petit peu compris. Merci pour toute aide!

For a better understanding:

+1

Donc, pour me permettre de mieux comprendre comment ce travail peut vous confirmer si cet exemple suit ce que vous essayez. Vous voulez 'example.net/ref.php? Aff = XYZ & url = httl: // example.de /' pour ensuite rediriger vers une URL associée à l'affilié XYZ. Si XYZ signifie que vous voulez rediriger vers 'affiliate_network.de' à partir de' example.net' avec le 'encoded_url' provenant de la partie' url' de 'example.net'? Et pour chaque '? Aff = ' combo 'affiliate_network.de' changerait pour le site Web d'affiliation. Est-ce exact? – Mic1780

+0

Pas tout à fait, une fois j'ai essayé de faire un graphique quelque chose de compréhensible: http://prntscr.com/fy6yf5 – techk

Répondre

0

Envoyer l'URL dans cette fonction, il utilise preg_match avec une expression régulière de here pour extraire la partie de domaine.
$matches sera un tableau avec le domaine dans l'élément 1 de sorte que vous peut le trouver avec $matches[1]
Cette fonction vérifie si le tableau est vide (aucun domaine n'est trouvé) et renverra null dans ce cas en utilise un commutateur pour comparer le domaine correspondant à une liste de domaines que vous pouvez spécifier, si aucun des domaines listés ne correspond, alors il renverra zéro

Dans chaque cas, j'ai simplement mis une valeur de retour, mais vous pouvez être créatif et faites tout ce que vous souhaitez pour créer l'URL de la manière dont votre application l'exige.

Je suggère plutôt que de mettre la redirection à l'intérieur de cette fonction, ce qui serait sémantiquement déroutant lorsque vous viendrez pour maintenir votre application plus tard. Vous devriez vérifier la valeur de retour de la fonction, et si ce n'est pas null rediriger vers la valeur de retour. Si elle est nulle, alors vous pouvez faire quelque chose d'autre (erreur d'affichage par exemple)

function getReturnFromURL($url) { 
    $matches = null; 
    preg_match("/^(?:https?:\/\/)?(?:[^@\n][email protected])?(?:www\.)?([^:\/\n]+)/im", $url, $matches); 
    if (empty($matches)) return null; 
    switch ($matches[1]) { 
     case "ebay.de": 
      return "ebay-network.de/XXX?encoded_url=the_encoded_?-{$matches[1]}"; 
      break; 
     case "amazon.de": 
      return "amazon.de/XXX?encoded_url=the_encoded_?-{$matches[1]}?tag=XYZ"; 
      break; 
     default: 
      return null; 
    } 
} 
+0

Merci beaucoup! Cependant, je ne comprends pas ce que je modifie en ligne deux et quatre. Merci pour toute aide! – techk

+0

Ce que vous devez changer dépendra exactement de ce que vous voulez faire. J'ai écrit une réponse assez générique qui vous servirait de base, mais je ne pourrais pas l'adapter plus précisément parce que je ne suis pas tout à fait clair quelles sont vos exigences –

+0

Bonjour, Le code vérifie si la variable est exactement "amazon.de "dans cet exemple. La variable ne doit contenir que "amazon.de". Avant et après, le reste du lien est, si c'est le cas avec ce code, le défaut est déclenché. Je suis impatient d'avoir de vos nouvelles! – techk