Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cris_funcional

Senha e Confirmar Senha

Recommended Posts

Olá amigos, tenho uma tela de cadastro onde o usuário digita senha e confirmar senha, como fazer que, ao digitar senhas diferentes ñ grave no banco e os dois campo sejam limpos, para que seja digitado novamente. Abaixo segue o código:

<?php

function __autoload($classe)
{
$pastas = array('app.widgets','app.ado');
foreach($pastas as $pasta)
{
	if(file_exists("{$pasta}/{$classe}.class.php"))
		{

			include_once "{$pasta}/{$classe}.class.php";

		}

}

}

class CadastroRecord extends TRecord
{
const TABLENAME='cadastro';
}

class CadastroCliente extends TPage
{
private $form;

function __construct()
{
	parent::__construct();

	//cria um formulário
	$this->form = new TForm('form_clientes');

	$div = new TElement('div');
	$div->style='border: 1px solid red;width:35%';

	$teste = $_POST['confirmar'];

	//cria uma tabela
	$table = new TTable();

	$div->add($table);

	//adiciona a tabela no formulário
	$this->form->add($div);

	//id do cliente
	$id	= new TEntry('id');
	$id->setEditable(false);
	$id->setSize(40);

	//cpf do cliente
	$cpf = new TEntry('cpf');
	$cpf->setSize(130);

	//nome do cliente
	$nome = new TEntry('nome');

	//sobre nome do cliente	
	$sobrenome = new TEntry('sobrenome');
	$sobrenome->setSize(130);

	//email do cliente
	$email= new TEntry('email');

	//data de nascimento do cliente	
	$data_nasci	= new TEntry('data_nasci');
	$data_nasci->setSize(130);

	//senha do cliente		
	$senha = new TPassword('senha');
	$senha->setSize(80); 

	//confirmar senha do cliente	
	$confirmar = new TPassword('confirmar senha');
	$confirmar->setSize(80);

	$salvar = new TButton('action1');
	$salvar->setAction($action1=new TAction(array($this, 'onSave')), 'Salvar');

	$row = $table->addRow();
	$row->addCell(new TLabel('ID :'));
	$row->addCell($id);

	$row = $table->addRow();
	$row->addCell(new TLabel('CPF :'));
	$row->addCell($cpf);

	$row = $table->addRow();
	$row->addCell(new TLabel('Nome :'));
	$row->addCell($nome);

	$row = $table->addRow();
	$row->addCell(new TLabel('Sobrenome :'));
	$row->addCell($sobrenome);

	$row = $table->addRow();
	$row->addCell(new TLabel('E-Mail :'));
	$row->addCell($email);

	$row = $table->addRow();
	$row->addCell(new TLabel('Data de Nasc :'));
	$row->addCell($data_nasci);

	$row = $table->addRow();
	$row->addCell(new TLabel('Senha :'));
	$row->addCell($senha);

	$row = $table->addRow();
	$row->addCell(new TLabel('Conf Senha :'));
	$row->addCell($confirmar);

	$row = $table->addRow();
	$row = $table->addRow();

	$row = $table->addRow();
	$celula=$row->addCell($salvar);
	$celula->colspan='2';
	$celula->align='center';	


	$this->form->setFields(array($id,$cpf,$nome,$sobrenome,$email,$data_nasci,$senha,$salvar));
	parent::add($this->form);		

}	


	function onSave()
	{
		try
		{
			//abre uma transação
			TTransaction::open('pg_livro');

			//obtém os dados
			$data = $this->form->getData('CadastroRecord');

			//armazena o registro
			$data->store();

			//joga os dados de volta ao formulário
			$this->form->setData($data);

			//define o formulário como não editavel
			$this->form->setEditable(FALSE);

			//finaliza a transação
			TTransaction::close();	
			new TMessage('info','Dados armazenados com sucesso');
		}
		catch(Exception $e)
		{
			//exibe a mensagem de erro
			echo $e->getMessage();

			//desfaz operação realizadas durante a transações
			TTransaction::rollback();
		}	

	}


}
$cliente = new CadastroCliente();
$cliente->show();


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica meio complicado de analisar esses códigos de livros.

Principalmente porque ele depende de várias classes para funcionar.

 

Mas como na maioria dos casos a resposta está no próprio livro e so prestar atenção nos detalhes.

 

Cheque esses trechos

//senha do cliente              
$senha = new TPassword('senha');
$senha->setSize(80); 

//confirmar senha do cliente    
$confirmar = new TPassword('confirmar senha');
$confirmar->setSize(80);

//joga os dados de volta ao formulário
$this->form->setData($data);

$row = $table->addRow();
$row->addCell(new TLabel('Senha :'));
$row->addCell($senha);

$row = $table->addRow();
$row->addCell(new TLabel('Conf Senha :'));
$row->addCell($confirmar);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cadastrar apenas se as senhas forem iguais, basta compará-las num IF, usando o operador ==

 

Limpar os campos você tem duas possibilidades: JavaScript ou, no ELSE desse IF, direcionar o usuário de volta para o formulário e, dentro dos atributos value você fazer algo como:

 

<input type="text" name="foo" id="foo" value="<?php echo ( isset( $_POST['foo'] ) ? $_POST['foo'] : '' ); "/>

Em todos o campos EXCETO os das senhas.

 

Dessa forma, no primeiro acesso ao formulário, o isset() vai falhar e o atributo value não terá nada. A partir do primeiro erro, $_POST terá sido populado com os dados preenchidos anteriormente e funcionará a contento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.