在处理数据库生成的列表时,传递PHP变量而不会被看到


Pass PHP variables without being seen when working with a database generated list

正在寻求有关该问题的任何帮助。交易如下:我有一个数据库,它有一个teams表,其中包含team_id。在我的一个页面上,我生成了一个链接列表,这些链接的getURL中包含创建者的team_id。我需要下一页的team_id,但不知道如何通过其他方式传递它。使用表单和POST不是一个选项,因为此方法只会传递列表上的最后一个链接数据。存储在会话中也不是一个选项,因为没有办法将我需要的变量离散地传递给一个函数来设置会话变量。我已经尝试过了,从查看源代码可以很容易地查看它。下面是一些示例代码,可以确切地了解我正在处理的内容。

<?
if(mysql_num_rows($result2)>0){ ?>
     <a class="fltrt btn btn-danger btn-small" onclick="test()" href="acceptmatch-exec.php?match_id=<?php echo $match_id; ?>&team_id=<?php echo $team_id;?>&action=cancel">Cancel Match</a>
 <?}else{?>
     <a class="fltrt btn btn-success btn-small" href="acceptmatch-exec.php?match_id=<?php echo $match_id; ?>&team_id=<?php echo $team_id;?>&action=accept">Accept Match</a>
  <?} ?>

上面的代码是通过一个被排除的while循环在一个页面上多次生成的。我想传递match_idteam_id变量,而不会在任何地方被看到。如果我把它作为一个表单,它不会传递正确的变量,除非一次只有一个结果(不太可能)。我相信一定有一个简单的方法在躲避我,所以请分享如何解决这个问题的想法。我觉得我解释得不够好,但解释起来并不容易。我基本上想要像GET一样工作,但像POST一样工作,并且可以对查看源代码或链接位置的人隐藏。

感谢

只要你不在其他地方发布,人们就无法从你的服务器上看到你的源代码。

如果要隐藏ID,只需[哈希](哈希方法)(http://en.wikipedia.org/wiki/Hash_function)它们:

<a href="someScript.php?id=<?php echo md5($id) ?>">Da Link</a>

那么在someScript.php中,您必须[通过PDO!]查找您的数据库:

SELECT * FROM teams WHERE MD5(id) = :id

但是md5哈希现在很容易逆转,所以你不会成为攻击者的证据。

无论如何,只要你的网站构建得当,你就可以根据需要隐藏资源,而无需依赖会话、哈希或其他任何东西:只要充分利用授权即可。


坦率地说,我建议你阅读一些关于服务器端开发的好东西,以便在不每次都重新发明轮子的情况下编写好的代码——坚持我上面链接的Symfony指南,尽管你不会最终使用整个框架[无论如何,我强烈建议你这样做],你会发现它们非常有用。