让我先说一下我写PHP不是最好的。我也没有写下面的代码,但我正在寻找一些关于我在这个更大的过程中发生的事情我缺少的指导。
在使用CodeIgniter和twitter-Bootstrap框架初始安装free ticketing software之后,数据库使用我的管理员电子邮件设置默认管理员帐户,应该是什么,默认密码为admin:
CREATE TABLE IF NOT EXISTS `tblstaffs` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`firstname` varchar(200) NOT NULL,
`lastname` varchar(200) NOT NULL,
`email` varchar(200) DEFAULT NULL,
`password` varchar(200) DEFAULT NULL,
`admin` int(10) DEFAULT '0',
`hash` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `id_2` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Dumping data for table `tblstaffs`
--
INSERT INTO `tblstaffs` (`id`, `firstname`, `lastname`, `email`, `password`, `admin`, `hash`) VALUES
(1, 'Admin', 'Admin', 'admin@admin.com', '08gv6gemSKxv09EImCsPLO94Nje6ZVAlFnuc13kohFwvC0kh/ESFEn1lEwL9bbSbrlym/UrO6wM9p0CGnjJHzg==', 1, '');
我看到了这个值:
08gv6gemSKxv09EImCsPLO94Nje6ZVAlFnuc13kohFwvC0kh/ESFEn1lEwL9bbSbrlym/UrO6wM9p0CGnjJHzg==
也在数据库中。
尝试输入'admin'作为密码无效。我想我可能错过了一些必要的PHP扩展?
// Form validation success.
$data['firstname'] = $this -> input -> post('firstname');
$data['lastname'] = $this -> input -> post('lastname');
$data['email'] = $this -> input -> post('email');
$data['id'] = $this -> input -> post('id');
if($this->input->post('password'))
$data['password'] = $this->encrypt->encode($this -> input -> post('password'));
$result = $this -> Admin -> EditStaff($data);
if ($result == FALSE)
{
$status['statusmsg'] = "A user with the email already exists";
$status['status'] = 0;
echo json_encode($status);
}
else
{
$status['status'] = 1;
echo json_encode($status);
答案 0 :(得分:0)
您肯定遇到加密问题,请更改此行
if($this->input->post('password'))
$data['password'] = $this->encrypt->encode($this -> input -> post('password'));
这样的事情(看看加密后'密码'变成了什么)
if($this->input->post('password')){
$data['password'] = $this->encrypt->encode($this -> input -> post('password'));
echo "Password: $this->input->post('password')";
echo "Encrypted password: $data['password']";
}
如果它回应的不同于:
08gv6gemSKxv09EImCsPLO94Nje6ZVAlFnuc13kohFwvC0kh/ESFEn1lEwL9bbSbrlym/UrO6wM9p0CGnjJHzg==
这意味着你的代码点火器confs中可能有一个错误的加密密钥,或者是实际的字符串:
08gv6gemSKxv09EImCsPLO94Nje6ZVAlFnuc13kohFwvC0kh/ESFEn1lEwL9bbSbrlym/UrO6wM9p0CGnjJHzg==
不是密码“admin”的正确加密密钥!
答案 1 :(得分:0)
票务系统使用CodeIgniter的加密库来加密其密码(注意:这是一件坏事;它是可逆加密,而不是哈希。)
CodeIgniter的加密库如果可用则使用mcrypt,否则会回退到自己不太安全的方法。
数据库脚本中提供的密码肯定是使用mcrypt加密的。我猜你的PHP安装中没有设置mcrypt模块。
有几种可能的选择:
但就个人而言,我不建议将此票务系统用于任何可公开发布的内容。身份验证系统应使用盐渍单向哈希,而不是可逆加密。