一尘不染

PHP是否具有与Java的RequestDispatcher.forward等效的功能?

jsp

在Java中,我可以这样编写一个非常基本的JSP index.jsp

<% request.getRequestDispatcher("/home.action").forward(request, response); %>

这样做的结果是,请求的用户index.jsp(或仅假设包含目录index.jsp是该目录的默认文档)将在home.action没有浏览器重定向的情况下看到,即[forward](http://java.sun.com/javaee/5
/docs/api/javax/servlet/RequestDispatcher.html#forward(javax.servlet.ServletRequest,%20javax.servlet.ServletResponse))在服务器端发生。

我可以用PHP做类似的事情吗?我怀疑可以配置Apache来处理这种情况,但是由于我可能无法访问相关的Apache配置,因此我对仅依赖PHP的解决方案感兴趣。


阅读 244

收藏
2020-06-08

共1个答案

一尘不染

如果您担心CURL的可用性,则可以使用file_get_contents()和流。设置如下功能:

function forward($location, $vars = array()) 
{
    $file ='http://'.$_SERVER['HTTP_HOST']
    .substr($_SERVER['REQUEST_URI'],0,strrpos($_SERVER['REQUEST_URI'], '/')+1)
    .$location;

    if(!empty($vars))
    {
         $file .="?".http_build_query($vars);
    }

    $response = file_get_contents($file);

    echo $response;
}

这只是设置一个GET,但是您也可以发布一个file_get_contents()

2020-06-08