Php HTML发布表单提交正在破坏URL
我正试图得到一个HTML/PHP表单提交正确。一些细节: 基本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”,这样前端控制
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" />