处理完表单后,我很难从表单中获取值。我需要你的帮助。
function updateUser($table, $id) {
if($_POST) {
processUpdate($table, $id);
} else {
updateForm($table, $id);
}
}
function processUpdate($table, $id) {
print $table; //testing
print $id; //testing
$email=addslashes($HTTP_POST_VARS['email']);
$lname=addslashes($HTTP_POST_VARS['lname']);
$fname=addslashes($HTTP_POST_VARS['fname']);
print $lname;
//which table do we update
switch($table) {
case "maillist":
$result = mysql_query("UPDATE $table SET email='$email', lname='$lname', fname='$fname' WHERE id='$id'")
or die(mysql_error());
break;
}
}
函数updateForm($ table,$ id);只是输出表单,具有email,lname,fname字段。当您处理表单时,操作是相同的,通过URL传递了表和ID,因此GET就是该ID和表,对于lname,fname和email,它应该通过post来获取它。 。
编辑:这是updateForm函数的表单标记:<form method="post" action="?mode=upd&id='.$id.'&table='.$table.'">
但是由于某些原因,它不会发布值。
表单的method属性是否设置为post?
<form method = "post" action = "...">
并且所有输入的name属性都设置正确吗?
您是否查看了html输出以确保没有语法错误?另外,请尝试使用
$_POST
代替
$HTTP_POST_VARS
[请确保您使用的是最新的PHP5版本之一的最新教程。没有一些PHP 3.x充满了不推荐使用的功能;-)
这将使您(以及我们)的生活更加轻松:P
另外,还有一个技巧可以防止您在此脚本中进行大量的SQL注入:您要通过的每一个变种!
您不会在此处逃避ID,这是删除数据库的一个巨大漏洞