【问题标题】:Get request domain using php使用php获取请求域
【发布时间】:2016-01-13 11:52:05
【问题描述】:

我在使用HTTP_REFERER. 获取域名时遇到问题 条件是这样的:

http://www.example.com 向我的服务器发送 curl 帖子。事情是,example.com 不会在curl_setopt(CURLOPT_REFERER) 中发送他们的网址。那么我的服务器端是否有可能获得他们的域名?

非常感谢你帮助我

到目前为止我的代码:


在 abc.com 方面

$data = array('username' => $username ,
              'email' => $email,
              'phone' => $phone );

    $string = http_build_query($data);
    // For debugging purpose
    // echo $string;

    $ch =  curl_init("http://localhost/test/str_pos.php");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);
    curl_close($ch);

    header("Location: str_pos.php");

在我的服务器端:

$domain = parse_url($_SERVER['HTTP_REFERER']);

    if (isset($domain['host'])) {

        echo $domain['host'];
    }
    else{
        echo "No host found";
    }

【问题讨论】:

  • 显示您的代码。到目前为止你做了什么?
  • @urfusion 我的代码,就我的问题而言。谢谢!
  • thread 会问类似的问题吗?还是我在这里离题了?
  • @Spyder_Says_hi 所以如果 abc.com 没有在参数中发送他们的 url,好像我的服务器端无法根据请求获取域名?
  • 您可以使用var_dump 显示$_SERVER 并尝试在那里找到它。

标签: php curl


【解决方案1】:

我会建议一个不同的命令。而不是HTTP_REFERER 尝试HTTP_HOSTSERVER_NAME

例子:

$domain = parse_url($_SERVER['HTTP_HOST']);

$domain = parse_url($_SERVER['SERVER_NAME']);


HTTP_REFERER - 将用户代理引向当前页面的页面地址(如果有)。这是由用户代理设置的。不是所有的用户代理都会设置这个,有些提供修改HTTP_REFERER 的功能。简而言之,它不能真正被信任。

来源http://php.net/manual/en/reserved.variables.server.php

查看以下主题 herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2016-03-14
    • 2012-07-06
    相关资源
    最近更新 更多