Facebook喜欢按钮忽略URL参数

时间:2013-04-17 12:23:03

标签: php javascript html

我正在尝试浏览我的网页,但忽略了网址参数

这是我的代码:

<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=======-->

2 个答案:

答案 0 :(得分: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中,发送到资源的参数从?字符开始。但是你有两个?个字符。参数是从第一个还是第二个开始的?解析器无法知道。遇到&时,是分隔外部URL(第一个?)的参数,还是用内部URL(第二个?)包围的参数?解析器无法知道。

格式必须如下:

http://someresource?parameter1&parameter2&etc

如果其中一个参数也是带有拥有参数的URL,则整个参数需要进行URL编码,这样就不会混淆其所使用的其余URL。一个参数。任何解析器都必须能够清楚地识别内部URL的内容以及外部URL的内容。当需要使用它时,它会为你内部解码。

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

(另外,为什么你有这些分号呢?你没有用分号分隔URL参数。我不知道你在哪里有这个想法。)

答案 1 :(得分:0)

转到this page,然后查看下图所示的“赞”按钮的链接:

enter image description here

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

enter image description here

您看到它是urlencode'd。大卫很好地解释了推理的原因:)