我的类中有一个函数(派生自this函数)来生成安全代码,然后是测试函数来更新数据库并将代码打印到页面上。生成器函数在一个页面上运行正常,它只是在功能上编程并立即调用,但是一旦我将它放入CodeIgniter中的类中,它就不起作用。
这是我的生成器功能:
private function createSecureCode()
{
// Get 128 pseudorandom bits in a string of 16 bytes
$pr_bits = '';
$fp = @fopen('/dev/urandom','rb');
if ($fp !== false) {
$pr_bits .= @fread($fp,16);
@fclose($fp);
}
return $pr_bits;
}
这是我的测试功能:
public function test()
{
$query = $this->db->get("clients");
$result = "";
foreach($query->result() as $results)
{
$code = $this->createSecureCode();
$result .= $code." - ";
$this->db->where("client_id", $results->client_id);
$this->db->update("clients", array("client_secure_code" => $code, "client_active" => 1));
}
/*$query = $this->db->get("clients");
$row = $query->first_row();
print($row->client_secure_code." - ");*/
print($result);
return $result;
}
答案 0 :(得分:1)
问题在于Codeigniter将使用index.php进行重新路由
所以“$ fp = @fopen('/ dev / urandom','rb');”失败了 - 因为它会查找错误的目录:
/home/public_html/index.php/dev/urandom
但我想你的档案已存储:
/home/dev/urandom
所以你需要做这样的事情:
$fp = @fopen('../../dev/urandom','rb')
但是您需要根据需要测试和调整服务器/设置