2009-10-06 73 views
0

我正在开发一个网站,并在我试图使友好的网址没有重复到mod_rewrite的(因为机会是我的客户的服务器doesent允许的话),我想出了这个系统:PHP包括和POST

指数。 php期望一个名为$ seccion的变量,它应该包含一个具有特定部分的第二个文件的相对路径。这样我就可以将静态的东西(header,footer,sidebar)都放在index.php中,唯一改变的就是中间的东西。

然后,如果你去/注册,只有它有一个的index.php:

<? $seccion = 'signup.php'; @include '../index.php'; ?> 

将URL www.root.com/signup但它实际上是包括www.root。 com/index.php并在中心区域加载www.root.com/signup.php。

这种安排也意味着每次我需要链接到一个文件,我必须使用绝对URL。

问题是,现在由于某种原因POST doesen't似乎工作。假设我在www.root.com/signup上有一个表单,其动作是www.root.com/welcome,它应该通过POST发送输入。那么,这些信息永远无法通过。 PHP返回$ _POST = Array()

任何想法?

编辑:我忘了提及我以前在开发过程中遇到过同样的问题,当时我的解决方案是使用ajax,并通过jQuery发送POST请求。这是一个优雅的解决方案,但不是我一直想要的。

+0

你的设置似乎不是问题。 如果将数据直接发布到/welcome.php会发生什么? – timdev

+0

我会给它一个,但我仍然需要welcome.php嵌入index.php。正如我所说,index.php具有所有静态的东西。 – Nacho

回答

0

这听起来像别的东西正在进行像一个重定向的地方 - 你有任何mod_rewrite规则可能会重定向“路径/”到“路径”或类似的东西? Firefox的Firebug将在NET选项卡中显示任何重定向。

无论如何,我会建议您放弃这种方法,而是使用路由器来处理您的请求。如果你看看MicroMVCCodeIgniter或大多数其他MVC框架,你会发现它们使用单​​个索引。php文件通过一个URL(/ blog/read/45)并从那里使用路由文件知道加载“blog.php”文件并调用“read(45)”或者(blog-> read(45) )。

+0

没有mod_rewrite规则,是的,我想我将不得不放弃这个方法来做别的事情,尽管这个想法不需要重写我的整个结构,我会看看这些框架。 – Nacho

0

试试这个。这将允许你有一个页面作为你的模板。将所有其他页面(包括您的模板)设置给他们。然后允许您在页面内进行POST。

文件:_design.php

<html> 
<head> 
<title>Site</title> 
</head> 
<body> 
<?php include $file; ?> 
</body> 
</html> 

文件:index.php文件

<?php 
$file = 'pg/index.php'; // this gets content 
include $file; 
?> 

文件:PG/index.php的

<?php 
if(isset($_POST)){ 
echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 
} 
?> 
<form action="?" method="post"> 
Name: <input type="text" name="name" /> 
<input type="submit" value="Send" /> 
</form> 
+0

不知道我是否理解,但是对于我所知道的,这就是我现在所知道的:\ – Nacho

+0

我已经用apache和windows对ios进行了centos测试,它适用于我。我同意下面的人。你有任何mod_rewrite设置?这可能会杀死这个帖子。 – David

+0

我不会,我的客户的服务器也没有它:( – Nacho

0

我跑进了其他类似的问题晚上和朋友一起在他的windows机器上安装了PHP。

由于某种原因,他的简单表单并未传递任何帖子或将数据传递给他的PHP脚本。他的代码没有任何问题,这与PHP或Apache安装有关。在他安装Aptana并使用它的内部服务器之后,表单正常工作。

先尝试测试一个简单的表单,并确保_POST数据实际上被PHP拾取。

+0

我在XAMPP上。不幸的是,我不知道如何或时间切换服务器软件或配置此服务器。 然而,_POST,但是只有当发送者和接收者是相同的页面时 – Nacho