脚本宝典收集整理的这篇文章主要介绍了通过get,php在url和security中传输数据,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在第二页,我使用get接受数据.
现在这里是第二页的网址,在数据发送后(即提交表格)
http://mydomain.com/site1/form1_conf.php?id=123
当用户在第二页时,第二页上的数据将根据MysqL数据库中的id号显示.
现在的问题是,当用户在第二页上并且他改变了数字(例如123,比如78)时,数据库中显示id = 78的数据,这是不好的.
我怎么能阻止它?
请注意:我不能使用帖子,也不能使用会话.
EDITE:
// after all validations are okay $insert = //insert into database $result = MysqL_query($insert); if($result) { echo("<br>Input data is succeed"); $lastInsertedId = MysqL_insert_id(); header('Location:form1_conf.PHP?id='.$lastInsertedId); //THIS IS THE IMPORTANT LINE } else { $message = "The data cannot be inserted."; $message .= "<br />" . MysqL_error(); }
最简单的方法是使用“预共享密钥”,您可以使用单向哈希来验证请求.
重定向:
$newURL = '/newpage?id='.$id.'&hash='.sha1('mypresharedkey'.$id); header('HTTP/1.1 303 See other'); header('Location: '.$newURL); die;
另一页:
$idToShow = $_GET['id']; $hash = sha1('mypresharedkey'.$id); if($hash != $_GET['hash']) die("Tssss,don't play with the address bar!"); else RenderThePage();
对于您的特定代码:
...all prior code $lastInsertedId = MysqL_insert_id(); $timestamp = time(); header('Location:form1_conf.PHP?'.http_build_query([ 'id' => $lastInsertedId,'time' => $timestamp,'hash' => sha1('some-generated-key'.$timestamp.$lastInsertedId) ]);
在另一页中,如果你想要包括一个定时炸弹(否则只是将其注释掉):
$id = $_GET['id']; $time = $_GET['time']; if($_GET['hash'] != sha1('some-generated-key'.$time.$id)) die('URL was tampered with'); if(time() - $time > 300) die('URL was only valid for 5 minutes');
以上是脚本宝典为你收集整理的通过get,php在url和security中传输数据全部内容,希望文章能够帮你解决通过get,php在url和security中传输数据所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。