我有一个轻松遵循MVC模型的应用程序。它有3个主页(有些对于这个问题并不重要):
问题:
Process.php创建一个POST请求(请参阅下面的代码),该请求使用静态URL向自己发送请求。我想知道是否有办法将其更改为相对URL。
Process.php的代码:
$username = htmlspecialchars($_POST['txtFCUCompName'], ENT_QUOTES);
$password = htmlspecialchars($_POST['pwdFCUPwd'], ENT_QUOTES);
$confirmation = htmlspecialchars($_POST['pwdFCUConf'], ENT_QUOTES);
$email = htmlspecialchars($_POST['txtFCUEml'], ENT_QUOTES);
$_SESSION['msg'] = "";
/*Sending a POST request trought PHP to use this page to validate the fields in php in case the clients javascript module is disabled.*/
//!!!!!!!!!This line is the problem!!!!!!!!!
$url = "http://someadresse.com/somefolder/Process.php";
$PostParams = array
(
'NewUser' => array
(
'validate'=>'NewUser',
'array'=>json_encode
(
array
(
"txtFCUCompName"=>$username,
"txtFCUEml"=>$email,
"pwdFCUPwd"=>$password,
"pwdFCUConf"=>$confirmation
)
)
)
//More arrays.
);
//Loop through all the arrays inside the array of parameter and send a request for each one.
foreach($PostParams as $index=>$Params)
{
$PostOptions = array
(
"http"=>array
(
"header"=>"Content-Type: application/x-www-form-urlencoded;charset=UTF-8",
"method"=>"POST",
"content"=>http_build_query($Params)
)
);
$context = stream_context_create($PostOptions);
$_SESSION['msg'] = file_get_contents($url, false, $context);//LINE 1502 (see error code below)
}
if($_SESSION['msg'] == null)
{
//Do stuff with the returned values of the post request...
}
header("Location: SoumissionJRT.php");
//I have another section of Process.php that do some validation and echo HTML div tags with text.
更多信息:
问题是Process.php可能会不时更改文件夹(可能每年一次),我不想每次都更改硬编码的$url
变量。请求总是指向它所源自的同一页面。
不要误解这个问题,问题不是POST请求本身,而是发送它的URL。 POST工作正常。
我已尝试将其更改为$url = "../Process.php"
和$url = "."
,但我改变$url
似乎没有任何效果。它不会在浏览器上显示错误消息,但在PHP errorlogs文件中我有以下错误
[09-Apr-2014 16:15:33] PHP警告:file_get_contents(。):未能 开放流:权限被拒绝 第1502行的C:\ inetpub \ wwwroot \ somefolder \ Process.php
和
[09-Apr-2014 16:16:10] PHP警告: file_get_contents(../ Process.php):无法打开流:没有这样的文件 或者在1502行的C:\ inetpub \ wwwroot \ somefolder \ Process.php中的目录
LINE 1502指向
$_SESSION[$key] = file_get_contents($url, false, $context);
此外,我并不愚蠢我明白file_get_contents()
找不到请求的URL或者我的应用程序目录中不存在此URL。
编辑: $ _SERVER ['REQUEST_URI']不起作用,它返回此值:
/somefolder/Process.php
似乎请求需要一个完整的URL到Process.php。
但也许还有另一个$_SERVER[]
包含所需的地址?
或者,也许我需要连接其中的2个或3个?
任何人都知道工作或修理?
谢谢!
答案 0 :(得分:3)
在PHP中,您可以使用
$url = $_SERVER['REQUEST_URI'];
这将始终为您提供当前正在运行的脚本的位置。