Php单页表单处理问题

问题描述:

(对不起,我的英语不好)Php单页表单处理问题

嗯,我的代码有3个错误。

错误的:

所有的
  1. 首先,它的显示:注意:未定义指数:形式在C:\ XAMPP \ htdocs中\ evantechbd \的index.php上线461,当我运行这种形式。
  2. 如果有任何错误发现它显示错误消息,好吧,但正确的字段是空的。例如:在这个表单中有4个字段。 a)上传图像,b)选择讨论c)主题和d)消息。假设你上传图片,选择讨论并写出主题,但忘记写信息。然后显示“Message Required”,每个字段都是空的。我不希望空的领域是正确的。
  3. 成功提交表单后,显示“讨论已提交”。但之后,如果我刷新页面,它将数据发送到数据库。但我没有点击提交按钮。为什么会发生?

这里是我的代码:

<?php 
if ($_POST['form'] == "Submit") { 
    $err  = array(); 
    $filed  = addslashes($_FILES['file']['tmp_name']); 
    $img_named = addslashes($_FILES['file']['name']); 
    $img_type = addslashes($_FILES['file']['type']); 
    @$imgd = addslashes(file_get_contents($_FILES['file']['tmp_name'])); 

    function getExtension($str) 
    { 
     $i = strrpos($str, "."); 
     if (!$i) { 
      return ""; 
     } 
     $l = strlen($str) - $i; 
     $ext = substr($str, $i + 1, $l); 
     return $ext; 
    } 
    $extension  = getExtension($img_named); 
    $extension  = strtolower($extension); 
    $image_named_uniq = uniqid() . '.' . $extension; 
    $upload_path_dis = 'user/manage/discussionimg/'; 

    $diss = $_POST['type']; 
    $sub = $_POST['sub']; 
    $msg = $_POST['msg']; 
    $date = "On " . date("F Y h:i:s A"); 

    if (!isset($_SESSION['uname'])) 
     $err[] = "You need to login"; 

    else { 
     $uname = $_SESSION['uname']; //session username 

     if (empty($sub) && empty($msg) && empty($filed)) 
      $err[] = "All field required"; 
     else { 
      if (empty($sub)) 
       $err[] = "Subject Requried"; 

      if (empty($msg)) 
       $err[] = "Message Requried"; 

      if (empty($filed)) 
       $err[] = "SORRY, you have to be upload a image"; 
     } 
    } 

    if (!empty($err)) { 
     foreach ($err as $er) { 
      echo "<font color=red>$er</font><br/>"; 
     } 
    } 

    else { 
     $sql = mysql_query("INSERT INTO discussion VALUES ('', '$imgd', '$image_named_uniq', 
'$diss', '$sub', '$msg', '$uname', '$date') "); 
     if (!$sql) 
      echo "Can't submit your discussion" . mysql_error(); 

     if (!move_uploaded_file($_FILES['file']['tmp_name'], $upload_path_dis . $image_named_uniq)) { 
      die('File Not Uploading'); 
     } else { 
      echo "Discussion was submitted"; 
     } 
    } 
} 
?> 

非常感谢您的帮助!
Kanta。

+0

你真的需要缩进。首先我看到这个'if($ _POST ['form'] ==“Submit”) {',wheres the end brace? – Matt 2012-01-05 08:38:40

+0

您在第261行报告错误 - 但您的代码只有120行 - 哪一行报告错误? – ManseUK 2012-01-05 08:39:11

+0

格式化最好我可以...一个if语句中的函数是合法的吗? – ManseUK 2012-01-05 08:44:23

  1. 试着改变你的第一个,如果条件如下

    if (isset($_POST['submit']))

  2. 现在大多数网站的使用JavaScript使用客户端验证。你可以使用jquery框架来让事情变得更简单。但是,由于您已经在POST事件之后使用验证。您必须按照以下代码将值设置为相关字段。它会设定主题的价值。

    <input type="text" name="sub" value="<?php if(isset($_POST["sub"])) echo $_POST["sub"]; ?>" size="46"/>

  3. 是,如果你刷新的代码会再次这样做后,并插入。你必须做一些控制。然而这些事情取决于你的数据。

a。在数据库中制作唯一的密钥索引

b。插入前检查现有记录。

c。一旦用户看到成功的消息,几秒钟后将您的页面重定向到同一页面。

+0

谢谢你的建议。 – 2012-01-05 08:55:46

+0

有人请在我的第二点格式化HTML内容。 – 2012-01-05 08:57:04

+0

@ Umme。不用谢。 – 2012-01-05 08:57:52