繁体   English   中英

双重表格不会提交第二份表格

[英]Double form will not submit second form

嗨,我有两个HTML表单,一个提交JavaScript函数,第二个提交一个表单,但是第二个表单不起作用,我不确定这是表单还是帖子页可以提供任何帮助。

一种形式发送电子邮件,这是正确发送电子邮件,将正确的数据发送到正确的电子邮件地址。

第二种形式是要上传文件,它似乎根本不执行任何操作,现在屏幕上显示了错误,但我尝试了捕获,但未显示任何内容,我也查看了日志,但未显示任何内容, “M

HTML

        <div id="loginborder">


        <form id ="upload" enctype="multipart/form-data" action="upload_logo.php" method="POST">
                        <input name="userfile" type="file" />
                        <input type="submit" onsubmit="alert()"  value="dont press" disabled>
        </form>

            <div id="login">
                <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
                    <input type="hidden" name="subject" value="Can you create me a Contributors account">
                    <input type="text" name="first_name" id="first_name" placeholder="Name">
                    <input type="text" name="company" id="company" placeholder="Company Name">
                    <input type="checkbox" id="tc" onclick= "checkbox()">
                    <input type="submit" id="submit" onsubmit="alert()" name="submit" value="Register" disabled>
                </form>



    </div>
        </div>

        <?php 
            }
            else
            // the user has submitted the form
            {
            // Check if the "subject" input field is filled out
                if (isset($_POST["subject"]))
                {
                    sleep(5);
                    $subject = $_POST["subject"];
                    $first = $_POST["first_name"];
                    $company = $_POST["company"];
                    $therest = "First name= $first" . "\r\n" . "Company= $company" . "\r\n";          
                }
                    echo "$therest <br>";
                    $first = wordwrap($first, 70);
                    mail("careersintheclassroom01@gmail.com",$subject,$name,$therest,"subject: $subject\n");
                    echo "Thank you for sending us feedback";
                    header( "refresh:5;url=index.php" );
            }
        ?>
    </body>
</html>

JavaScript的

<script type="text/javascript">

                function alert() 
                {
                document.getElementById("upload").submit();
                }

                function checkbox(){
                    if (document.getElementById("tc").checked == true)
                        document.getElementById("submit").disabled = false;
                    else
                        document.getElementById("submit").disabled = true;
                }

                $('input[placeholder],input[placeholder],input[placeholder],input[placeholder],input[placeholder]').placeholder();
            </script>

Upload_Logo.php

<html>
    <head>
    </head>
</html> 

<?php
    $uploaddir = "./images/"; 

    echo $uploaddir;
    mkdir($uploaddir, true);
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    echo "<br />";
    echo " <b>Your media has been uploaded</b><br /><br /> ";
?>

第二个表单上的<?php echo $_SERVER["PHP_SELF"];?>在页面底部调用php,这是正在运行的php,当前无法正常工作的upload_logo.php将是任何帮助非常感激

您正在尝试一次提交2个表格。 这是行不通的,因为您的浏览器一次只能定向到一页,因此您提交的联系表单取消了使用JavaScript提交上传表单的尝试。 我建议您将文件输入移到与联系人字段相同的表单中,并在“用户已提交表单”部分中对它们进行处理。

这样的事情应该可以解决问题:

<?php
if (!isset($_POST["submit"]))
{
    ?>
    <div id="loginborder">
        <div id="login">
            <form enctype="multipart/form-data" method="POST">
                <input name="userfile" type="file" />
                <input type="hidden" name="subject" value="Can you create me a Contributors account">
                <input type="text" name="first_name" id="first_name" placeholder="Name">
                <input type="text" name="company" id="company" placeholder="Company Name">
                <input type="checkbox" id="tc" onclick="checkbox()">
                <input type="submit" id="submit" name="submit" value="Register" disabled>
            </form>
        </div>
    </div>

    <?php 
        }
        else
        // the user has submitted the form
        {
        // Check if the "subject" input field is filled out
            if (!empty($_POST["subject"]))
            {
                sleep(5);
                $subject = $_POST["subject"];
                $first = $_POST["first_name"];
                $company = $_POST["company"];
                $therest = "First name= $first" . "\r\n" . "Company= $company" . "\r\n";          
                echo "$therest <br>";
                $first = wordwrap($first, 70);
                mail("careersintheclassroom01@gmail.com",$subject,$name,$therest,"subject: $subject\n");
                echo "Thank you for sending us feedback";
                header( "refresh:5;url=index.php" );
            }

            if (isset($_FILES['userfile']['name'])) {
                $uploaddir = "./images/"; 
                if (!file_exists($uploaddir)) {
                    mkdir($uploaddir, true);
                }
                $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
                move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                echo "<br />";
                echo " <b>Your media has been uploaded</b><br /><br /> ";
            }
        }
    ?>
</body>

$uploadfile = ...之后尝试此操作

move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);

当您提交第二种形式的电子邮件时,由于将触发if(isset($_POST["subject"]))条件,因此将生成电子邮件,并且该代码将遵循以下命令。

但是,当您提交第一个表单时,它将调用onsubmit="alert();函数,因此该函数再次提交相同的表单。

function alert() 
                {
                document.getElementById("upload").submit();
                }

所以您只是触发了永无止境的循环。

我的解决方案是

<script type="text/javascript">
function alert() 
                {


                function checkbox(){
                    if (document.getElementById("tc").checked == true)
                        document.getElementById("submit").disabled = false;
                    else
                        document.getElementById("submit").disabled = true;
                }
                 }

                $('input[placeholder],input[placeholder],input[placeholder],input[placeholder],input[placeholder]').placeholder();
            </script>

我不确定您的要求是100%。 希望你能明白我的意思。 GL!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM