HTML POST表单提交是错误的URL

时间:2011-11-06 02:46:03

标签: php html forms

我正在尝试正确提交HTML / PHP表单。一些细节:

base url = http://localhost/directory

page = page/add

完整地址= http://localhost/directory/page/add

使用htaccess重写网址,以便http://localhost/directory/page/add实际为http://localhost/directory/index.php?q=page/add

我的HTML POST操作是“page / add”,以便前端控制器知道要触发哪个功能来清理和提交数据(它充当'表单ID')。

页面在http://localhost/directory/page/add处加载正常,但是当我点击提交按钮时,URL会被损坏到页面/页面/添加。每次我按“提交”,我都会在网址上添加另一个“页面”。因此,5次点击将获得“page / page / page / page / page / page / add”

我似乎无法找到为什么我会获得“额外”“页面”。

实际的PHP错误(页面/页面/添加在$ routes中不存在,因为它不是有效的路由):

注意:未定义的索引:页面/页面/添加在第92行的C:\ xampp \ htdocs \ script \ includes \ common.inc

以下是第92行的功能:

function route_path($path = NULL) {

    $routes = get_routes(); //Returns array: approved "urls => function callbacks"

    if($path === NULL) {
        $path = get_path(); //Returns $_GET['q'] with trim and strip_tags
    }

    $function = $routes[$path]; <<<<<----This is LINE 92 

    if(isset($function)) {
    $form_name = str_replace('/', '_', $path); // page/add = function page_add()
    }

    if(function_exists($function)) {
        call_user_func($function, $form_name);
    }
    else {
        //TODO: Redirect to Login screen.
    }
}

基本HTML是:

<form action="page/add" method="post" />

//Form elements

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

感谢您的帮助。

更新:我所做的是将<base>标记添加到我的HTML模板中。这允许我将操作保持为页面/添加(因为它也是我的简单路由器/调度程序中的路径)。

1 个答案:

答案 0 :(得分:2)

通过使用相对路径,您告诉表单要在现有路径和操作处提交。因此,如果您位于http://example.com/page/add,则表单会使用http://example.com/page/作为基础,并将操作page/add添加到http://example.com/page/page/add

您仍然可以使用相对路径,只需相应地更改操作:

<form action="add" method="post" />