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

2016-01-09 21:20:22 +08:00
 yeyeye
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/
3057 次点击
所在节点    问与答
16 条回复
vibbow
2016-01-09 21:26:03 +08:00
$_SERVER['REQUEST_URI']

不用谢。
crab
2016-01-09 21:28:00 +08:00
$_SERVER['REQUEST_URI']
yeyeye
2016-01-09 21:30:21 +08:00
@vibbow 哥们,你确定可行么……我认为我作为楼主已经表述得很清楚了$_SERVER 的数组里,根本就判断不出来的。整个$_SERVER 我都对比过了(原谅我放荡不羁版本低 5.2 ,不知道高版本表现怎么样)
yeyeye
2016-01-09 21:30:56 +08:00
@crab 哥们,你确定可行么……我认为我作为楼主已经表述得很清楚了$_SERVER 的数组里,根本就判断不出来的。整个$_SERVER 我都对比过了(原谅我放荡不羁版本低 5.2 ,不知道高版本表现怎么样)
vibbow
2016-01-09 21:31:32 +08:00
@yeyeye 我当然确定可行啊
liuhaotian
2016-01-09 21:31:35 +08:00
$_SERVER['REQUEST_URI']
liuhaotian
2016-01-09 21:31:58 +08:00
$_SERVER['REQUEST_URI']
不谢
yeyeye
2016-01-09 21:33:18 +08:00
@vibbow 我的$_SERVER['REQUEST_URI']在有没有加问号都是空的 0 0~ 这是我测试的结果,不知道你测试用的是什么版本的 php
vibbow
2016-01-09 21:35:57 +08:00
@yeyeye 应该和 PHP 版本关系不大,是标准里的东西。
vibbow
2016-01-09 21:36:53 +08:00
@yeyeye REQUEST_URI 不应该是空的,至少得包含当前访问的路径,最少也得有个 /
如果是空的,肯定是你服务器配置问题
shiny
2016-01-09 21:37:26 +08:00
@yeyeye 确实有啊, php5.4, apache2.2
yeyeye
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
2016-01-09 21:46:23 +08:00
$_SERVER 里的东西一般和你 Web Server 给你的内容有关系,你得看 Web Server 的配置。
默认配置的 IIS 和 Apache 都是可以的
vibbow
2016-01-09 21:48:39 +08:00
@yeyeye 目测是 kangle 的坑了。
我这里 IIS 7.5, IIS 8.5, IIS 10 都没问题的。
just1
2016-01-09 21:49:36 +08:00
@yeyeye REQUEST_URI ==> /index.php?
经过测试是有效的
yeyeye
2016-01-09 21:52:10 +08:00
@vibbow
@crab
@liuhaotian
@shiny
@zsx
@just1

已经确定是 kangle 的坑了,同样代码另一个服务器上没问题,感谢你们的耐心!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249578

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX