Jump to content

variavel em meta tag para o facebook


vikcch
 Share

Recommended Posts

Olá a todos,

Tenho uma iFrame com uma imagem para partilhar no facebook dentro da pagina, isto porque não sei quais vão ser os valores para inserir na meta tag quando carrego a pagina principal.. só crio a iFrame quando já sei os valores para inserir na meta tag do iFrame..

Trabalha bem quando meto os valores directos na meta tag (dentro da iFrame), mas quando tento passa-los pelo $_GET não aceita os valores..

ex: funcional (pagina do iFrame)

<!DOCTYPE html>
<html lang="en">
   <head>
    <meta charset="utf-8"/>
    <title>titulo</title>    
    <?php	   
    echo '<meta property="og:image" content="minha imagem" />';
    echo "<meta property='og:title' content='meu titulo' />";
    echo "<meta property='og:descripton' content='minha descricao' />";
    echo '<meta property="og:description" content="website"/>';
    ?>
   </head>
   <body>
       <?php
        // insere imagem com link
       ?>
   </body>
</html>

agora se fizer:

$descricao = $_GET['descricao'];

echo "<meta property='og:descripton' content='$descricao' />";

ou

<meta property='og:descripton' content='<?php $descricao; ?>' />

não funciona...

tambem tentei gravar na base de dados a descrição (com toda a linha da meta tag) e funciona mas apenas quando faço um SELECT com um ID em "hard code" se for buscar o id ao $_GET já nao funciona (tá a passar bem o $_GET['id'] que se fizer echo ele aparece)

Já perdi umas poucas horas devolta disto e não consigo fazer funcionar... secalhar não é possivel...

Alguem pode ajudar ?

Obrigada desde já!

Link to comment
Share on other sites

Antes de mais, precisas de fazer escape da variavel antes de a colocares no codigo HTML.

http://php.net/manual/en/function.htmlspecialchars.php

Nao sei o que queres dizer como "nao funciona" ou "nao aceita". Da' algum erro? Faz output do valor errado (se algum)? Da' erro PHP? Nestas situacoes e' importante ser o mais concreto e especifico possivel.

Como e' que estas a passar os valores? Podes mostrar o codigo do <a> que estas a usar para o efeito? Qual e' o URL relativo (sem o dominio) onde essa pagina e' executada. (Verifica-o para possiveis erros).

Link to comment
Share on other sites

Obrigado por postares!!

se eu usar essa funcao htmlspecialchars aparece escrito no iFrame a meta tag... (não é isso que quero)

não dá erro nenhum.. é para o facebook tenho não posso testar em localhost... simplesmente ignora a linha..

<?php
echo '<meta property="og:image" content="minha imagem" />';
echo "<meta property='og:title' content='meu titulo' />";

$descricao = $_GET['descricao'];
echo $descricao // não uso esta linha mas se usar escreve o valor que quero

// maneiras testadas
echo "<meta property='og:descripton' content='$descricao' />"; // ignora a linha
echo "<meta property='og:descripton' content=$descricao />"; // ignora a linha
echo '<meta property="og:descripton" content=" ' . $descricao . ' " />"; // ignora a linha

echo '<meta property="og:description" content="website"/>';
?>

se eu fizer:

$content = 'content="minha descricao" ';

echo '<meta property="og:descripton" ' . $content . ' />"; // funciona

mas se eu fizer:

$content = 'content=" '. $descricao ,' " ';

ou

$content = "content='$descricao' ";

ou

$content = "content=$descricao";

echo '<meta property="og:descripton" ' . $content . ' />"; // nao funciona

o problema nao na tag <a> mas é este o code..

if (isset($_GET['fbShareId'])) :
$fbShareId = $_GET['fbShareId'];
echo '<a id="shareOnFB" href="https://www.facebook.com/sharer/sharer.php?u=www.meusite.com/fb-share1.php?id=' . $fbShareId . '" target="_blank"><img src="php/images/fbShare.png" alt="" style="border:0"/></a>';
endif;

como falei até tentei ir buscar a linha completa da meta tag à base de base e apenhas funciona se no select eu colocar o id escrito directamente, o crawler do facebook ou lá o que é, deve conseguir ler que o valor da meta tag é de algum modo "variavel" e ignora a linha...

Edited by vikcch
Link to comment
Share on other sites

A descrição assim como o fbShareId são passados na altura que crio a iFrame (na pagina principal)....

Já consegui arranjar maneira de resolver o problema, mas não da melhor/correcta maneira... (até pode dar problemas)

Usar a base de dados para guardar a descrição também era uma opção valida, mas como disse, só consigo aceder ao registo que tem a descrição se no SELECT inserir directamente o id (fbShareId), dava a entender que a fbShareId estava a ser mal passada, não apresenta nenhum erro, até escrevi mal o nome e aí já da erro..

Entra no IF mas não entra no WHILE: (codigo não testado, já apaguei o tinha feito)

<?php

if (isset($_GET['fbShareId'])) :
   $fbShareId = $_GET['fbShareId'];

   // conectar a db

   $query = "SELECT descricao FROM tabela WHERE id=$fbShareId LIMIT 1";
   $result = mysql_query($query);							   

   while ($row = mysql_fetch_assoc($result)) {
	    $desc = $row['descricao'];
	    echo "<meta property='og:description' content='$desc' />";
   }

endif;

?>

e se nesta linha:

$fbShareId = $_GET['fbShareId'];

eu substituir o $_GET['fbShareId'] por 50 já tudo funciona..

É isso que não entendo qual o problema...

Obrigado na mesma, e se alguém souber a solução correcta para isto agradecia a ajuda...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.