如何在wordpress插件的设置页面中处理表单?

时间:2012-12-07 20:19:19

标签: php javascript html wordpress content-management-system

我想创建自己的插件,但我不知道如何处理表单。

例如,我有来自twitter-stream插件设置页面的代码:

<form action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" method="post">
    <label for="consumerkey" style="font-weight:bold;display:block;width:150px;">Consumer Key:</label> <input type="text" value="" id="consumerkey" name="consumerkey" />
    <label for="consumersecret" style="font-weight:bold;display:block;width:150px;margin-top:5px;">Consumer Secret:</label> <input type="text" value="" id="consumersecret" name="consumersecret" />
    <input type="submit" value="Save" style="display:block;margin-top:10px;" />
</form>

我无法理解:

action="php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI'])"

我读了很多关于PHP的书,只看到了这个:

action="somescript.php" for the URL.

我只是不知道在哪里放置处理我的表单的代码。

我可以将我的代码放在插件的php文件(名为scheduler.php,位于wordpress/wp-content/plugins/scheduler/scheduler.php)中吗?

另外,请告诉我一些如何在wordpress中处理表单的例子。

顺便说一下,我只需要在我的设置页面上有两个字段:用户名和密码,当管理员按下提交按钮时,我希望字段的内容存储在数据库中。

我仍然无法理解

action="php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI'])"

转换为

action="/sheduled/wp-admin/options-general.php?page=twitterstreamauth" 

抱歉,我的英语不是很好。非常感谢你的关注。

1 个答案:

答案 0 :(得分:3)

通过谷歌搜索%7E,我发现它是Unix中的保留代码,表示代字号(〜)。由于许多服务器运行Unix操作系统,因此您无法使用符号%7E。但是,您可以使用可能在网址或网页上某处使用的符号~

php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI'])从名为$_SERVER的密钥中获取存储在REQUEST_URI(这是一个特殊数组)中的字符串。然后用%7E替换~的每个出现。在99%的情况下,没有符号被替换,但是仍然可能在URL中出现波形。这非常简单,但echo回应了编辑过的字符串。

在这种情况下,/sheduled/wp-admin/options-general.php?page=twitterstreamauth返回字符串$_SERVER['REQUEST_URI'],找不到符号%7E,因此字符串只会回显到html代码中。

action="..."是浏览器在提交表单时需要执行的操作,在这种情况下打开文件options-general.php?page=twitterstreamauth

另外,如果您不知道如何将表单的内容存储到数据库中,那么您还没有阅读足够的PHP书籍。你需要学习PHP + MySQL来存储数据库中的东西。

我希望这有助于您更好地理解代码。