0

フォームにファイルのアップロードと入力フィールドがあります.ファイルが正常にアップロードされた場合、ファイルのアップロードの送信ボタンを非表示または無効にしたいです...同じページにエラーメッセージを表示する方法について本当に混乱していますエラーがなければ「Thank you」ページに進みます。PHPを使用してファイルのアップロードを検証しています。ファイルのアップロードが成功した場合に送信ボタンを無効にする方法についてのアイデアはありますか? または、ファイルアップロードの同じページにエラーメッセージを表示しながら、ファイルアップロードと入力フィールドを一緒に処理する方法を教えてください...

ユーザーが送信を押したときではなく、ファイルが正常にアップロードされた場合にのみ、ファイルアップロードの送信ボタンを非表示にすることに注意してください。

<html>
<head>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Choose Photo:</label>
<input type="file" name="file" onchange="file_selected = true;">
<input type="hidden" name="submited" value="true" /> 
<input type="submit" name="submit" value="Submit" >
</form>


<form action="Send.php" method="post">
First Name:<input type="text" name="fname" required><br>
Last Name:<input type="text" name="lname" required><br>
Choose Username:<input type="text" name="username" required><br>
Age:<input type="text" name="age" required><br>
<input type="submit" value="Submit" name="submit">
</form>
</body>
</html>

ファイルのアップロードを処理する php コードは次のとおりです。ファイルのアップロード用と他の入力フィールド用の 2 つの送信ボタンがあります。この php コードは、html フォームと同じページにあります。

<?php
ini_set( "display_errors", 0);
if(isset($_REQUEST['submited'])) {

// your save code goes here


$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2097152)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "";

if (file_exists("images/" . $_FILES["file"]["name"]))
{
echo "<font color='red'><b>We are sorry, the file you trying to upload already exists.</b></font>";
  }

else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"images/" . $_FILES["file"]["name"]);
echo "<font color='green'><b> Success! Your photo has been uploaded.</b></font>";
}
}
}
else
{
echo "<font color='red'><b>We are sorry, the file you trying to upload is not an image or it exceeds 2MB in size.</b></font><br><font color='blue'><i>Only images under size of 2MB are allowed</i></font>.";
}
}
?>
4

3 に答える 3

1

Jquery AJAX 呼び出しを使用してデータを PHP スクリプトに送信します。次に、応答からブール値を取得して、ボタンを表示するかどうかを決定します。

于 2013-01-01T04:07:49.293 に答える
0

などの簡単な方法でできます。

    <html>
    <head>
    </head>
    <body>
    <?php
$sub=0;
    ini_set( "display_errors", 0);
    if(isset($_REQUEST['submited'])) {

    // your save code goes here

    $allowedExts = array("jpg", "jpeg", "gif", "png");
    $extension = end(explode(".", $_FILES["file"]["name"]));
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 2097152)
    && in_array($extension, $allowedExts))
    {
    if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
    echo "";

    if (file_exists("images/" . $_FILES["file"]["name"]))
    {
    echo "<font color='red'><b>We are sorry, the file you trying to upload already exists.</b></font>";
      }

    else
    {
    move_uploaded_file($_FILES["file"]["tmp_name"],
    "images/" . $_FILES["file"]["name"]);
    $sub= 1;
    echo "<font color='green'><b> Success! Your photo has been uploaded.</b></font>";
    }
    }
    }
    else
    {
    echo "<font color='red'><b>We are sorry, the file you trying to upload is not an image or it exceeds 2MB in size.</b></font><br><font color='blue'><i>Only images under size of 2MB are allowed</i></font>.";
    }
    }
    ?>
    <form action="" method="post" enctype="multipart/form-data">
    <label for="file">Choose Photo:</label>
    <input type="file" name="file" onchange="file_selected = true;">
    <input type="hidden" name="submited" value="true" />

    <input type="submit" name="submit" value="Submit" >
    </form>


    <form action="Send.php" method="post">
    First Name:<input type="text" name="fname" required><br>
    Last Name:<input type="text" name="lname" required><br>
    Choose Username:<input type="text" name="username" required><br>
    Age:<input type="text" name="age" required><br>
<?php
if($sub==0)
{
?>
    <input type="submit" value="Submit" name="submit">
<?php
}
?>
    </form>
    </body>
    </html>

あなたのコードは正しいと思います。最初に変数を初期化しました$sub=0。1 に設定されている場合succesfully uploaded

End,$subがゼロでない場合、送信は表示されません。

したがって、ファイルが正常にアップロードされた場合。ボタンが表示されません。

于 2013-01-01T04:09:31.197 に答える
0
<form action="**somepage.php**" method="post" enctype="multipart/form-data">
    <label for="file">Choose Photo:</label>
    <input type="file" name="file" onchange="file_selected = true;">
    <input type="hidden" name="submited" value="true" /> 
    <input type="submit" name="submit" value="Submit" >
    </form>

そこから、さまざまなステータスを示す変数をメイン ページに渡し、変数に基づいてエラー メッセージを表示します。

input type file変数を非表示の入力に保存し、ページの読み込み時に値を取得することを本当に無効にする必要がある場合は、 ....を使用Jqueryして無効にします。input type file

入力タイプフォームの前に条件をjquery与えるだけです

    if($_GET['status']=successful)
    {
    <input type=file readonly="readonly" />
    }
   else
    {
    <input type=file />
    }
于 2013-01-01T04:58:48.683 に答える