2008-10-10 124 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,這是一個很好的大洞,放棄你的分貝

相關問題