Sejam todos bem vindos à mais uma aula do curso de criação de um painel administrativo utilizando PHP e orientação a objetos. Nesta aula vamos criar a tela de alteração de usuários, restringindo o acesso à esta operação somente aos administradores ou então ao próprio usuário caso ele queira alterar seus dados. Em seguida faremos a criação das funções necessárias para alterar os dados no banco e validar o email para evitar registros duplicados na tabela.
Este post faz parte de uma série, confira tudo que já foi publicado sobre o mesmo assunto.
Sou técnico em hardware e desenvolvedor web, e sobre estes dois assuntos comecei a compartilhar aulas e artigos, tornando-me blogueiro em 2008. Em 2010 esse hobby virou profissão, e desde então tenho buscado melhorar e profissionalizar cada vez mais os projetos que mantenho na web.
Atualmente temos 23 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.
Olá Ricardo,é com muita satisfação que venho acompanhando este curso e breve me tornarei um sócio de seu blog, minha dúvida acredito ser simples mas como sou novato nisso gostaria de uma ajuda. Meu código esta todo revisado e perfeitamente igual ao seu, minha dúvida é a seguinte:
Meus formulário de alteração não está imprimindo os nomes dentro dos campos, o que pode ser?
Grato pela atenção
Rodney
ResponderRevise sua codificação, ou você não está pegando os dados do banco ou não está printando eles na tela corretamente.
Responderestou com um pequeno problema no meu sistema de administração na hora que eu puxo o código para editar usuário vai certinho como vcs podem ver
Meu usuário normal para eu editar
http://www.iaza.com/work/130316C/iaza13708569413700.png
Agora quando eu altero os dados e clico em salva alterações aparece o seguinte error
http://www.iaza.com/work/130316C/iaza13708514321900.png
Em programação um espaço a mais ou a menos faz toda diferença. Tanto esse quanto os demais erros que você teve derivam de uma falta de atenção, e neste caso especificamente um ESPAÇO faltante no seu SQL.
ResponderComo assim? eu mechi aki e fico da seguinte maneira
http://www.iaza.com/work/130316C/iaza13708548758100.png
ResponderSocorrooooooo...!!! não consigo fazer com que o usuario veja somente a lista dele, pois é mostrado tudo que nem do administrador!
Como faço para que o usuario veja apenas os dados dele.
please!!! =^.^=
ResponderOlá Ricardo parabéns pelo trabalho.
Estou com a seguinte dúvida estou tentando fazer a parte de atualizações mas me deparo com o seguinte erro, quando o usuario altera a senha ele atualiza toda a tabala, o campo senha pega o novo valor e os demais passam a ser vazios
código fonte excluído
Pq isso ocorre e não consigo fazer como vc ensinou?
ResponderFiz tudo revisei tudo umas 3 vezes assisti os primeiros videos mais nada =/
1°- Com usuario normal ainda consigo alterar dados igual admin
case 'incluir':
echo '<h2>Cadastro de Usurios</h2>';
if (isset($_POST['cadastrar'])):
$user = new usuarios(array(
'nome'=>$_POST['nome'],
'email'=>$_POST['email'],
'login'=>$_POST['login'],
'senha'=>codificaSenha($_POST['senha']),
'administrador'=>($_POST['adm']=='on') ? 's' : 'n',
));
if ($user->existeRegistro('login',$_POST['login'])):
printMSG('Este login j est cadastrado, escolha outro nome de usurio.','erro');
$duplicado = TRUE;
endif;
if ($user->existeRegistro('email',$_POST['email'])):
printMSG('Este email j est cadastrado, escolha outro endereo.','erro');
$duplicado = TRUE;
endif;
if ($duplicado!= TRUE):
$user->inserir($user);
if ($user->linhasafetadas==1):
printMSG('Dados inseridos com sucesso. <a href="'.ADMURL.'?m=usuarios&t=listar">Exibir cadastros</a>');
unset($POST);
endif;
endif;
endif;
?>
2°-2°- caso o usuário não seja administrador eu não mostro os campos de Ativo e de Administrador, que no seu caso você deixa desabilitado, mas ai surge um problema.
se eu entrar com um usuário que não é administrador do sistema e clicar em editar o seu perfil e depois clicar em salvar, mesmo sem alterar exatamente nada, ele seta o Ativo como 'n' (desabilitado)
case 'editar':
echo '<h2>Edio de usurios</h2>';
$sessao = new sessao();
if (isAdmin()==TRUE || $sessao->getVar('iduser')==$_GET['id']):
if (isset($_GET['id'])):
$id = $_GET['id'];
if (isset($_POST['editar'])):
$user = new usuarios(array(
'nome'=>$_POST['nome'],
'email'=>$_POST['email'],
'ativo'=>($_POST['ativo']=='on') ? 's' : 'n',
'administrador'=>($_POST['adm']=='on') ? 's' : 'n',
));
Min ajuda por favor n sei mais oq fazer =/
ResponderOla ricardo,
venho acompanhando suas aulas e também digitando para treinar, quando cheguei na 11 aula, quando clico no botão editar, vai para formulário para edição, mas não traz o registro, fiz conforme no site, o resto está funcionando, cadastro OK, login OK, só essa parte que não consegui achar o erro.
ResponderOlá a todos, eu gostaria de saber um pequeno motivo para um erro no código, gostaria de saber se é de compatibilidade do meu PHP, utilizo o 5.4 e me ocorre o seguinte erro na função isAdmin()
Object of class stdClass could not be converted into a string
e a linha cai com
$resid = $sessao->getVar('iduser');
e nã entendi o porque já que
$user = new usuarios();
funciona normalmente. '-' Alguém pode me iluminar?
ResponderNão adianta você criar um objeto do tipo Usuários e chamar uma função da classe Sessão...
ResponderDeixe especificar, eu criei o objeto do tipo sessao, mas eu não consigo transformar o objeto
$resid = $sessao->getVar('idlogado');
Porque quando tento passá-lo para o código do mysql me aparece o tal erro.
Eu especifiquei em cima que as strings do objeto do tipo Usuários são convertidas normalmente, já as do tipo sessão me mostra tal, seria incompatibilidade? Li algo e vi que poderia ser, mas me resta a dúvida pois testei em downgrades e continuou.
Você precisa ver como está enviando os dados para o MySQL, se for um campo do tipo texto terá que mandar os dados entre apóstrofes para que funcione corretamente.
ResponderPodia marcar já pra postar a próxima amanha né, pq 70 ja deu faz umas 3 horas :D
Responderfalai Ricardo, tudo beleza?
então, tentei fazer o módulo para alteração de senha do usuário, e obtive sucesso, claro que deram alguns problemas, como não salvar a senha, erro no script, mas depois da terceira tentativa consegui, tudo funciona perfeito, e só o usuário pode alterar sua própria senha, assim como você mostrou na edição de usuários, e claro o administrador tem todos os privilégios...
não tenho como agradecer o aprendizado.
muito obrigado...
ResponderParabéns, é muito obrigado por compartilhar conhecimento.
Respondermuito boa essa vídeo aula, ta ficando cada vez melhor...
só uma dúvida Ricardo:
no meu sistema, caso o usuário não seja administrador eu não mostro os campos de Ativo e de Administrador, que no seu caso você deixa desabilitado, mas ai surge um problema.
se eu entrar com um usuário que não é administrador do sistema e clicar em editar o seu perfil e depois clicar em salvar, mesmo sem alterar exatamente nada, ele seta o Ativo como 'n' (desabilitado), já que no código você definiu assim:
$user = new usuarios(array(
'nome' => $_POST['nome'],
'email' => $_POST['email'],
'ativo' => ($_POST['ativo'] == 'on') ? 's' : 'n',
'administrador' => ($_POST['adm'] == 'on') ? 's' : 'n'
));
gostaria de saber como contornar esta situação...
tentei várias formas, mas não obtive sucesso...
será que tu pode me ajudar?
valeu Ricardo
ResponderVejo duas possibilidades:
1 - Colocas os dados necessários para a alteração em campos ocultos quando o usuário não for administrador para que mesmo não aparecendo as informações estejam presentes.
2 - Tirar os campos "ativo" e "administrador" do objeto quando o usuário que está alterando não for administrador, o que tornaria o sistema mais seguro.
e como eu faria se fosse a segunda opção, achei mais interessante.
penso assim:
if (isAdmin()) : // administrador
$user = new usuarios(array(
'nome' => $_POST['nome'],
'email' => $_POST['email'],
'ativo' => ($_POST['ativo'] == 'on') ? 's' : 'n',
'administrador' => ($_POST['adm'] == 'on') ? 's' : 'n'
));
else : // no administrador
$user = new usuarios(array(
'nome' => $_POST['nome'],
'email' => $_POST['email']
));
endif;
seria assim?
obrigado
ResponderRicardo, testei aqui como eu escrevi acima, e deu certo, mas se você tiver uma maneira mais "correta" ou "lógica", eu ficarei grato em aprender..
obrigado.
ResponderIsso mesmo, assim fica mais seguro pois não há possibilidade de um usuário não ADM alterar o html da página e enviar um dado falso para burlar o sistema.
ResponderOlá, muito boa a aula, pena que eu ja tinha feito, mais serviu pra me mostrar uma forma simplificada de uma verificação que eu tinha feito, Valeu continue sempre no fazendo grandes aulas. Abraço.
Responder© 2008-2022 - RBTech.info | Todos os direitos reservados | Hospedado por Innova Host
É proibida a reprodução total ou parcial de qualquer conteúdo deste site.
Ve se alguém pode me ajudar...
quando vou alterar o cadastro de um usuário funciona normalmente quando eu altero o nome ou o email.
Mas quando vou alterar o administrador ou ativo ele me da erro Access denied for user '####'@'localhost' (using password: NO)...
estranho isso... Pode me ajudar?