Php单页表单处理问题


Php Single page form processing issue

(抱歉我英语不好)

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

错误:

  1. 首先显示:注意:第461行C:''examplep''htdocs''evantechbd''index.php中的未定义索引:form。当我运行此表单时
  2. 如果发现任何错误,则显示错误消息,但correct字段为空。示例:在这个表单中有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";
        }
    }
}
?>

非常感谢你的帮助
坎塔。

  1. 尝试更改您的第一个if条件如下

    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。一旦用户看到成功的消息,几秒钟后将您的页面重定向到同一页面。