PHP - 表单动作调用自身,如何在1页中显示所有内容?

I have two .php files as such:

test1.php

<html>
<head>
    <title>Sample</title>
</head>
<body>
    <form action="test2.php" method="post">
        Please enter a number <input type="number" name="userNumber"><br>
        <input type="submit">
    </form>
</body>
</html>

test2.php

<html>
<head>
    <title>Sample Display Page</title>
</head>
<body>
<?php   
    $user_number = $_POST["userNumber"];
    echo "You have chosen $user_number";    
?>
</body>
</html>

I want to know how can I get it all to display on a single page, i.e. on the test1.php, without having to have two files.

Your test1.php will need to look like this

<html>
<head>
    <title>Sample</title>
</head>
<body>
    <form action="test1.php" method="post">
        Please enter a number <input type="number" name="userNumber"><br>
        <input type="submit">
    </form>
    <?php
    if(isset($_POST["userNumber"])) { 
        $user_number = $_POST["userNumber"];
        echo "You have chosen $user_number";
    }
    ?>
</body>
</html>

You simply need to remove the action="test2.php" section and combine both pages into one just like the following:

<html>
<head>
    <title>Sample</title>
</head>
<body>
    <form method="post">
        Please enter a number <input type="number" name="userNumber"><br>
        <input type="submit">
    </form>

<?php
    if(isset($_POST['userNumber'])){
        $user_number = $_POST['userNumber'];
        echo "You have chosen $user_number";
    }
?>
</body>
</html>

Pretty simple actually:

   <html>
    <head>
        <title>Sample</title>
    </head>
    <body>
        <?php   
        if(isset($_POST) && isset($_POST['userNumber'])) {
            $user_number = $_POST["userNumber"];
            echo "You have chosen $user_number";    
        }
        ?>
        <form method="post">
            Please enter a number <input type="number" name="userNumber"><br>
            <input type="submit">
        </form>
    </body>
    </html>

set the variables up before the form as placeholders and check for isset

<?php
$user_number = '';
if(isset($_POST["userNumber"])) { 
    $user_number = $_POST["userNumber"];
}
?>

<form action="test2.php" method="post">
    Please enter a number <input type="number" name="userNumber"><br>
    <input type="submit" name="submit">
</form>

<p>You have chosen: <?php echo $user_number ?></p>

Just use isset() for submit button, note that i added name="submit" to your button since it was missing

<html>
<head>
    <title>Sample</title>
</head>
<body>
<?php   
if(isset($_POST['submit'])
{
    $user_number = $_POST["userNumber"];
    echo "You have chosen $user_number";    
} else {
?>
    <form action="test2.php" method="post">
        Please enter a number <input type="number" name="userNumber"><br>
        <input type="submit" name="submit">
    </form>
<?php } ?>
</body>
</html>
<html>
<head>
<title>Sample</title>
</head>

<body>
<?php   
    if (isset($_POST['submitted'])) { 
    $user_number = $_POST["userNumber"];
    echo "You have chosen $user_number";    
    }
else {
?>
<form method="post">
    Please enter a number <input type="number" name="userNumber"><br>
    <input type="submit" name="submitted">
</form>
<?php
}
?>

</body>
</html>

Check if $_POST["userNumber"] isset, and echo the form if it's not.

<html>
<head>
    <title>Sample</title>
</head>
<body>
    <?php
        if(isset($_POST["userNumber"]){
            echo "You have chosen ".$_POST["userNumber"];
        }else{
            echo '<form action="test1.php" method="post">';
            echo 'Please enter a number <input type="number" name="userNumber"><br>';
            echo '<input type="submit">';
            echo '</form>';
        }
    ?>
</body>
</html>

This one is fully tested and allows you to revise the value after submission. You still have to worry about cross-site scripting attacks, etc... but that is outside of the scope of the question.

<html>
<head>
    <title>Sample</title>
</head>
<body>
    <?php
    $user_number = '';
    if (isset($_POST['userNumber'])) {
        $user_number=$_POST['userNumber'];
    ?>
    <p>You have chosen <?php echo $user_number ?></p>
    <?php
    }
    ?>
    <form method="post">
    Please enter a number <input type="number" name="userNumber" value="<?php echo $user_number ?>"><br>
    <input type="submit">
    </form>
</body>
</html>

Sample

<form action="<?php $_PHP_SELF ?>" method="post">
    Please enter a number <input type="number" name="userNumber"><br>
    <input type="submit">
</form>
 </body> </html>