只有在按下提交按钮时才能执行操作

时间:2013-05-09 20:04:47

标签: php html facebook facebook-php-sdk facebook-apps

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

这是我的代码:

<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);

?>

3 个答案:

答案 0 :(得分: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);
        }
        ?>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

有两种方法:

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

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