我正在写的是一个临时禁止脚本,供那些喜欢用小型僵尸网络纠缠我的网站的人使用。
我遇到的唯一问题是如何取消设置 json 对象。
我有以下代码
/* JSON blocking script written by Michael Dibbets
* Copyright 2012 by Michael Dibbets
* http://www.facebook.com/michael.dibbets - mdibbets[at]outlook.com
* Licenced under the MIT license http://opensource.org/licenses/MIT
*/
// Turn on error reporting
ini_set("display_errors", 1);
error_reporting(E_ALL);
// Create our codeigniter filepath
$filepath = FCPATH.'pagemodules/blocked.json';
// Load file helper to be able to be lazy
$this->load->helper('file');
// Read the json file
$data = read_file($filepath,'c+');
// Have we succeeded? Then continue, otherwise fail graciously
if($data !== false)
{
// Let's make it readable
$json = json_decode($data);
// Display it for debug purposes
echo $data;
// Iterate through every object, get the key to be able to unset it
foreach($json as $key => $obj)
{
// Dump the object for debug purposes
var_dump($obj);
echo "<P>";
// Has it's life time expired?
if((int)$obj->{'endtime'} < strtotime("+2 hours 2 minutes"));
{
// remove the object from the array
unset($json[$key]);
}
}
// Remove the file so we can overwrite it properly
unlink($filepath);
}
// Add some values to our array
$json[] = array('ip' => $_SERVER['REMOTE_ADDR'],'endtime' => strtotime('+2 hours'));
// Encode it
$data = json_encode($json);
// Write it to file
write_file($filepath,$data,'c+');
我遇到的问题是 json encode 不会将其编码为数组而是作为对象。问题是以下不起作用:
// This gives the error Fatal error: Cannot use object of type stdClass as array in /public_html/ocs_application/controllers/quick.php on line 37
unset($json[$key]);
// This doesn't report anything, and does nothing
unset($json->{$key});
如何取消设置 json 对象?