PHP中'?','()'和':'符号的含义是什么?

Mac*_*Mac 4 php variables definition

我终于想起了要问的问题.我从来没有真正得到过什么:和?当像这样定义一个变量时:

$ip = ($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)

你可以看到有吗?和:和()

谁能给我一个关于它们的原因和方式的简要细节?

Joh*_*lla 24

表达式如下所示:

$var = (condition) ? if_true : if_false
Run Code Online (Sandbox Code Playgroud)

?:三元运算符.如果condition为true,$var将赋值if_true; 否则将分配该值if_false.

在您的特定情况下:

  • 如果存在,则将X-Forwarded-ForHTTP标头的值分配给$ip它; 否则它使用远程地址本身.

  • 这通常用作获取客户端IP地址的方法.但请注意,通常这是检查客户身份的可怕方法.请参阅此StackOverflow问题.(如果您需要确保用户不互相辱骂,请使用会话cookie或某种身份验证.)

  • 而且,它HTTP_X_FORWARDED_FOR不是HTTP_X_FORWARD_FOR.

  • 最后,HTTP_X_FORWARDED_FOR可以是以逗号分隔的IP地址列表,而不仅仅是单个IP​​地址,因此这可能是一个错误.