2008-10-10 85 views
0

我无法从表单中处理值。我需要你的帮助。为什么不发布这些结果?

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);只是输出表单,具有电子邮件,lname,fname字段。而当你处理表单时,动作是一样的,w /表和id通过url传递,所以它的GET就是这样的id和table,对于lname,fname和email,它应该通过post来获取。

编辑:这是形式的标签是什么样的updateForm功能:<form method="post" action="?mode=upd&id='.$id.'&table='.$table.'">

但由于某些原因,它没有发布值。

+0

你应该看一看函数mysql_escape_string而是mysql_real_escape_string和addslashes出于安全原因的。 – 2009-06-11 14:04:34

+0

在使用它之前,您应该对您的ID进行is_numeric检查(无需转义,因为它必须是整数)。 请更新您的代码...其他人会错误地复制/粘贴您在那里的内容。 – 2009-06-11 14:14:56

回答

1

表单的method属性是否设置为post?

<form method = "post" action = "..."> 

而且所有的输入的名称属性设置是否正确?

你看过html输出以确保没有语法错误吗?此外,尝试使用而不是

$_POST

$HTTP_POST_VARS

0

请确保您使用了最新的教程PHP5的最新版本之一。不是一些PHP 3.x的啧啧充满了废弃的函数;-)

这将使你的生活(和我们)轻松许多:P

顺便说一个技巧,这将阻止您不必大此脚本中的SQL注入: ESCAPE EVERY VARIABLE YOU are going to pass!

你不逃离这里的ID,这是一个很好的大洞,放弃你的分贝

相关问题