如何在html中显示php表单结果,如果php处理不在同一页面中而不使用ajax


How to display php form result in the html if php processing is not in the same page without using ajax?

假设我在form.php文件中有这个表单。

<form action="process.php" method="POST">
<input type="text" name="message">
<input type="submit" value="Submit">
</form>
<span class="result"></span>

process.php包含

<?php 
if(isset($_POST['message'])){
  $message = $_POST['message'];
  if(!empty($message)){
    echo 'Your message: '.$message;
  }else{
    echo 'Please enter some message.';
  }
}

现在,如果我想在result类的form.php的span标签中显示process.php的输出,我要么需要使用ajax,要么会话/cookie或文件处理。还有别的办法吗?

您可以简单地将代码放在process.php文件中form span标记内。

<form action="form.php" method="POST">
<input type="text" name="message">
<input type="submit" value="Submit">
</form>
<span class="result">
<?php 
    if(isset($_POST['message']))
    {
        $message = $_POST['message'];
        if(!empty($message))
        {
            echo 'Your message: '.$message;
        }
        else
        {
            echo 'Please enter some message.';
        }
    }
?>
</span>

试试这个。它将在同一页面上发布表单值

<form action="form.php" method="POST">
<input type="text" name="message">
<input type="submit" value="Submit">
</form>
<span class="result"></span>
<?php 
if(isset($_POST['message'])){
  $message = $_POST['message'];
  if(!empty($message)){
    echo 'Your message: '.$message;
  }else{
    echo 'Please enter some message.';
  }
}

好的,这是一种方法:在form.php中,

<form action="process.php" method="POST">
    <input type="text" name="message">
    <input type="submit" value="Submit">
</form>
<?php
    $var = $_GET['text'];
    echo "<span class='"result'"> $var </span>";
?>

然后在process.php中这样做:

<?php 
   if(isset($_POST['message'])){
    $message = $_POST['message'];
      if(!empty($message)){
         // echo 'Your message: '.$message;
         header("location: form.php?text=$message")
      }else{
        echo 'Please enter some message.';
      }
}
?>

使用这种方法有几个缺点:

  1. 变量$message通过URL传递,因此不应该太长,因为URL有长度限制
  2. 使用$_GET[]使消息在URL上可见,因此密码和其他敏感信息不应用作消息。