第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP提交的兩個HTML表單互相觸發(fā)

PHP提交的兩個HTML表單互相觸發(fā)

慕標(biāo)琳琳 2023-10-24 21:14:56
我在一頁上有 2 個表格,但是當(dāng)我按下“提交”按鈕時,另一個表格就會被執(zhí)行。<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">  Name: <input type="text" name="fname">  <input type="submit" name="getNameSubmit"></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {    // collect value of input field    if(isset($_REQUEST['fname']) && $_REQUEST['fname']!="")        {            $name = htmlspecialchars($_REQUEST['fname']);              if (empty($name)) {                echo "Hello dear user.";            } else {                echo "Hello $name";            }    }}?>和<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">  Full text: <input type="text" name="stringtoreplace" value="">  Word(s) to change: <input type="text" name="wordstochange" value="">  Change to: <input type="text" name="wordstoinput" value="">  <input type="submit" name="wordReplaceSubmit"></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {    // collect value of input field -- the if(isset) stops a pre-comparison that throws an E_NOTICE level error    if(isset($_REQUEST['stringtoreplace']) && $_REQUEST['stringtoreplace']!="")    {     $stringoutput = htmlspecialchars($_REQUEST['stringtoreplace']);    }    if(isset($_REQUEST['wordstochange']) && $_REQUEST['wordstochange']!="")    {     $tochange = htmlspecialchars($_REQUEST['wordstochange']);    }    if(isset($_REQUEST['wordstoinput']) && $_REQUEST['wordstoinput']!="")    {     $changeto = htmlspecialchars($_REQUEST['wordstoinput']);    }    if (empty($stringoutput)) {        echo "Please enter your text and the words to change.";    } else {        echo str_replace($tochange, $changeto, $stringoutput);    }}?> 如何在不觸發(fā)另一個的情況下讓其中之一采取行動?功能和位置不是這里的一個因素,我只是在做一些練習(xí),但如果能了解為什么會發(fā)生這種情況以及如何解決,那就太好了。
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

<?php echo $_SERVER['PHP_SELF'];?>給出當(dāng)前的 URL,因此因為它們位于同一頁面,所以會導(dǎo)致問題。您可以通過檢查頁面Ctrl + Shift + i然后單擊ElementsChrome 來檢查這一點。


一種解決方案可能是為兩個表單提供不同的 URL 或在發(fā)布請求上使用參數(shù)。例如<?php echo $_SERVER['PHP_SELF'].'?form=form1';?>-&<?php echo $_SERVER['PHP_SELF'].'?form=form2';?>


if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if(isset($_GET['form'])){

        if($_GET['form'] == 'form1'){

            //code for form1

        }else{

            //code for form2

        }

    }

}


查看完整回答
反對 回復(fù) 2023-10-24
?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

好吧,讓我們開始討論為什么會發(fā)生這種情況。


HTML 的參數(shù)action告訴瀏覽器使用表單數(shù)據(jù)發(fā)送 POST 請求的 URL。在您的例子中,它是$_SERVER['PHP_SELF'],這是當(dāng)前的 PHP 腳本。您對這兩種形式使用相同的內(nèi)容。


當(dāng)提交其中一份表單時,您的 PHP 腳本將被調(diào)用,并且腳本中的所有 PHP 都會被執(zhí)行。第一部分(第一個表單之后的部分)檢查if ($_SERVER["REQUEST_METHOD"] == "POST"),確定這是一個 POST 請求,并嘗試繼續(xù)。之后,第二部分(第二個表單之后的部分)使用完全相同的檢查,確定是的,這是一個 POST 請求,并嘗試繼續(xù)進行。


理想情況下,使用兩個不同的頁面來處理兩種不同的表單會更干凈;但如果您希望將所有內(nèi)容保留在同一頁面中,則可以使用幾個不同的選項來區(qū)分兩者。


1) 按照@sauhardnc 的建議,在每個表單的操作屬性中使用不同的查詢參數(shù)。表格看起來像:


<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>?form=form1">

...

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>?form=form2">

而 PHP 端會做類似的事情


if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if ($_GET['form'] == 'form1') {

        // code for form1

    } else {

        // code for form2

    }

}

2) 在每個表單中使用不同的輸入。表格看起來像:


<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

    ...

    <input type="hidden" name="form" value="form1">

</form>

...

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

    ...

    <input type="hidden" name="form" value="form2">

</form>

而 PHP 端會做類似的事情


if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if ($_REQUEST['form'] == 'form1') {

        // code for form1

    } else {

        // code for form2

    }

}


查看完整回答
反對 回復(fù) 2023-10-24
  • 2 回答
  • 0 關(guān)注
  • 183 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號