簡體   English   中英

PHP單頁表單處理問題

[英]Php Single page form processing issue

(對不起,我的英語不好)

好吧,我的代碼中有3個錯誤。

錯誤:

  1. 首先顯示:注意:未定義索引:461行上的C:\\ xampp \\ htdocs \\ evantechbd \\ index.php中的表單。當我運行此表單時。
  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";
        }
    }
}
?>

非常感謝您的幫助!!
康塔

  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. 是的,如果您刷新代碼,它將再次進行發布並插入。 您只需要做一些控制。 但是這些事情取決於您的數據。

一種。 在數據庫中創建唯一的鍵索引

b。 插入之前檢查現有記錄。

C。 幾秒鍾后,一旦用戶看到成功的消息,將頁面重定向到同一頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM