首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php如何处理像POST一样的超链接而不是GET?

php如何处理像POST一样的超链接而不是GET?
EN

Stack Overflow用户
提问于 2015-03-10 14:26:10
回答 2查看 498关注 0票数 0

我将有一个返回一组结果的查询,这些结果将以超链接形式出现,如下所示:

代码语言:javascript
复制
echo "<td><a href='abc.php?cif=" . $row['cif'] .  "'>{$row['cif']}</td>";

现在,用户可以点击这个超链接并被路由到abc.php?cif=$cif..

我的问题是,是否可能只向用户显示 abc.php ,就像POST方法一样,而$cif在abc.php上仍然可用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-10 14:43:36

正如@Flosculus上面所说,模拟post请求的“最佳”解决方案是这样做:JavaScript发布请求就像表单提交一样

然而,尽管它确实是一个可靠的解决方案,但我想知道您只是不使用会话,比如:

在设置cif变量的页面中:

代码语言:javascript
复制
session_start();
$_SESSION['cif'] = $row['cif'];

在abc.php中:

代码语言:javascript
复制
session_start();
if (isset($_SESSION['cif'])) {
   // Do what you need
}

编辑::

另一个(可能的)解决方案是在单击锚点时设置一个隐藏的输入并以静默方式提交表单,如下所示:

从您的例子来看,而不是:

代码语言:javascript
复制
echo "<td><a href='abc.php?cif=" . $row['cif'] .  "'>{$row['cif']}</td>";

你这样做:

打印所有条目时,请首先添加以下内容(来自PHP):

代码语言:javascript
复制
<?php
echo <<<HEADER
    <form action="abc.php" method="post" id="submitAble">
    <input type="hidden" name="cif" id="cif" value="{$row['cif']}">
    <table>
HEADER;
     // Get data from your query.. Here is an example:
     while ($row = mysli_fetch_assoc($query)) {
         echo <<<ENTRY
      <tr>
          <td><a href="#" class="cifSetter" data-cif="{$row['cif']}">{$row['cif']}</a></td>
       </tr>
ENTRY;
     }
echo "</table> <!-- \table collapse --></form> <!-- \form collapse -->";
?>

然后,如果您使用的是jQuery (我推荐的东西),只需在javascript中添加一个事件侦听器,如下所示:

代码语言:javascript
复制
$('.cifSetter').on('click', function(e) {
   e.preventDefault();
   $('#cif').val($(this).data('cif'));
   $('#submitAble').submit();
});

如果您没有jQuery,请使用以下选项:

代码语言:javascript
复制
var cifSetter = document.getElementsByClassName('cifSetter');
for (var i = 0; i < cifSetter.length; i++) {
   cifSetter[i].addEventListener('click', function(e) {
      e.preventDefault();
      var cif = document.getElementById('cif');
      cif.value = this.dataset.cif;
      document.getElementById('submitAble').submit();
   });
}

在这两种情况下,每当单击锚点时,它都会阻止其标准行为(重定向),而是将隐藏字段的值设置为当前"cif“的值,并以所需的值提交表单。

要从abc.php检索所需的值,只需执行以下操作:

代码语言:javascript
复制
$cif = $_POST['cif'];

但是,请记住,隐藏字段是客户端可以编辑的(但是大多数人都无法编辑它),因此在检索数据时也应该对数据进行清理。

票数 1
EN

Stack Overflow用户

发布于 2015-03-10 14:34:20

会话可以这样做,但我建议只使用帖子。我不明白你为什么不想使用POST。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28966308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档