【问题标题】:Facebook like button ignore URL parametersFacebook like 按钮忽略 URL 参数
【发布时间】:2013-04-17 12:23:02
【问题描述】:

我想点赞我的页面,但 url 参数被忽略了

这是我的代码:

<style type="text/css">
.float-all {
    float: left;
    width: 82px;
    height: 30px;
    overflow: hidden;
    margin: 2px;
    padding: 4px 2px;
}
.post-btn-share {
    width: 100%;
    overflow: auto;
}

    <link rel="canonical" href="http://mypage.com/view_photo.php" />
    </head>
 <div class="post-btn-share">
<div class="addthis_toolbox addthis_default_style">
    <div class="float-all">
 <iframe src="http://www.facebook.com/plugins/like.php?href=http://mypage.com/view_photo.php?       img=32&user=1&xx=&send=true&layout=standard&width=300&show_faces=true&action=like&colorscheme=light&font&height=80" frameborder="0" style="border:none;" scrolling="no" width="320" height="240"></iframe>
    <div class="float-all">

    </div>
    <div class="float-all">

    </div>
</div>

和view_photo代码

<?php 
    session_start();

?>

<div class="dev-ajuste">
<?php 

    require_once('script/require_raiz.php');
    $login = new login();
    $login->log_isset();
    //$login->info_user();
    $janela = new Janelas('script/system/config.ini','perfil');
    $janela->info_visualiza_foto($_GET['img'],$_GET['user']);
?>
</div>
 <!--=======Cabeçalho e chamadas de scripts do documento=======-->
<?php include_once("head.php"); ?>
 <!--=======Barra de navegação=======-->
<?php include_once("navbar.php"); ?>
<div id="janela" class="perfil"></div>
<div id="info"   class="<?php echo $_GET['user'];?>"></div>

 <!--=======Header=======-->
<?php include_once('box_foto.php'); ?>

    <!--=======Propaganda=======-->
    <?php include('addsense.php');?>

    <!--=======Área dos posts=======-->
     <?php include('post_area.php');?>

 <!--=======Rodapé do documento=======-->
<?php include_once("footer.php"); ?>
 <!--=======Seguranca de Login=======-->

【问题讨论】:

  • 我认为您需要对参数进行urlencode。
  • 看起来您可能想要对其中的一些内容进行 URL 编码。我怀疑任何合理的解析器都会理解它。
  • 每次出现&amp;amp; 都必须是&amp;
  • @illDev:您的编辑没有对任何内容进行 URL 编码。鉴于该 iframe 中的 URL,任何解析器都不可能知道如何应用这些参数。它们适用于外部 URL 还是内部 URL?没有办法知道。您需要对作为参数传递给主要资源的任何内容进行 URL 编码,以便它可以解析这些参数。

标签: php javascript html


【解决方案1】:

(将评论链变成潜在答案)

我真的不认为你已经理解了。查看 iframe 中使用的 URL:

http://www.facebook.com/plugins/like.php?href=http://mysite.com/view_photo.php?img=34&user=1&xx=&;send=true&;layout=standard&;width=300&;show_faces=true&;action=like&;colorscheme=light&;font&;height=80

在 URL 中,发送到资源的参数从 ? 字符开始。但是你有两个? 字符。参数是从第一个还是第二个开始?解析器无法知道。当遇到&amp; 时,是分隔外部URL 的参数(第一个?),还是用内部URL 括起来(第二个?)?解析器无法知道。

格式需要是这样的:

http://someresource?parameter1&parameter2&etc

如果其中一个参数也是一个带有其自己的参数的 URL,那么整个参数需要进行 URL 编码,这样它就不会混淆它被用作的 URL 的其余部分一个参数。任何解析器都必须能够清楚地识别内部 URL 的内容和外部 URL 的内容。它会在需要使用时为您对内部进行 URL 解码。

PHP 提供了a function 来执行此操作。 So does JavaScript。你可以使用任何你想要的。您所要做的就是将要编码的字符串传递给它(这将是您的内部 URL,其中包含需要转到该 URL 的任何参数),它将返回编码的字符串(这将是发送到您的外部 URL 的参数)。

(另外,为什么你有所有这些分号?你没有用分号分隔 URL 参数。我不确定你从哪里得到这个想法。)

【讨论】:

  • 我确实从官方 facebook 页面复制并且有分号。但就我而言,我如何编码网址?看看我的 view_photo..我需要在那里做什么?
  • 而我只有一个 你在哪里看到的 2?第一个是来自 facebook 的 sintaxe .... 看felipems.com.br/blog/?p=88
  • @illDev:这不是 Facebook 的语法。这是某人博客中的语法。而且有人是不正确的。看看你的网址。在like.php 之后有一个?,在view_photo.php 之后还有另一个?两个。并且不应该有分号。 Facebook 没有,你给我看的博客也没有。我不知道你从哪里得到它们,但它们不应该在那里。
  • @illDev:您可以在 PHP 代码或 JavaScript 代码中执行 URL 编码。 (或者如果 URL 不是动态的,则手动操作。)您只需要以编码 URL 结束。你在哪里做这完全取决于你,而不是真正由问题中的代码决定。你可以在这里看到一些例子:stackoverflow.com/questions/2540944/…
  • 我确实在 facebook 调试中测试了我的编码 URL,结果是输入了重定向路径 URL:http%3A%2F%2mypage.xom%2Fvisualizar_foto.php%3Fimg%3D55%26user%3D2%26xx% 3D原创:mypage.com/visualizar_foto.php?img=55&user=2&xx302:mypage.com/02-facelogin.php
【解决方案2】:

前往this page查看如下图所示的点赞按钮链接:

您右键单击并检查它。你看:

你看到它是urlencode'd。大卫很好地解释了这个推理:)

【讨论】:

  • 在哪里?请复制点赞按钮的链接
  • 对吗? var url = urlencode('mypage/visualizar_foto.php?img=55&user=2&xx=');警报(网址);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 2013-02-05
相关资源
最近更新 更多