PHP:按下按钮之前按下按钮的效果

时间:2019-03-25 19:30:55

标签: php

我有一个非常简单的PHP代码,应该在按下按钮后立即输出“ Hi”。第一次打开页面时效果很好-页面上只有一个按钮,我按下它并显示“嗨” 当我尝试刷新页面时出现问题。 “嗨”不会消失。

我尝试了几种浏览器并刷新了页面,而没有使用现金。这没有帮助。唯一有帮助的是在新标签页中打开页面。然后没有“嗨”-直到我第一次按下按钮。

<form method="post">
    <input type="submit" name="test" id="test" value="RUN" /><br/>
</form>

<?php

function testfun()
{
echo 'Hi ';
}


if(array_key_exists('test',$_POST)){
   testfun();
}

?>

3 个答案:

答案 0 :(得分:1)

放置正确的操作页面,或将其放置为相同的网址(但仍然放置标签)。

<form method="post" action="page_here.php">
    <input type="submit" name="test" id="test" value="RUN" /><br/>
</form>

尝试使用isset()检查。

function testfun() { echo 'Hi '; }

if ( isset($_POST) && isset($_POST['test']) ) {
    testfun();
}

答案 1 :(得分:0)

请参见Post/Redirect/Get。提交后,您将无法立即显示确认消息,否则刷新浏览器将始终发送完全相同的POST。

相反:

  • 提交表单后,将状态保存到会话中,然后使用header进行重定向,
  • 在表单显示中,检查会话是否具有上述状态,如果显示 您的消息,然后从会话中清除状态。

以下示例:

<!DOCTYPE html>
<html>

<head>
    <style>
        body {
            text-align: center;
        }
        #btn {
            width: 50%;
            margin-bottom: 10px;
        }

        #audioplayer {
            width: 50%;
            margin-bottom: 10px;
        }

        #mp3 {
            width: 50%;
            margin-bottom: 10px;
        }

        #txt {
            width: 50%;
            margin-bottom: 10px;
        }

        #mytextbox {
            width: 50%;
            margin-bottom: 10px;
        }
    </style>
</head>

<body>

    <button id="btn" type="button">Load external MP3 and TXT urls from input boxes to the audioplayer and textbox</button>
    <button id="clearbtn" type="button">Clear MP3 and textarea contents</button>

    <audio id="audioplayer" controls>
        <!--<source src="https://www.w3schools.com/html/horse.mp3" type="audio/mpeg"> Your browser does not support the audio element.-->
        <source id="mp3url" src="" type="audio/mpeg"> Your browser does not support the audio element.
    </audio>

    <input name="mp3" type="url" id="mp3" class="mp3" placeholder="URL of MP3">
    <input name="txt" type="url" id="txt" class="txt" placeholder="URL of TXT file">

    <textarea id="mytextbox" rows="10" cols="50" placeholder="Textarea, soon to hold external .txt content"></textarea>

    <!--
    JQUERY
    $('#mytextbox').load("https://www.w3.org/TR/PNG/iso_8859-1.txt");
    $("#mp3").keyup(function(){
        var inputVal = $(this).val();
        $("#mp3url").attr("src", inputVal);
    });

    EXTERNAL FILE URLS
    https://www.w3schools.com/html/horse.mp3
    https://www.w3.org/TR/PNG/iso_8859-1.txt

    TESTS
    https://jsfiddle.net/2ogfxqLu/1/
    -->

</body>

</html>

答案 2 :(得分:-1)

我认为您不了解发布的工作原理,当您将数据发送到页面时,数据的生存时间与该页面一样长。也就是说,当您重新加载页面时,数据将因为易失而消失。如果要保留数据,则需要将其存储在会话中。

还请注意,刷新页面时,它会重新提交表单,如果您单击地址栏并按Enter,您将获得空白!

请查看会话,它将解决您的问题:PHP Manual