可以在短时间内传播$ _GET变量吗?

时间:2014-02-20 16:35:18

标签: php get

我正在编辑一个由另一个程序员制作的网站,我看到他使用简短的php标签 <?代替<?php 要么 <?=代替<?php echo

有没有办法以短的方式分配$_GET变量? 我看到他正在使用$id而不是$_GET['$id']

我正在将其网站上的域名从www.mydomain.com更改为www.yourdomain.com/folder

问题在这种情况下,在这个地址的页面中显示:

www.yourdomain.com/folder/foto.php?id=http://www.yourdomain.com/folder/img/imagename.jpg

他以这种方式检索id变量:

foto.php:

<html>
  <head>
    <title></title>
    <meta content="">
    <style></style>
  </head>
  <body bgcolor="Black">
  <?
    session_start();
    include "config.php";
$id=strip_tags($id);
    ?>



  <table  align="center"><tr><td>
<img src="<?=$id?>" align="left" border="0">
</td></tr></table>  
  </body>
</html>

的config.php:

<?
$db_host = "??.??.??.??";  
$db_user = "??????";       
$db_password = "?????";   
$db_name = "?????";       

//db connect
$conn = @mysql_connect($db_host,$db_user,$db_password)
or die
("connection error");
$db = @mysql_select_db($db_name,$conn);

?>

但它只适用于旧域,在新域中它无法检索$ id变量!

我知道如果我用$ _GET ['$ id']更改$ id,问题就解决了,但我无法弄清楚它在旧域中是如何工作的!

Old Domain = PHP 4.4.9

New Domain = PHP 5.3.28

1 个答案:

答案 0 :(得分:2)

该变量可用,因为在register_globals中启用了php.ini指令。

基本解释:

register_globals将超级全局数组元素$_REQUEST注册为变量。例如,如果您通过POSTGET请求方法在表单中使用输入字段名id提交值,PHP将自动注册变量$id并分配它是输入字段id的值。

这就是您在旧域中看到的内容。

在较新版本的PHP中,默认情况下禁用(现在已删除),因为它允许任何人将变量注入脚本。

根据the PHP manual,该指令自版本5.4起被删除,但默认情况下已被关闭了相当长的时间。