我正在编辑一个由另一个程序员制作的网站,我看到他使用简短的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
答案 0 :(得分:2)
该变量可用,因为在register_globals
中启用了php.ini
指令。
基本解释:
register_globals
将超级全局数组元素$_REQUEST
注册为变量。例如,如果您通过POST
或GET
请求方法在表单中使用输入字段名id
提交值,PHP将自动注册变量$id
并分配它是输入字段id
的值。
这就是您在旧域中看到的内容。
在较新版本的PHP中,默认情况下禁用(现在已删除),因为它允许任何人将变量注入脚本。
根据the PHP manual,该指令自版本5.4起被删除,但默认情况下已被关闭了相当长的时间。