Php HTML发布表单提交正在破坏URL

Php HTML发布表单提交正在破坏URL,php,html,forms,Php,Html,Forms,我正试图得到一个HTML/PHP表单提交正确。一些细节: 基本url=http://localhost/directory 页面=page/add 完整地址=http://localhost/directory/page/add 使用htaccess重写URL以便http://localhost/directory/page/add实际上是http://localhost/directory/index.php?q=page/add 我的HTML POST操作是“page/add”,这样前端控制

我正试图得到一个HTML/PHP表单提交正确。一些细节:

基本url=
http://localhost/directory

页面=
page/add

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

使用htaccess重写URL以便
http://localhost/directory/page/add
实际上是
http://localhost/directory/index.php?q=page/add

我的HTML POST操作是“page/add”,这样前端控制器就知道应该启动哪个函数来清理和提交数据(它充当“表单id”)

页面在加载时可以正常加载,但当我单击submit按钮时,URL会被更改为page/page/add。每次我按下“提交”键,我都会在url中添加另一个“页面”。因此,5次点击将得到“页面/页面/页面/页面/页面/页面/添加”

我似乎不明白为什么我会得到那个“额外的”页面

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

注意:第92行的未定义索引:page/page/add-in 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.
    }
}
功能路由路径($path=NULL){
$routes=get_routes();//返回数组:批准的“URL=>函数回调”
如果($path==NULL){
$path=get_path();//返回带有trim和strip_标记的$_get['q']
}
$function=$routes[$path];通过使用相对路径,您告诉表单在现有路径加上您的操作提交。因此,如果您在,表单使用
http://example.com/page/
作为基础,并添加操作
页面/add
,从而在
http://example.com/page/page/add

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

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

表单的URL是什么?您知道
page/add
是相对于当前的吗?如果表单的URL以
/
结尾或不以
/
结尾,则情况会有所不同。
<form action="add" method="post" />