0

我有一些将发布到用户墙上的代码,但是,在页面加载时它会发布的那一刻,我需要它仅在提交“发布到我的墙”按钮时发布。

这是我的代码:

<div align="center">
<form method="GET" action="translate.php">
<textarea name="status2" cols="50" rows="5"<input type="text"/>
<?php echo str_ireplace(array     ('old','awkward','all','again','behind','along','alright','hello','among','children','yes','child','kids','food','barnard castle','beer','book','blow','beautiful','bird','burst','brown','burn','boots'), 
array ('auld', 'aakwad', 'aall','agyen','ahint','alang','alreet','alreet','amang','bairns','aye','bairn','bairns','bait','barney','beor','beuk','blaa','bonny','bord','borst','broon','bourn','byeuts'),$status); ?> 

</textarea><br>

<input type="submit" value="post to wall"
// i did try my wall code here but it still posted on page load
 />
</form>

</div>

<?php

$args = array(
    'message'   => 'Hello World',
    'link'      => 'http://apps.facebook.com/geordie-status/',
    'caption'   => 'Translate from English to Geordie'
    );
$post_id = $facebook->api("/$uid/feed", "post", $args);

?>
4

3 回答 3

1

name属性添加到您的input标签。并isset用于检查用户是否按下了提交按钮。

        <input type="submit" value="post to wall" name="submit"
        // i did try my wall code here but it still posted on page load
         />
        </form>

</div>

    <?php    
        if (isset($_POST['submit'])){
        $args = array(
            'message'   => 'Hello World',
            'link'      => 'http://apps.facebook.com/geordie-status/',
            'caption'   => 'Translate from English to Geordie'
            );
        $post_id = $facebook->api("/$uid/feed", "post", $args);
        }
        ?>
于 2013-05-09T21:02:11.300 回答
0

您应该将发布的代码放在 translate.php 内的墙上,因为那是表单操作中列出的页面。当表单被提交时,值将作为参数传递给 translate.php 然后你可以使用 $_GET 来获取它们并执行写入墙上的代码。

于 2013-05-09T20:07:27.173 回答
0

我认为您的问题是每次重新加载页面时您的浏览器都会重新发送数据。

有2种方法:

  • 将用户重定向到同一页面,因此发送的数据将被清除 ( header("Location: asd"))

  • 在会话中存储一些哈希,进行隐藏输入并检查哈希是否正确。正确提交表单后更改哈希。

于 2013-05-09T20:08:43.213 回答