做一点贡献:翻译了一篇科普文章,请大家批评指正

javenfang 2002-10-02 12:30:46
取得变量:在 PHP 4.2+ 中递交的 input value



  大量的文章在发表,因为它关于 PHP4.2+ 与 register_globals。

  如果你有一段程序以前工作得很好,而你升级了 PHP 就运行得有问题,请继续读下去。

  以前,在 PHP 中,你可能有这样的一个 FORM:

<form action="page.php" method="post">
<input type="text" name="variable">
<input type="submit">
</form>

  你可以很容易地访问 input value:

PHP:

<?php
echo $variable;
?>

  问题就出现在 PHP4.2 之后。在安装时,PHP 默认设置egister_globals 为 off 。register_globals 是在 PHP 的设置文件 php.ini 中允许上述变量用法的设置。PHP4.2 版本之前,register_globals 默认设置为 "on" 。然而,为了防止潜在的不安全代码, PHP 组织决定把 register_globals 默认设置为 "off"。

  这意味着上面的代码不再工作。

  还是用上面的 FORM,我们可以通过以下几种方式访问 input value、

  由于我们是通过 POST 方式递交数据的,可以用像这样用 _POST 数组:

PHP:

<?php
echo $_POST['variable'];
?>

  或者,如果上面的 FORM 用 GET 的方式递交数据,则可以用 _GET 数组取得 input value:

PHP:

<?php
echo $_GET['variable'];
?>

  如果因为某种原因,你不能确定是用的 POST 还是用的 GET 方式递交 FORM 的,你可以简单地用 _REQUEST 数组:

PHP:

<?php
echo $_REQUEST['variable'];
?>

  还有一些为 cookies 与 sessions 设置的数组 _COOKIE ,_SESSION,访问方式相同。也还有如 _SERVER, _FILES, _ENV and GLOBALS 等数组。这些数组作为 PHP 的超级全局变量,因为它们在任何地方都是有效的,即使在函数与类库中:

PHP:

<?php
function printPost ()
{
foreach ( $_POST as $key => $value )
echo "\$_POST[$key] => $value<br>\n";
}
?>


  在函数中,为了使用超级全局变量,你不需要写 'global $_POST;' ,它是默认的。

  需要了解更多的信息,查看 PHP online Manual 中的这一页:

http://www.php.net/manual/en/language.variables.predefined.php


_________________
Jason Lotito
PHPComplete.com - Your complete PHP Resource
---------
翻译:javen javen@sina.com
...全文
126 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DFlyingchen 2002-10-03
  • 打赏
  • 举报
回复
呵呵,初学者常见的问题啊,谢谢了
confu 2002-10-03
  • 打赏
  • 举报
回复
感激!
qiushuiwuhen 2002-10-02
  • 打赏
  • 举报
回复
什么是“超级全局变量”?

在调用
echo $variable;
试试看
extract($_REQUEST);
奇遇 2002-10-02
  • 打赏
  • 举报
回复
楼主费心了 :)
_Shakespeare 2002-10-02
  • 打赏
  • 举报
回复
呵呵,谢谢 fajaven (农民)
进精华区

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧