我在尝试登录时出错,这两个错误出现
遇到PHP错误 严重性:警告
消息:非法字符串偏移'titulo'
文件名:controllers / Login.php
第二次错误
遇到PHP错误 严重性:注意
消息:未定义的变量:body
文件名:templates / login_template.php
按顺序按照代码
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed'); // linha de proteção ao controller
class Login extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('ControleAcessoModel', 'CA');
//$this->output->enable_profiler(true);
}
public function index($dados=""){
$dados['titulo'] = 'Autenticação';
$this->template->load('login_template', 'area_restrita/acesso_login.php', $dados);
//print_r($dados);
}
public function logout(){
$this->CA->logout();
}
public function autenticar(){
$form = $this->input->post(NULL, TRUE);
$this->load->library('form_validation');
//validação dos campos
$this->form_validation->set_rules('senha','Senha','trim|required',
array(
'required' => 'Informe uma valor para %s.'
)
);
$this->form_validation->set_rules('login','Login','trim|required',
array(
'required' => 'Informe uma valor para %s.'
)
);
$this->form_validation->set_error_delimiters('<div class="alert alert-danger">','</div>');
if($this->form_validation->run() == true){
$login = $this->input->post("login");
$senha = $this->input->post("senha");
if(!$this->CA->logged()){
$this->load->model('PessoaSistemaModel','objAutenticavel');
$this->objAutenticavel->setLogin($login);
$this->objAutenticavel->setSenha($senha);
$autenticado = $this->CA->autenticar($this->objAutenticavel);
//var_dump($autenticado); break;
if($autenticado){
redirect('/visita');
}else{
redirect('/login');
}
} else {
redirect('/visita');
}
}
//$this->index();
}
public function logado(){
$dados['titulo'] = 'Logado';
$this->template->load('default','area_restrita/tela_inicial.php',$dados);
}
public function acessoNegado(){
$dados['titulo'] = 'Bloqueio';
if(!$this->input->is_ajax_request()){
$this->template->load('default','mensagem/sem_permissao.php',$dados);
}else{
print $this->load->view('mensagem/sem_permissao.php',$dados, true);
}
}
}
?>
第二次错误
<!Doctype html>
<html>
<head></head>
<body class="no-skin login-layout">
<div id="main-container" class="main-container login">
<div class="main-content">
<div class="main-content-inner">
<div class="page-content">
<?php
if (isset($_SESSION['alerta']) && !empty($_SESSION['alerta'])) {
print '<div class="alert alert-warning">
<button data-dismiss="alert" class="close" type="button">
<i class="ace-icon fa fa-times"></i>
</button>' . $_SESSION['alerta'] .
'</div>';
}
?>
<?php
if (isset($_SESSION['erro']) && !empty($_SESSION['erro'])) {
print '<div class="alert alert-danger">
<button data-dismiss="alert" class="close" type="button">
<i class="ace-icon fa fa-times"></i>
</button>' . $_SESSION['erro'] .
'</div>';
}
?>
<?= $body ?>
</div>
<!-- /.page-content -->
</div>
</div>
</div>
</body>
</html>
如果有人能帮助我,我将不胜感激!
答案 0 :(得分:0)
public function index($dados=""){
$dados
不是一个数组,它是一个字符串,你不能为它添加值,好像它是一个像$dados['titulo']
这样的数组,其中[]
表示一个数组(因此非法字符串偏移)。
在您的视图中,您<?= $body ?>
永远不会在index()
函数中传递给您的视图,因此您的通知(它也永远不会回显,fyi)。
我不确定$dados=""
应该用于什么,但假设它只是想要传递给控制器的变量,您可以执行以下操作:
public function index($dados = "") {
$data['body'] = 'Some body text';
$data['somevarname'] = $dados;
$data['titulo'] = 'Autenticação';
//or
/*
$data = array(
'body' => 'Some body text',
'somevarname' => $dados,
'titulo' => 'Autenticação'
);
*
*/
$this->template->load('login_template', 'area_restrita/acesso_login.php', $data);
}