2010-01-12 6 views
0

J'ai essayé d'essayer d'utiliser la fonction de partage de facebook dans mon site Web mais je ne peux pas sembler avoir le bon résultat.Comment passer une partie de l'URL dans un nouveau lien? En utilisant seulement HTML et PHP

Dis:
i ont une page appelée http://www.example.com/product.php?prod=lpd026n&cat=43 et je suis en utilisant la fonction de partage de facebook pour avoir des visiteurs de partager la page dans le mur FB.

i essayé d'écrire le lien de cette façon, mais je ne semble pas être couronnée de succès:

href="http://www.facebook.com/share.php?u=www.example.com/proddetail.php?<?php print urlencode(@$_SERVER['QUERY_STRING']!=''?'?'.$_SERVER['QUERY_STRING']:'')?>" 

à la suite des arguments dans l'URL sont sortis pour être en% 26,% 3D et etc. .
Ie: '?' example.com/proddetail.php?prod%3Dlpd026n%26cat%3D43

comme certains d'entre vous savent que les données après est dynamique et je prévois d'utiliser le code ci-dessus dans le cadre de la page, de sorte qu'il aura une requête différente transmise au lien de partage dans chaque nouvel élément.

Le résultat final que je veux suis arrivé à ressembler à ceci:

http://www.facebook.com/sharer.php?u=http://www.example.com/proddetail.php?prod=lpd026n&cat=43 

Non

http://www.facebook.com/share.php?u=http://www.example.com/proddetail.php?prod%3Dlpd026n%26cat%3D43 

quelqu'un peut me aider à résoudre ce problème?
Merci d'avance!
Ps: si vous n'êtes pas clair, s'il vous plaît demandez-moi de clarifier davantage.

+1

L'URL que vous obtenez est la bonne. (J'utilise le même code pour partager des liens sur Facebook.) Je ne comprends pas ce que vous entendez par "les données après"? est dynamique ". Cela n'a pas d'importance, vous devez utiliser urlencode comme vous le faites. –

+0

je veux dire les arguments après .php? est la date extraite de la base de données. J'ai besoin d'avoir le lien (href = "") à automatiser non préfixé afin qu'il fonctionne pour tous les arguments qui passent au lien. ainsi, plaçant le même argument le même argument sur la barre d'URL dans le nouveau lien .. (je fais ceci parce que ma connaissance de php est peu profonde, et je n'ai aucune idée comment il est obtenu de la base de données ..) –

Répondre

0

C'est ce que fait urlencode, quel est le problème avec le lien de cette façon?

Edit: Je ne pas utiliser PHP, mais je pense que ce qui suit fera l'affaire (omis le urlencode):

href="http://www.facebook.com/share.php?u=www.example.com/proddetail.php?<?php print $_SERVER['QUERY_STRING']?>" 
+0

vient d'éditer mon post. J'ai besoin de passer ma requête dans un nouveau lien sans avoir les arguments modifiés en% 20 ou autre chose. –

+0

Avez-vous essayé d'omettre la fonction urlencode()? – Kaivosukeltaja

+0

vous voulez dire laisser le() vide? –

3

Cette URL:

http://www.facebook.com/share.php?u=http://www.example.com/proddetail.php?prod%3Dlpd026n%26cat%3D43 

est seulement partiellement encodées. Vous devez en fait encoder complètement l'URL avant de passer au FB, afin de ne pas interférer avec la structure de l'URL de FB. Je suis sûr que leur script saura comment l'analyser correctement.

La méthode correcte est:

$url = 'http://www.facebook.com/sharer.php?u='.urlencode('http://www.example.com/proddetail.php?prod=lpd026n&cat=43'); 

// evaluates to: 
// http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.example.com%2Fproddetail.php%3Fprod%3Dlpd026n%26cat%3D43 

Mise à jour: construire votre requête dynamique

// Original URL 
$url = 'http://www.example.com/proddetail.php'; 
if ($_SERVER['QUERY_STRING']) 
    $url .= '?'.$_SERVER['QUERY_STRING']; 

// Final URL for FB 
$fb_url = 'http://www.facebook.com/share.php?u='.urlencode($url); 
+0

Salut K prime, merci d'avoir répondu mais le problème est que '? Prod = lpd026n & cat = 43' est dynamique. je ne peux pas me permettre d'encoder tous les produits pour les liens de partage .. comme mon plan était de l'écrire une fois et utiliser sur tous les produits, donc je veux utiliser php pour lire la requête et passer le lien le partageur .. –

+0

est-il possible de le faire? –

+0

@FB_noob - Bien sûr, il suffit de passer la chaîne finale (construite à partir de 'QUERY_STRING') à' urlencode'. Voir mon post édité ci-dessus –

Questions connexes