【发布时间】:2012-09-16 01:55:18
【问题描述】:
您好,我有一些关于如何保护此脚本免受直接 url 影响的问题?
会员可以去'pages/map/hospital.php?status=healed' 瞧,他们不需要任何等待时间。我该如何解决这个问题?!
<?php
$status = $_GET['status'];
if(isset($status)){
session_start();
include('../../includes/core/member.php');
include('../../includes/core/config.php');
$member_id = $_SESSION['member_id'];
if($status == 'healed'){
mysql_query("UPDATE `members` SET `now_health` = '".$m_max_health."' WHERE `member_id` = '".$member_id."'");
}
}else{
include('includes/core/member.php');
}
$health = $m_max_health - $m_now_health;
$wait_time = $health * 5;
?>
<p id='health'>Healing (<?=$wait_time?>)</p>
<script>
$('#health').one('click', function() {
var count = <?=$wait_time?>;
countdown = setInterval(function(){
$("p#health").html(count + " seconds remaining!");
if (count == 0) {
$.ajax({
url: 'pages/map/hospital.php?status=healed',
success: function(data) {
clearInterval(countdown);
$("p#health").html('you have healed');
}
});
}
count--;
}, 1000);
});
</script>
【问题讨论】:
-
如果我错了,请纠正我,但
session_start();不应该总是在代码中排在第一位吗? -
@max:没有。它只需要放在任何产生输出和/或需要使用会话变量的东西之前。
-
我用 post 代替了 ajax,一切都很好,谢谢你的帮助。