从表单到函数传递变量

时间:2015-05-12 19:25:24

标签: php mysql

我在个人资料控制器中有这个

public function search()
{
        $searchString=htmlentities(Request::post('search_field'));
        $this->View->render('profile/search', array(
        'user' => UserModel::searchProfile($searchString)
        ));

}

这在我的模特中

    public static function searchProfile($searchString)
{
    if(empty($searchString)){
    Session::add('feedback_negative', Text::get('FEEDBACK_UNKNOWN_ERROR'));
    return false;
        }
    $database = DatabaseFactory::getFactory()->getConnection();
    $query = $database->prepare("SELECT * FROM users WHERE user_name LIKE :query");
    $query->execute(array(':query' => '%'.$searchString.'%'));

    return $query->fetchAll();
}

但重定向系统无法使用此功能(点击刷新会显示“您想再次发送吗?”)

但是,如果我在search()中发送$searchString它可以正常工作(并且网址看起来很酷)。

但是如果搜索($ searchString)为空($ searchString = null,空输入字段),我会收到错误:Warning: Missing argument 1 for ProfileController::search()和ofc:Notice: Undefined variable: searchString

如何将Request::post('search_field')转入search()

1 个答案:

答案 0 :(得分:0)

不知道这是否可行,但我解决了这个问题:

public function search($searchString='')
{
        $this->View->render('profile/search', array(
        'user' => UserModel::searchProfile(htmlentities($searchString))
        ));

}

以及表格形式:

onsubmit="window.location = '<?php echo Config::get('URL'); ?>profile/search/' + search_field.value; return false;"

因此搜索查询将发送到http://example.com/profile/search/query

有任何安全风险吗?