相关疑难解决方法(0)

如何在不使用$ _SERVER ['HTTPS']的情况下查看是否使用HTTPS

我在网上看过很多教程,说你需要检查$_SERVER['HTTPS']服务器连接是否用HTTPS保护.我的问题是,在我使用的某些服务器上,$_SERVER['HTTPS']是一个未定义的变量导致错误.是否有另一个我可以检查的变量应该始终定义?

为了清楚起见,我目前正在使用此代码来解决它是否是HTTPS连接:

if(isset($_SERVER['HTTPS'])) {
    if ($_SERVER['HTTPS'] == "on") {
        $secure_connection = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

php https

185
推荐指数
9
解决办法
24万
查看次数

如果调用者未使用HTTPS,如何阻止访问PHP文件?

我写了几个PHP Web服务,我通过URL传递参数.为了防止未经授权的访问,我传入一个唯一的密钥作为其中一个参数.我通过HTTPS调用PHP文件,我想知道如果没有使用HTTPS,我是否可以阻止脚本运行.

php https web-services

6
推荐指数
1
解决办法
3009
查看次数

检测服务器上发送的HTTPS与HTTP无关

所以非常类似于" 在php中检测https请求 ":

想要https://example.com/pog.php访问http://example.com/pog.php,反之亦然.

问题:

  • 无法读取$ _SERVER ["HTTPS"]中的任何内容,因为它不存在
  • 服务器通过端口80发送两个请求,因此无法检查HTTPS版本上的443
  • apache_request_headers()apache_response_headers()被发回同样的事情
  • 不能告诉负载均衡器什么或让它发送额外的东西
  • 两个URL调用上页面吐出的服务器反馈数据与会话ID完全相同.游民.

是否有任何页面方式可以检测是通过SSL还是非SSL调用?

编辑:$_SERVER["HTTPS"]不存在,无论是否开启,无论您是通过SSL还是非SSL查看网站.由于某种原因,托管已选择加密所有加密的HTTPS请求,但是在端口80下.因此,$_SERVER["HTTPS"]从不开启,不存在,只是没有对该服务器点的有用反馈.所以该参数始终为空.

(是的,这意味着它会在FF或Chrome中被标记为部分无效的SSL证书.但这部分并不重要.)

此外,从检测URL可以获得的最多是达到斜杠的点.PHP无法查看请求是否有httpshttp在前面.

php apache ssl https

5
推荐指数
1
解决办法
2万
查看次数

获取PHP网站的根URL

我目前正在开发一个PHP项目,我正在寻找一种方法来获取网站根目录的URL; 我在根目录下有一个配置文件,所以我正在考虑使用它来找出"基本URL".我正在寻找一种动态的方法,以便找到网站根目录的URL,即http://domain.com/my_app/.我正在尽力避免使用相对路径,并使用PHP生成我正在使用的任何URL.例如,我使用PHP生成CSS代码和CSS代码链接到图像,所以我想在这里获得绝对URL而不是相对路径.

my_app/
    admin/
        resources/
            css/
                admin-css.php
            imgs/
                login.png
    resources/
        css/
            css.php
        imgs/
            my-image.png
            shared-image.png
    config.php
Run Code Online (Sandbox Code Playgroud)

在我的resources/css/css.php文件中,我正在寻找获得"基本URL"所以我可以生成imgs文件夹的绝对URL,http://domain.com/resources/imgs/my-image.png但目前我正在获取,http://domain.com/resources/css/imgs/my-image.png因为下面的定义看到获取加载的PHP文件的目录,而不是包含的文件.我还想在文件夹之间共享图像(即shared-image.pngadmin文件夹访问文件),因此获取基本URL将是生成链接的理想选择.我避免相对路径的原因是因为我有一个创建URL的函数createURL(),所以我可以使所有的URL工作而无需硬编码任何东西.

<?php
DEFINE('HTTP_TYPE', $_SERVER['HTTP_X_FORWARDED_PROTO']);
DEFINE('HTTP_ROOT', $_SERVER['HTTP_HOST']);
DEFINE('HTTP_FOLDER', dirname($_SERVER['PHP_SELF']) . '/');
DEFINE('BASE_URL', HTTP_TYPE . "://" . HTTP_ROOT . HTTP_FOLDER);

function createURL($pathFromRoot)
{
    return BASE_URL . $pathFromRoot;
}
Run Code Online (Sandbox Code Playgroud)

所有这些定义都位于我的配置文件中,所以我认为最好的方法是获取配置文件的URL(http://domain.com/my_app/config.php)并删除"config.php".请记住,网站可以更深入地托管在文件夹结构中,也可以不托管在http://domain.com/my_app/another/folder/config.php子文件夹中http://domain.com/config.php.

这是可能的,如果可以的话怎么办呢?或者我应该遵循另一种方法吗?

php

4
推荐指数
1
解决办法
2万
查看次数

如何在php中检查页面是从http还是https调用

只是想知道,我们是否有可能检查页面是否是来自http的http或https?

示例:如果我通过以下链接http://customer.php调用页面调用customer.php ,是否可以检入php并告诉页面是否来自http ..如果我从以下页面调用页面也是如此链接https://customer.php,是否可以检查PHP并告诉该页面来自https ??

php

3
推荐指数
1
解决办法
4723
查看次数

如何定义是通过https或http请求的页面?

可能重复:
PHP:HTTP还是HTTPS?一个人怎么说?

有没有办法来定义这个?

$ _SERVER superglogal不提供此类信息.即使只是它的['SERVER_PROTOCOL'] ......

php https http phpinfo

3
推荐指数
1
解决办法
284
查看次数

标签 统计

php ×6

https ×4

apache ×1

http ×1

phpinfo ×1

ssl ×1

web-services ×1