zxhlcc 发表于 2004-6-10 21:54:30

为什么这个PHP程序的变量不显示出来?

在“PHP/MySQL三日通”教程中有一段代码是来检查用户在表格中输入的内容。即用$HTTP_POST_VARS把所有查询参数变量都显示出来,是为了证明PHP确实把所有变量都传给了程序。代码如下:
<html>
<body>
<?php
if ($submit) {
// 处理表格输入
while (list($name, $value) = each($HTTP_POST_VARS)) {
echo "$name = $value<br>\n";
}
} else{
// 显示表格
?>
<form method="post" action="<?php echo $PATH_INFO?>">
名:<input type="Text" name="first"><br>
姓:<input type="Text" name="last"><br>
住址:<input type="Text" name="address"><br>
职位:<input type="Text" name="position"><br>
<input type="Submit" name="submit" value="输入信息">
</form>
<?php
} // end if,if结束
?>
</body>
</html>

我运行这个代码后,在表单中添了数据,可是提交数据后程序并没有执行if ($submit)之内的$HTTP_POST_VARS函数,也就是说提交了表单后,程序判断$submit不存在。各位PHP前辈请说说这是为什么?。
测试平台为win2000server+apache_2.0.49+php-4.3.6+mysql-4.0.18

jiangtao9999 发表于 2004-6-11 13:15:15

要用 $_POST["submit"]

zxhlcc 发表于 2004-6-11 19:46:48

谢谢,按你说的我把if ($submit)改成if ($_POST["submit"])后程序可以正常运行了,请问下面的代码又该如何该呢?因为下面代码加入数据库的值都是空的。
if($_POST["submit"]){
$db=mysql_connect("localhost","root","");
mysql_select_db("mydb",$db);
$sql="insert into employees (first,last,address,position) values ('$first','$last','$address','$position')";
$result=mysql_query($sql,$db);
mysql_close($db);
echo "Thank you,it ok!!!";
}

另外请问我在Mysql中有一个auto_increment 变量ID,比方增加到4后,再删除ID 4,如果再增加一个ID,它变成了5,为什么不是4呢?如何解决?

jiangtao9999 发表于 2004-6-12 15:03:22

$sql="insert into employees (first,last,address,position) values ('$first','$last','$address','$position')";

这样用:

$sql="insert into employees (first,last,address,position) values (' ".$_POST['first']." ',' ".$_POST['last']." ',' " . $_POST['address']. " ',' ".$_POST['position']." ')";

这样应该也可以

$sql="insert into employees (first,last,address,position) values (`$_POST['first']`,`$_POST['last']`,`$_POST['address']`,`$_POST['position']`)";

我记得在用 "" 引起来的字符串里,php 会自动把变量进行转换。
也就是说:

$a="str1";
echo "print $a";

是出的结果是:
print str1

其实你只要 echo 能显示出正确的 SQL 语句就可以了~~

zxhlcc 发表于 2004-6-12 17:39:55

:roll: 非常感谢,第一种改正的方法可以,第二种不行,为什么大多数教材都还是老的写法呢?老的写法为什么不行?有更简单一点的写法吗?

jiangtao9999 发表于 2004-6-12 18:08:55

老的写法有安全隐患,不能区分变量的数据是如何得到的。

比如说:
你的代码有 session 变量 admin 。
为 “1” 时表示有管理员权限。
用老的方法,别人可以在 url 后面加上 &admin=1
这样代码里面 admin 的值就是“1”,于是就有了 admin 的权限。

zxhlcc 发表于 2004-6-12 19:43:20

谢谢,谢谢!!! :roll:
页: [1]
查看完整版本: 为什么这个PHP程序的变量不显示出来?