【问题标题】:Using PHP to return to page after form post表单发布后使用PHP返回页面
【发布时间】:2014-08-20 13:13:58
【问题描述】:

我正在使用一个发布到 PHP 脚本的表单。然后设置一个 cookie 并将用户返回到主页:

HTML 表单:

<form action="update.php" method="post">
  <select name="choice">
    <option value="style1" selected>1</option>
      <option value="style2">2</option>
      <option value="style3">3</option>
    </select>
  <input type="submit" value="Go">
</form>

PHP:

<?php 
  $year = 31536000 + time();
  setcookie('style', $_POST['choice'], $year);
  header('Location: index.php');
  exit();
?>

我想更改此脚本的行为以将用户重定向到提交表单的页面。

我尝试在表单中添加以下内容:

<input type="hidden" name="goback" value="<?php echo($_SERVER['REQUEST_URI']); ?>">

但是我不确定如何最好地更改我的 PHP“位置”以利用此回显请求。

【问题讨论】:

  • 您是否有理由不使用原始表单页面作为表单的操作?只需检查 $_POST,进行 PHP 处理,然后再次显示表单。

标签: php


【解决方案1】:

试试这个,

<form action="update.php" method="post">
 <select name="choice">
   <option value="style1" selected>1</option>
   <option value="style2">2</option>
   <option value="style3">3</option>
 </select>
 <input type="hidden" name="goback" value="<?php echo $_SERVER['REQUEST_URI']; ?>">
 <input type="submit" value="Go">
 </form>

PHP update.php

<?php 
    $year = 31536000 + time();
    setcookie('style', $_POST['choice'], $year);
    header('Location:'.$_POST['goback']);
    exit();
?>

【讨论】:

    【解决方案2】:

    尝试更改此行

    header('Location: index.php');
    

    为了这个

    header('Location: ' . $_SERVER['HTTP_REFERER']);
    

    它应该将用户返回到他们来自的页面。

    【讨论】:

    • 尽管请求中确实存在任何 HTTP 标头(包括Referer),但并没有坚如磐石的保证。
    • 在 OP 的情况下它会一直存在,不是吗?
    • 不一定,HTTP REFERER 是由浏览器发送的——它可以是空白、乱码或欺骗。 $_SERVER['HTTP_REFERER'] 只是服务器从客户端收到的内容。
    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多