将变量传递给搜索方法的问题

时间:2014-04-01 21:03:10

标签: php html forms

我正在进行搜索并从网络提交表单调用搜索。我似乎无法将变量从搜索框传递到参数中。

这适用于Instagram搜索应用。我正在尝试检索特定用户Feed:

这是获取用户Feed的调用:

$result = $instagram->searchUser($id);

这称为此功能:

public function searchUser($name, $limit = 0) {
    return $this->_makeCall('users/search', false, array('q' => $name, 'count' => $limit));
}

我的问题是将'$ id'传递给此。这就是我到目前为止在html中所拥有的,我意识到我可能会离开这里,但我(显然)是新的。

  <form id="sform" method="post">
    <fieldset>

        <input id="s" type="text" />

        <input type="submit" value="Submit" id="id" />

        <div id="searchInContainer">
            <input type="radio" name="check" value="site" id="id" checked />
           >

        </div>



    </fieldset>
</form>

2 个答案:

答案 0 :(得分:1)

您的代码中存在一些不一致之处。首先,您对searchUser()的原始调用会传入名为$id的变量,然后该函数的定义会有一个名为$name的变量 - 这对此没有任何问题从技术上讲,但是当你的论点被命名为不同而且通常都是这样时,很容易混淆你的论点。

您的问题是您的表单,您有多个ID分配给元素,这违反了HTML规范。您还需要为文本框指定名称属性,否则不会将任何数据发布到您的表单。

接下来,您需要为表单标记定义一个操作,以告诉浏览器指向帖子位置的位置 - 这是您调用API的PHP文件。让我们说它myfile.php,尝试这样的形式:

<form id="sform" action="myfile.php" method="post">
    <fieldset>
        <input name="search" id="search" type="text" />
        <input type="submit" value="Submit" name="submitButton" id="submitButtom" />
        <div id="searchInContainer">
            <input type="radio" name="check" value="site" id="yourCheckbox" checked />
        </div>
    </fieldset>
</form>

一旦你的HTML被整理出来,你只需要用PHP获取变量并将其传递给你的API:

$id = $_POST['search'];
$result = $instagram->searchUser($id);

我建议使用上面的语法来解决一些基本的SQL注入漏洞,如果您希望发送一个数字,请使用:$id = (int) $_POST['search'];强制变量为整数(删除恶意字符)等)。

答案 1 :(得分:1)

你所追求的是$_POST超全球。提交表单时,每个字段的内容都会放入一个$_POST变量中,该变量可由脚本访问。

<form id="sform" method="post" action="searchUser.php">
    <fieldset>
        <input id="s" name="userid" type="text" />

        <input type="submit" value="Submit" id="id" />

        <div id="searchInContainer">
            <input type="radio" name="check" value="site" checked />
        </div>
    </fieldset>
</form>
当用户提交该表单时,

searchUser.php将被调用,并且将包含包含文本字段内容的变量$_POST['userid']。这意味着:

$result = $instagram->searchUser($_POST['userid']);
然后

会起作用!此时也可以使用$_POST['check'],如果您需要调试,可以var_dump($_POST)查看表单中的内容!

我会强烈建议在任何用户提交的数据字段上进行一些数据验证,但是!不要假设$_POST变量中的内容是安全的!

您可以查看PHP Documentation了解更多内容! $_POST是超级全球家族中的一员,可以帮助你!