我正在尝试正确提交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模板中。这允许我将操作保持为页面/添加(因为它也是我的简单路由器/调度程序中的路径)。
答案 0 :(得分:2)
通过使用相对路径,您告诉表单要在现有路径和操作处提交。因此,如果您位于http://example.com/page/add,则表单会使用http://example.com/page/
作为基础,并将操作page/add
添加到http://example.com/page/page/add
。
您仍然可以使用相对路径,只需相应地更改操作:
<form action="add" method="post" />