Php单页表单处理问题

Php单页表单处理问题,php,Php,(对不起,我的英语不好) 嗯,我的代码中有3个错误 错误: 首先,在第461行的C:\xampp\htdocs\evantechbd\index.php中显示:注意:未定义索引:表单。当我运行此表单时 若发现任何错误,则显示错误消息,但正确字段为空。示例:此表单中有4个字段。a) 上传图片,b)选择讨论c)主题和d)消息。假设您上传了一张图片,选择了一个讨论并写了一个主题,但忘记了写消息。然后显示“messagerequired”,每个字段都是空的。我不想要正确的空字段 成功提交表单后,将显示“

(对不起,我的英语不好)

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

错误:

  • 首先,在第461行的C:\xampp\htdocs\evantechbd\index.php中显示:注意:未定义索引:表单。当我运行此表单时
  • 若发现任何错误,则显示错误消息,但正确字段为空。示例:此表单中有4个字段。a) 上传图片,b)选择讨论c)主题和d)消息。假设您上传了一张图片,选择了一个讨论并写了一个主题,但忘记了写消息。然后显示“messagerequired”,每个字段都是空的。我不想要正确的空字段
  • 成功提交表单后,将显示“已提交讨论”。但在此之后,如果我刷新页面,它会将数据发送到数据库。但我没有点击提交按钮。为什么会这样 这是我的密码:

    <?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";
            }
        }
    }
    ?>
    
    
    
  • 尝试更改第一个if条件,如下所示

    if(设置($\u POST['submit'])

  • 现在大多数网站都使用javascript进行客户端验证。您可以使用jquery框架使事情变得更简单。但是,因为您已经在POST事件之后使用了验证。您必须将相关字段的值设置为以下代码。它将设定主题的价值


    您确实需要缩进。首先,我看到了这个
    if($\u POST['form']==“Submit”){
    ,结束括号在哪里?你在第261行报告了一个错误-但是你的代码只有120行-哪一行报告了错误?格式最好?if语句中的函数是合法的吗?@ManseUK:绝对合法。通常,为了向后兼容:
    if(!function_exists('base64_encode')){function base64_encode(){}
    @ManseUk,也有很多代码,但我只放了表单处理代码,只做客户端验证并不是最好的做法。你总是需要服务器端验证,因为你可以绕过客户端验证,这可能会导致奇怪的效果。总是同时做这两件事。客户端很好让用户看到错误在提交表单之前。是的,同意。两种验证都是必需的。我需要说的是,如果你需要完美地完成这项工作,你必须使用javascript验证。如果你只使用服务器端验证,客户端只会在填写和提交所有详细信息后看到错误。