QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1550|回复: 6

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

[复制链接]
发表于 2004-6-10 21:54:30 | 显示全部楼层 |阅读模式
在“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
发表于 2004-6-11 13:15:15 | 显示全部楼层
要用 $_POST["submit"]
回复

使用道具 举报

 楼主| 发表于 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呢?如何解决?
回复

使用道具 举报

发表于 2004-6-12 15:03:22 | 显示全部楼层
[code:1]$sql="insert into employees (first,last,address,position) values ('$first','$last','$address','$position')"; [/code:1]

这样用:

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

这样应该也可以

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

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

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

是出的结果是:
print str1

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

使用道具 举报

 楼主| 发表于 2004-6-12 17:39:55 | 显示全部楼层
非常感谢,第一种改正的方法可以,第二种不行,为什么大多数教材都还是老的写法呢?老的写法为什么不行?有更简单一点的写法吗?
回复

使用道具 举报

发表于 2004-6-12 18:08:55 | 显示全部楼层
老的写法有安全隐患,不能区分变量的数据是如何得到的。

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

使用道具 举报

 楼主| 发表于 2004-6-12 19:43:20 | 显示全部楼层
谢谢,谢谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 05:13 , Processed in 0.037315 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表