将 HTML 表单操作与位于另一个目录中的 php 脚本一起使用(相对路径)
Posted
技术标签:
【中文标题】将 HTML 表单操作与位于另一个目录中的 php 脚本一起使用(相对路径)【英文标题】:Using HTML form action with a php script being in another directory (relative paths) 【发布时间】:2013-06-02 18:46:30 【问题描述】:这是我的目录树的样子
/application
/lib
/util
/login
/views
/base_view
我的登录页面是
localhost:737/astuto-lena/branches/application/views/base_view/index.php
我希望我的表单的动作是这样的
localhost:737/astuto-lena/branches/application/util/login/main.php
这是我的表单声明
<form class="form_login" action="./util/login/main.php" method="POST">
...
</form>
但是当我点击提交按钮时,它需要我去
localhost:737/astuto-lena/branches/application/views/base_view/util/login/main.php
这是错误的路径并生成错误 404。
那么我在表单声明中使用相对路径的方式有什么问题,我该如何解决?
【问题讨论】:
【参考方案1】:在您的相对路径./util/login/main.php
中,您使用的是指向当前文件夹的./
,因此它假定文件夹结构/util/login
位于/base_view
内。您应该尝试使用引用父文件夹的../
:
<form class="form_login" action="../../util/login/main.php" method="POST">
...
</form>
【讨论】:
谢谢!澄清一下:有什么理由我应该使用../
两次?或者我可以只使用一个 ../
的情况?
@Flayshon 实际上是的,这是有区别的,基本上在你的情况下,你从localhost:737/astuto-lena/branches/application/views/base_view/
开始,如果你使用../
,你会在localhost:737/astuto-lena/branches/application/views/
结束,并使用它两次带你到localhost:737/astuto-lena/branches/application/
,这也是包含/util/login/
的文件夹【参考方案2】:
您需要将操作设置为更好的相对路径或使用绝对路径。例子:
../../util/login/main.php
或
/astuto-lena/branches/application/util/login/main.php
./
仅表示this directory
(又名current working directory
)
【讨论】:
【参考方案3】:你必须使用 ../ 去父目录
<form class="form_login" action="../../util/login/main.php" method="POST">
...
</form>
【讨论】:
【参考方案4】:我遇到了类似的问题,我得到的错误是找不到对象
/application
/includes
connect.php
insert.php
index.php
<form action="/includes/insert.php" method="post">
//code
</form>
上面的代码不起作用并显示错误 404,未找到对象。但是,
<form action="./includes/insert.php" method="post">
//code
</form>
唯一的区别是在操作路径中添加.
。
奇怪的是/include/filename
适用于require
或include
但您需要为表单操作属性添加.
【讨论】:
以上是关于将 HTML 表单操作与位于另一个目录中的 php 脚本一起使用(相对路径)的主要内容,如果未能解决你的问题,请参考以下文章