我正在尝试使用基本的HTTP身份验证并在此示例上遵循了示例PHP手册页.但这对我不起作用.变量$_SERVER['PHP_AUTH_USER']似乎没有设置.当用户尝试登录时,请提示用户在新的登录dialog中.服务器正在运行PHP 5.3.3,我尝试了Google Chrome和Internet Explorer. 这是我使用的简单示例:
以下是关于 server-variables 的编程技术问答
php中的$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']有什么区别? 您何时考虑使用另一个,为什么? 解决方案 从 如果没有指定ServerName,则服务器尝试通过在IP地址上执行反向查找来推导主机名.如果在ServerName中未指定端口,则服务器将使用传入请求中的端口.为了获得最佳的可靠性和可预测性,您应该使用ServerName指令指定明确的主机名和端口. 更新:检查 pekka在您的问题上的答案包含鲍勃斯的答案 php始终将返回HTTP_HOST的SERVER_NAME值,这与我自己的php 4.x + apache httpd违反1.2.x的经验从几年前,我从Windows XP上的当前XAMPP环境中吹出一些灰尘(Apache Httpd 2.2.1,带有PHP 5.2.8),开始了,创建了一个PHP页面,该页面打印了两个值,创建的两个值,创建的两个值使用首先怀疑php并在某些
快速一个: 我很好奇,如果有人知道$_SERVER['REQUEST_URI']的某些情况,$_SERVER['REQUEST_URI']给定后者的以下.htaccess .htaccess: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ?_uri=$1 [L,QSA] 我一直在使用后一种方法$_GET['_uri'],尽管我知道mod_rewrite仍然是必要的,但我想摆脱将URI作为查询参数存储. 好吧,我找到了以前没注意到的;当应用程序引导程序不在根Web目录中的mod_rewrite forthts时,$_SERVER['REQUEST_URI']包含父目录,而$_GET['_uri']仅包含后者的URI组件.示例: bootstrap是 /subdir/index.php 请求 http://localhost/
在我的本地环境中(Apache 2.2.26上的PHP 5.4.24)$_SERVER["SCRIPT_URL"],但我读到,即使我找不到它何时以及何时何时确切地找到该变量不是. 我想知道该变量可靠地存在需要什么. 解决方案 仅在启用mod_rewrite时才可用: 重写/rewrite_intro.html#envvar 其他解决方案 此变量很大程度上取决于服务器的配置. 例如 fastcgi_param SCRIPT_NAME $fastcgi_script_name; SCGI有类似的配置. $_SERVER中有3种类型的全局变量,有些是从客户端请求标题中获取的,并不可靠,有些是由PHP/Web服务器设置的(例如REMOTE_ADDR),并且非常可靠,有些则取决于在您的配置上,可以根据该配置可靠.
如何访问我从php中的命令行设置的$ _server变量? 当我尝试调用我创建的php方法时,我会收到以下错误,这表明只有当一个人通过其url调用我的应用程序,即WebServer: 时,所有$_SERVER变量才定义. ERROR - Undefined index: MY_VAR /www/html/some_file.php ERROR - Undefined index: MY_OTHER_VAR /www/html/some_file.php 更具体地说,我正在使用 codeigniter 相信这是问题. 想法? 解决方案 如果您在Web服务器配置中设置了服务器变量,那么当您通过命令行访问PHP时,它们将不会存在. (由于网络服务器根本不参与.) To use $_SERVER variables in your CLI PHP script, see: 设置$ _server变量从命令行调用PHP? 总结: 运行:VALUE_ON
如何访问我从php中的命令行设置的$ _server变量? 当我尝试调用我创建的php方法时,我会收到以下错误,这表明只有当一个人通过其url调用我的应用程序,即WebServer: 时,所有$_SERVER变量才定义. ERROR - Undefined index: MY_VAR /www/html/some_file.php ERROR - Undefined index: MY_OTHER_VAR /www/html/some_file.php 更具体地说,我正在使用 codeigniter 相信这是问题. 想法? 解决方案 如果您在Web服务器配置中设置了服务器变量,那么当您通过命令行访问PHP时,它们将不会存在. (由于网络服务器根本不参与.) To use $_SERVER variables in your CLI PHP script, see: 设置$ _server变量从命令行调用PHP? 总结: 运行:VALUE_ON
我需要在request.servervariables集合中设置http_x_forwarded_for.我正在尝试和提琴手一起尝试(请参阅这篇文章). 所以我设置了一个自定义HTTP请求: GET http://myhost/ HTTP/1.1 http_x_forwarded_for: my.fake.ip.1, my.fake.ip.2 Host: myhost. 请求正确执行. 但是,当我调试代码时,请求.servervariobles(" http_x_forwarded_for")为空. 我在哪里错了? 提琴手是正确的工具吗? 解决方案 您发送的标题应为x-forwarded-for. Request.ServerVariables正是它所说的服务器变量.它不仅包含请求中发送的HTTP标头. 将标头值放入服务器变量时,IIS为基于基于标题名称的变量的名称创建一个名称,但不是Verbatim的名称.它将所有字符转换为大写,用_代替所有字符,并
在Exisiting .NET网站中,使用 访问服务器变量 HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"] 如何在Aspnetcore 1.0 Web应用程序中访问ServerVariables? 在控制器内部调试时,this.HttpContext.Features不包含IServerVariablesFeature. 解决方案 好吧,我不会直接回答您的问题.我将尝试阐明为什么此服务器变量不再是问题. " http_accept_language"是一个服务器变量,IIS&.NET用于在ASP.NET框架上促进与应用程序传达内容语言. 回到时代,浏览器不一致,并且不会始终如一地通过Accept-Language标题. 为了填补这一空白,IIS等应用程序服务器必须通过使用标头,用户代理字符串和默认配置的组合来弥补与应用程序相关的内容,从而智能地设置此差距. 我们不再想要
这两个变量之间有什么区别? REMOTE_HOST和REMOTE_ADDR. 解决方案 remote_host涉及客户端的 hostname (即,提出请求的计算机). remote_addr是指客户端的 IP地址. 有时是unsname无法解析,因此remote_host将返回remote_addr或IP地址. 其他解决方案 从 rfc-3875 : remote_addr :必须将Remote_addr变量设置为网络地址 客户端向服务器发送请求. REMOTE_ADDR = hostnumber hostnumber = ipv4-address | ipv6-address ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit ipv6-address = hexpart [ ":" ipv4-address ]
在运行PHP的IIS上,$_SERVER["DOCUMENT_ROOT"]变量是否存在?之前,我以前认为此变量是特定于Apache的,在IIS上,您必须通过字符串操作SCRIPT_NAME和SCRIPT_FILENAME变量来模拟它,但是我现在在IIS上的PHP安装上看到了此变量.是否可以肯定地假设此变量将始终在IIS上可用. 解决方案 可以安全地假设doc root始终在IIS中可用吗?不... $ _ server ['document_root']在IIS上并不总是可用.它必须在配置文件中设置... 如果它是在服务器上配置的,则可以使用它...只需确保您的配置文件不会更改 - 否则您将破坏脚本... 其他解决方案 iis并不总是设置$ _server ['document_root'] 您如何在配置文件中设置它,因此代码的其余部分工作如Apache服务器? 输出$ _server查看您可能可以使用的是什么: echo "
_SER
utmscr 和/或 utmcct 值对于HTTP cookie服务器变量而言是什么意思?它们是首字母缩写还是短暂的? 我们正在使用标题为" system.web.httpexception:无法验证数据"的Elmah错误.在每个Elmah错误消息中,HTTP Cookie Server变量值包含一个称为 utmscr 设置为同一网站的属性,并将 utmcct 设置为该网站上的页面.这是来自Elmah服务器变量转储的HTTP Cookie值的部分. utmccn =(referral)| utmcsr = somewebsite.com | utmcct =/somewebpage.htm | utmcmd = referral; cp = null*; somewebpage.htm页面确实存在于somingwebsite.com上,但目前没有对我们的页面的引用.我们认为错误与查看状态有关.有什么想法吗?谢谢! 解决方案 我的猜测,就像 dr.邪恶,这与Goo
我需要能够使用 HttpContext 中可用的任何东西在 ASP.Net 中从另一个系统中识别出一个系统.我尝试使用许多可用的 ServerVariables,但通常这些系统是从由映像构建的驱动器配置的.因此,由于防火墙的原因,它们的 IP 地址是相同的,并且它们的所有 ServerVariables(浏览器代理、登录用户)都是相同的,我需要找到能够区分不同机器的其他东西.由于该站点使用表单身份验证进行保护,因此必须关闭 Windows 集成身份验证(否则我将有权访问不同的 Logon_User 值). 我没有与 HttpContext 结婚,但在我看来,这是使用代码检索可识别用户信息的唯一方法. 编辑/更新: @Robert Harvey 提供了几个搜索链接,这些链接带来了很多结果,其中大部分都不符合我的要求,出于某种原因(尽管其中还有一些我没有的好主意)以前没想过).首先,我需要能够确定是否有人在防火墙后面切换了机器.因此,我将提供一些代码结构细节,以阐明为什么某
您何时会考虑使用其中一种,为什么? 解决方案 HTTP_HOST是从HTTP请求头 这就是客户端实际用作请求的“目标主机"的内容.SERVER_NAME 在服务器配置中定义.使用哪一个取决于您需要它的用途.但是,您现在应该意识到,一个是客户端控制的值,因此在业务逻辑中使用可能不可靠,另一个是更可靠的服务器控制的值.但是,您需要确保有问题的网络服务器已正确配置了 SERVER_NAME.以 Apache HTTPD 为例,以下是其文档的摘录: 如果未指定 ServerName,则服务器尝试通过对 IP 地址执行反向查找来推断主机名.如果 ServerName 中没有指定端口,则服务器将使用传入请求中的端口.为了获得最佳的可靠性和可预测性,您应该使用 ServerName 指令指定明确的主机名和端口. 更新:检查 Pekka 对您的问题的回答 后,其中包含指向 这对我有用. 总结,SERVER_NAME 更可靠,但您依赖服务器配置!
我打算用 codeigniter 开发一个网站.但不确定我要使用的方法是否是最好的方法.同一站点将有许多附加域.但内容将根据用于访问该站点的域进行过滤. 例如,如果用户来自域siteusa.com 然后内容将显示过滤相应的特定用户.如果用户来自 siteuk.com/sitechina.com 内容将被相应地过滤等等... 我打算做这样的事情来检测 url 并提供内容 $ref = getenv("HTTP_REFERER"); echo $ref; 我看到的另一个问题是 codeigniter 的 baseurl 设置,但我看到了一个解决方案 这里 /* |-------------------------------------------------------------------------- | Base Site URL |-----------------------------------------------------------