V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yeyeye
V2EX  ›  问与答

PHP 难题:如何判断网址中这个问号是否存在

  •  
  •   yeyeye · 2016-01-09 21:20:22 +08:00 · 3104 次点击
    这是一个创建于 3259 天前的主题,其中的信息可能已经有所发展或是发生改变。
    echo var_export($_SERVER);

    根本就捕捉不到后面的这个问号。

    http://www.example.com/index.php 访问和 http://www.example.com/index.php?

    用上面那个 php 代码输出来的结果是一模一样的(请不要在问号后加内容测试)

    说真的,遇到这个问题都不知道怎么 Google 搜了,无奈!

    输出的字数挺多的,送上文本对比工具
    http://mergely.com/editor
    http://www.bejson.com/othertools/finddif/
    http://wenbenbijiao.renrensousuo.com/
    第 1 条附言  ·  2016-01-09 21:57:03 +08:00
    谢谢各位帮测试,已经确定是 kangle 的坑了,在其他服务器测试正常。已逐一发送感谢。
    楼主的坑爹服务器环境:
    kangle/3.4.8 PHP5.3.3
    16 条回复    2016-01-09 21:52:10 +08:00
    vibbow
        1
    vibbow  
       2016-01-09 21:26:03 +08:00   ❤️ 1
    $_SERVER['REQUEST_URI']

    不用谢。
    crab
        2
    crab  
       2016-01-09 21:28:00 +08:00   ❤️ 1
    $_SERVER['REQUEST_URI']
    yeyeye
        3
    yeyeye  
    OP
       2016-01-09 21:30:21 +08:00
    @vibbow 哥们,你确定可行么……我认为我作为楼主已经表述得很清楚了$_SERVER 的数组里,根本就判断不出来的。整个$_SERVER 我都对比过了(原谅我放荡不羁版本低 5.2 ,不知道高版本表现怎么样)
    yeyeye
        4
    yeyeye  
    OP
       2016-01-09 21:30:56 +08:00
    @crab 哥们,你确定可行么……我认为我作为楼主已经表述得很清楚了$_SERVER 的数组里,根本就判断不出来的。整个$_SERVER 我都对比过了(原谅我放荡不羁版本低 5.2 ,不知道高版本表现怎么样)
    vibbow
        5
    vibbow  
       2016-01-09 21:31:32 +08:00   ❤️ 1
    @yeyeye 我当然确定可行啊
    liuhaotian
        6
    liuhaotian  
       2016-01-09 21:31:35 +08:00 via iPhone
    $_SERVER['REQUEST_URI']
    liuhaotian
        7
    liuhaotian  
       2016-01-09 21:31:58 +08:00 via iPhone   ❤️ 1
    $_SERVER['REQUEST_URI']
    不谢
    yeyeye
        8
    yeyeye  
    OP
       2016-01-09 21:33:18 +08:00
    @vibbow 我的$_SERVER['REQUEST_URI']在有没有加问号都是空的 0 0~ 这是我测试的结果,不知道你测试用的是什么版本的 php
    vibbow
        9
    vibbow  
       2016-01-09 21:35:57 +08:00   ❤️ 1
    @yeyeye 应该和 PHP 版本关系不大,是标准里的东西。
    vibbow
        10
    vibbow  
       2016-01-09 21:36:53 +08:00   ❤️ 1
    @yeyeye REQUEST_URI 不应该是空的,至少得包含当前访问的路径,最少也得有个 /
    如果是空的,肯定是你服务器配置问题
    shiny
        11
    shiny  
       2016-01-09 21:37:26 +08:00   ❤️ 1
    @yeyeye 确实有啊, php5.4, apache2.2
    yeyeye
        12
    yeyeye  
    OP
       2016-01-09 21:44:57 +08:00
    @vibbow
    @shiny
    @liuhaotian

    我是说没有问号 对不起表达错误……

    我的环境是 kangle/3.4.8 PHP5.3.3
    http://www.example.com/tools/t.php?
    echo var_export($_SERVER);
    输出的是下面这段,根本就没有问号……难道是 kangle 的坑么……

    array (
    'PHPRC' => '/tmp/php-test.ini',
    'PHP_FCGI_MAX_REQUESTS' => '0',
    'SELINUX_INIT' => 'YES',
    'CONSOLE' => '/dev/console',
    'TERM' => 'linux',
    'INIT_VERSION' => 'sysvinit-2.86',
    'PATH' => '/sbin:/usr/sbin:/bin:/usr/bin',
    'RUNLEVEL' => '3',
    'runlevel' => '3',
    'PWD' => '/',
    'LANG' => '',
    'PREVLEVEL' => 'N',
    'previous' => 'N',
    'HOME' => '/',
    'SHLVL' => '2',
    '_' => '/vhs/kangle/bin/kangle',
    'FCGI_ROLE' => 'RESPONDER',
    'HTTP_HOST' => 'www.example.com',
    'HTTP_CONNECTION' => 'keep-alive',
    'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
    'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
    'HTTP_DNT' => '1',
    'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, sdch',
    'HTTP_ACCEPT_LANGUAGE' => 'zh-CN,zh;q=0.8',
    'SERVER_SOFTWARE' => 'kangle/3.4.8',
    'GATEWAY_INTERFACE' => 'CGI/1.1',
    'SERVER_NAME' => 'www.example.com',
    'SERVER_PROTOCOL' => 'HTTP/1.1',
    'REQUEST_METHOD' => 'GET',
    'REQUEST_URI' => '/tools/t.php',
    'SCRIPT_NAME' => '/tools/t.php',
    'PATH_TRANSLATED' => '/home/ftp/e/test/wwwroot/tools/t.php',
    'SCRIPT_FILENAME' => '/home/ftp/e/test/wwwroot/tools/t.php',
    'SERVER_ADDR' => '103.238.226.1',
    'SERVER_PORT' => '80',
    'REMOTE_ADDR' => '104.251.225.1',
    'REMOTE_PORT' => '60943',
    'DOCUMENT_ROOT' => '/home/ftp/e/test/wwwroot/',
    'VH_NAME' => 'test',
    'PHP_SELF' => '/tools/t.php',
    'REQUEST_TIME' => 1452347062,
    )
    zsx
        13
    zsx  
       2016-01-09 21:46:23 +08:00   ❤️ 1
    $_SERVER 里的东西一般和你 Web Server 给你的内容有关系,你得看 Web Server 的配置。
    默认配置的 IIS 和 Apache 都是可以的
    vibbow
        14
    vibbow  
       2016-01-09 21:48:39 +08:00   ❤️ 1
    @yeyeye 目测是 kangle 的坑了。
    我这里 IIS 7.5, IIS 8.5, IIS 10 都没问题的。
    just1
        15
    just1  
       2016-01-09 21:49:36 +08:00 via Android   ❤️ 1
    @yeyeye REQUEST_URI ==> /index.php?
    经过测试是有效的
    yeyeye
        16
    yeyeye  
    OP
       2016-01-09 21:52:10 +08:00
    @vibbow
    @crab
    @liuhaotian
    @shiny
    @zsx
    @just1

    已经确定是 kangle 的坑了,同样代码另一个服务器上没问题,感谢你们的耐心!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:18 · PVG 05:18 · LAX 13:18 · JFK 16:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.