Publicidade

Rodrigo5468

Verificar campos e DB

Patrocínio:

Olá,

 

Estou fazendo um sistema de cadastro em PDO OO.

 

Cadastro.php

public function insert() {
	if(isset($usuario) && isset($nomesobrenome) && isset($email) && isset($senha)) {
		if(empty($usuario) OR empty($nomesobrenome) OR empty($email) OR empty($senha)) {
			echo 'Existe campos vazios.</div>';
		}
	}else {
		$verifica = DB::prepare("SELECT * FROM {$this->table} WHERE usuario=:usuario OR nomesobrenome=:nomesobrenome OR email=:email");
		$verifica->bindValue(':usuario',$this->usuario,PDO::PARAM_STR);
		$verifica->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR);
		$verifica->bindValue(':email',$this->email,PDO::PARAM_STR);
		$verifica->execute();
		
		if($verifica->rowCount() == 0) {
			$sql  = "INSERT INTO $this->table (usuario, nomesobrenome, email, senha) VALUES (:usuario, :nomesobrenome, :email, :senha)";
			$stmt = DB::prepare($sql);
			$stmt->bindParam(':usuario', $this->usuario);
			$stmt->bindParam(':nomesobrenome', $this->nomesobrenome);
			$stmt->bindParam(':email', $this->email);
			$stmt->bindParam(':senha', $this->senha);
			return $stmt->execute();
		}else {
			return false;
		}
	}
}

 

 

register.php

			<?php
				$usuarios = new Usuarios();
				
				if(isset($_POST['cadastrar'])) {
					$usuario					= $_POST['usuario'];
					$nomesobrenome				= $_POST['nomesobrenome'];
					$email						= $_POST['email'];
					$senha						= $_POST['senha'];
					
					$usuarios->setUsuario($usuario);
					$usuarios->setNomesobrenome($nomesobrenome);
					$usuarios->setEmail($email);
					$usuarios->setSenha($senha);
					
					#Insert
					if($usuarios->insert()) {
						echo 'Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>';
					}
				}
			?>

Quando eu registro a conta aparece a seguinte frase "Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.". Mas já existe um cadastro no banco de dados não aparece nenhum erro, informando que já existe o usuário, o nome e sobrenome ou o e-mail. E quando existe campos vazios o script cadastra a conta do mesmo jeito. O que  preciso mudar para corrigir o meu código?

 

 

Obrigado desde já.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rodrigo5468, existe muitos problemas no seu código, vou falar apenas do problema em questão e outras basicas
 

public function insert() 
{
  if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {
    echo 'Existe campos vazios.</div>'; # Dar echo dentro da classe não é bom!
    return false;
  }

  $stmt = DB::prepare("
    SELECT * 
    FROM {$this->table} 
    WHERE usuario=:usuario 
    OR nomesobrenome=:nomesobrenome 
    OR email=:email"
  );

  $stmt->bindValue(':usuario',$this->usuario,PDO::PARAM_STR);
  $stmt->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR);
  $stmt->bindValue(':email',$this->email,PDO::PARAM_STR);
  $stmt->execute();

  $usuarioExiste = $stmt->rowCount();

  if($usuarioExiste) {
    return false;
  }

  $sql = "INSERT INTO $this->table (usuario, nomesobrenome, email, senha) 
  VALUES (:usuario, :nomesobrenome, :email, :senha)";

  $stmt = DB::prepare($sql);
  $stmt->bindParam(':usuario', $this->usuario);
  $stmt->bindParam(':nomesobrenome', $this->nomesobrenome);
  $stmt->bindParam(':email', $this->email);
  $stmt->bindParam(':senha', $this->senha);

  return $stmt->execute();
		
}

# Esses isset não é necessario, já que as propriedades sempre vão existir
# Você esta esquecendo o  $this-> na validação do campos preenchido
# Você não precisa desse monte de if, else
# Quando quiser encerrar o codigo, use o return

 

12 horas atrás, Rodrigo5468 disse:

$verifica = DB::prepare("SELECT * FROM {$this->table} WHERE usuario=:usuario OR nomesobrenome=:nomesobrenome OR email=:email");

 

Não sei qual é a sua regra de negócio, mas esta certo de que deseja um OR, e não um END?

 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow cara!!! O código fincou bem simples e funciona perfeitamente.

Você disse "mas esta certo de que deseja um OR, e não um END?" Não entendi muito bem o end, seria and? Estou começando agora, não sei qual é o melhor para usar o or, end ou and. Se poder me dá uma força.

 

echo 'Existe campos vazios.</div>'; # Dar echo dentro da classe não é bom!

Você também escreveu isso no código. Também não acho legal dar echo dentro da classe. Eu queria puxar um echo e colocar as informações na página register.php como posso fazer isso?

Exemplo:

			<?php
				$usuarios = new Usuarios();
				
				if(isset($_POST['cadastrar'])) {
					$usuario					= $_POST['usuario'];
					$nomesobrenome				= $_POST['nomesobrenome'];
					$email						= $_POST['email'];
					$senha						= $_POST['senha'];
					
					$usuarios->setUsuario($usuario);
					$usuarios->setNomesobrenome($nomesobrenome);
					$usuarios->setEmail($email);
					$usuarios->setSenha($senha);
					
					#Insert
					if($usuarios->insert()) {
						echo 'Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>';
					}
                  	#Dar echo aqui falando que existe campos vazios.
                  	#Dar echo aqui falando que algum dado que ele tentou registrar já existe no banco de dados.
				}
			?>

 

 

Obrigado por tudo cara, muito obrigado mesmo.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

25 minutos atrás, Rodrigo5468 disse:

echo 'Existe campos vazios.</div>'; # Dar echo dentro da classe não é bom!

Você também escreveu isso no código. Também não acho legal dar echo dentro da classe.

Você pode gerar exceções...

 

Ex dentro do seu contexto:

<?php
public function insert() 
{
	if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {	
		throw new Exception('Existe campos vazios.');
	}
	....

Ai na hora de executar algo +/- assim:

<?php
try {

	$usuario					= $_POST['usuario'];
	$nomesobrenome				= $_POST['nomesobrenome'];
	$email						= $_POST['email'];
	$senha						= $_POST['senha'];
	$usuarios->setUsuario($usuario);
	$usuarios->setNomesobrenome($nomesobrenome);
	$usuarios->setEmail($email);
	$usuarios->setSenha($senha);

	if($usuarios->insert()){
		echo '<div class="success">Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>';
	}
    
} catch (Exception $e) {
	echo '<div class="error">'. $e->getMessage() .'</div>';    
}

 

Ps: foi um exemplo simples, aprofundar é preciso.

 

Leia mais:

http://php.net/manual/pt_BR/language.exceptions.php

 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Princípio orientado à objeto denominado Tell, don't ask. BasicamenteVocê deve mandar/dizer para que uma classe/objeto faça algo e não perguntar a ela sobre o que, ou se, ela realizou. Exceto se o nome do método é uma pergunta (get, is, has, can, etc..).

 

Em um método denominado insert espera-se que o método insira um registro. Se tudo ocorrer certo, um registro será inserido. Se um registro não foi inserido, algo que não estava esperado ocorreu. Se inesperado ocorreu, é uma exceção.

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado)

5 horas atrás, Rodrigo5468 disse:

if($usuarios->insert()) { echo 'Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>'; } #Dar echo aqui falando que existe campos vazios. #Dar echo aqui falando que algum dado que ele tentou registrar já existe no banco de dados.


Você esta muito viciado em if, else rsrs (brincadeira)

Melhorando mais um pouco, ficaria assim:

public function insert() 
{
  if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {
    return 'Existe campos vazios!';
  }

  $stmt = DB::prepare("
    SELECT * 
    FROM {$this->table} 
    WHERE usuario=:usuario 
    OR nomesobrenome=:nomesobrenome 
    OR email=:email"
  );

  $stmt->bindValue(':usuario',$this->usuario,PDO::PARAM_STR);
  $stmt->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR);
  $stmt->bindValue(':email',$this->email,PDO::PARAM_STR);
  $stmt->execute();

  $usuarioExiste = $stmt->rowCount();

  if($usuarioExiste) {
    return 'Usuario já existe!';
  }

  $sql = "INSERT INTO $this->table (usuario, nomesobrenome, email, senha) 
  VALUES (:usuario, :nomesobrenome, :email, :senha)";

  $stmt = DB::prepare($sql);
  $stmt->bindParam(':usuario', $this->usuario);
  $stmt->bindParam(':nomesobrenome', $this->nomesobrenome);
  $stmt->bindParam(':email', $this->email);
  $stmt->bindParam(':senha', $this->senha);

  if ($stmt->execute()) {
	return '<div class="success">Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>';
  }

  return 'Falha ao cadastrar!';	
		
}
<?php
        $usuario = $_POST['usuario'];
        $nomesobrenome = $_POST['nomesobrenome'];
        $email = $_POST['email'];
        $senha = $_POST['senha'];
      
        $usuarios->setUsuario($usuario);
        $usuarios->setNomesobrenome($nomesobrenome);
        $usuarios->setEmail($email);
        $usuarios->setSenha($senha);
      
        echo $usuarios->insert();


Note como o uso do return evita o uso de else, e deixa o código mais simples, como da mesma forma em 

echo $usuarios->insert();

Não é necessário o uso de if elseif. Não deixe de ver a ótima dica do  Tell, don't ask que o Gabriel sugeriu

 

5 horas atrás, Rodrigo5468 disse:

Você disse "mas esta certo de que deseja um OR, e não um END?" Não entendi muito bem o end, seria and?


Sim, um and, escrevi errado :)

Por exemplo:
Considere que esse registro existe no banco: joao, joao da silva, joao@joao.com

Se tentar cadastrar joao, joao dos santos, joao@joao.com
Com o OR, sera cadastrado, com o AND não

De uma pesquisa por "logica de programação, operadores logicos"

Editado por EdCesar
Refatoração: Retirado try catch
1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, EdCesar disse:

Você esta muito viciado em if, else rsrs (brincadeira)

Essa técnica pode se enquadrar como 'early return' 

 

o @EdCesar esqueceu de lançar a exceção...


Não faz sentido ter blocos de try sem uso de 

 

throw new Exception('Oppss.. isso não deveria acontecer.');



Tem alguns artigos para exemplificar o uso do early return independente de usar blocos de try/catch

http://blog.alura.com.br/quanto-mais-simples-melhor/

https://softwareengineering.stackexchange.com/a/18473

 

 

 

 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites
47 minutos atrás, gabrieldarezzo disse:

o @EdCesar esqueceu de lançar a exceção...


@gabrieldarezzo,  bem observado, atualizei e retirei o try cath.
Nesse caso caso dele, acho que dar apenas o return com a mensagem de falha ou sucesso, deixa o código mais simples

Tem outras coisas também que é importante tratar, também como:

$nome = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';

ou no PHP 7:

$usuario = $_POST['usuario'] ?? '';

Foge do tópico, mas fica a dica :)

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi tudo por enquanto, mas estou com uma pequena dúvida, por favor me esclareça.

@EdCesarpode perceber que você citou esses dois últimos códigos.

"Tem outras coisas também que é importante tratar, também como:

$nome = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';

ou no PHP 7:

$usuario = $_POST['usuario'] ?? '';

"

 

 

Eu tenho meus três "private" que irei utilizar para mostrar o usuário os dados incorretos, e que ele precisa corrigir para cadastrar no sistema.

private

private $usuario;
private $nomesobrenome;
private $email;

Aqui nesses seguintes códigos eu quero especificar os campos, usarei o código acima de exemplo que você deixou? Eu testei aqui mas não obtive resultados, se poder me deixar um exemplo.

if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {
	return 'Existe campos vazios!';
}

#####################

if($usuarioExiste) {
	return 'Usuario já existe!';
}

Eu quero especificar se é o usuário, nomesobrenome ou e-mail que está vazio, ou se algum desses dados já existem. Exemplo:

"O campo usuário está vazio, por favor, preencha!"

"O endereço de e-mail que você forneceu já existe em nosso banco de dados, tente usar outro."

 

 

Muito obrigado por tudo mais uma vez.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá novamente!

 

Fiz aqui para ter uma validação um pouco melhor, mas acho que estou fazendo errado, pois não está funcionando perfeitamente.

Verificando se existe campos em brancos, e quais deles estão em branco.

if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {
	if(empty($this->usuario)) {
		return 'Usuário está em branco.';
	}elseif(empty($this->nomesobrenome)) {
		return 'Nome/Sobrenome está em branco.';
	}elseif(empty($this->email)) {
		return 'E-mail está em branco está em branco.';
	}elseif(empty($this->senha)) {
		return 'Senha está em branco.';
	}else{
		return 'Usuário, Nome/Sobrenome, E-mail, Senha, estão em branco.';
	}
	
	return 'Preencha todos os campos em branco.';
}

Verificando se existe algum campo registrado no banco de dados, e quais deles são.

public function insert() {
	if($this->usuario) {
		return 'Campo Usuário já está cadastrado em nosso banco de dados.';
	}elseif($this->nomesobrenome) {
		return 'Campo Nome/Sobrenome  já está cadastrado em nosso banco de dados.';
	}elseif($this->email) {
		return 'Campo E-mail já está cadastrado em nosso banco de dados.';
	}else{
		return 'Algum desses campos já estão cadastrado em nosso banco de dados: Usuário, Nome/Sobrenome ou E-mail.';
	}
	
	return 'Algum dado que você tentou inserir já consta em nosso banco de dados.';
}

 

 

Quando chega para verificar se a senha está em branco ou não, ele prossegue e cadastra o usuário com senha nula. E a mensagem de erro para verificar se existe algum dado já em nosso banco de dados, ele sempre mostra a opção Usuário. Por favor, como faço para arrumar este pequeno detalhe?

 

 

Obrigado mais uma vez.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu código que está com a complexidade ciclomática muito alta. Use early returns para reduzí-la.

 

Quanto a validação, tudo que não permitir a persistência no SGBD é uma exceção, ou seja:

if($this->usuario) {
    throw new RuntimeException('Campo Usuário já está cadastrado em nosso banco de dados.');
}

if($this->nomesobrenome) {
    throw new RuntimeException('Campo Nome/Sobrenome  já está cadastrado em nosso banco de dados.');
}

/** demais validações **/

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tentei fazer do seu método mas já erro.

4NAYqUM.png

E como eu posso diminuir ou até tirar a complexidade ciclamática?

 

 

Desde já, obrigado mais uma vez.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

o

1 hora atrás, Rodrigo5468 disse:

E como eu posso diminuir ou até tirar a complexidade ciclamática?

 

O me chara disse no post ué:

5 horas atrás, Gabriel Heming disse:

Use early returns para reduzí-la.

 

 

Chegou a abrir os links abaixo?

Em 2017-5-17 at 17:29, gabrieldarezzo disse:

Tem alguns artigos para exemplificar o uso do early return independente de usar blocos de try/catch

http://blog.alura.com.br/quanto-mais-simples-melhor/

https://softwareengineering.stackexchange.com/a/18473

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, eu já fiz os try/catch e apliquei os exemplos dos links.

Verificar se existe campos em brancos, e quais são

if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {
	if(empty($this->usuario))
		return 'Campo Usuário em branco.';
	
	if(empty($this->nomesobrenome))
		return 'Campo Nome/Sobrenome em branco.';
	
	if(empty($this->email))
		return 'Campo E-mail em branco';
	
	if(empty($this->senha))
		return 'Campo Senha em branco.';
}

Verificar quais campos estão cadastrado no banco de dados, e quais são

if($usuarioExiste) {
	if($this->usuario)
		return 'Usuario já existe!';
	
	if($this->nomesobrenome)
		return 'Nome/Sobrenome já existe!';
	
	if($this->email)
		return 'E-mail já existe!';
}

 

Para verificar se os campos em branco, ele funciona perfeitamente, mas quando deixa o campo senha em branco ele não apresenta o erro. E o usuário sempre, sempre mostra o primeiro return que é "Usuário já existe". Estou pesquisando em diversos fóruns, artigos, youtube para conseguir arrumar mas não consigo. Se poder me explicar um pouco mais eu agradeço de coração.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rodrigo5468, legal que você esta se esforçando! Melhorando um pouco mais o seu código, na questão das validações, poderia ficar assim:

 

Para a questão dos campos inválidos

Troque:

if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) {
	if(empty($this->usuario))
		return 'Campo Usuário em branco.';
	
	if(empty($this->nomesobrenome))
		return 'Campo Nome/Sobrenome em branco.';
	
	if(empty($this->email))
		return 'Campo E-mail em branco';
	
	if(empty($this->senha))
		return 'Campo Senha em branco.';
}

Por isso:

$propriedades = get_class_vars(get_class($this)); 

if (!filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
  throw new \Exception('E-mail invalido!');
}

foreach ($propriedades as $propriedade => $valor) {
  if (empty($this->$propriedade)) {
    throw new \Exception('o campo '. $propriedade . ' não foi preenchido!');
  }
}


Se na sua classe você tem mais propriedades do que usuario, nomesobrenome,email e senha, então troque

$propriedades = get_class_vars(get_class($this)); 

do código acima, por:
 

$propriedades = [
  'usuario' => $this->usuario, 
  'nomesobrenome' => $this->nomesobrenome, 
  'email' => $this->email, 
  'senha' => $this->senha
];

 

Para a validação dos dados existentes
 

Troque esse trecho:

$usuarioExiste = $stmt->rowCount();

  if($usuarioExiste) {
    return 'Usuario já existe!';
  }

Por esse:

$resultado = $stmt->fetch(\PDO::FETCH_ASSOC);

$dadosJaExistem = array_intersect([
  'usuario' => $this->usuario, 
  'nomesobrenome' => $this->nomesobrenome, 
  'email' => $this->email], 
  $resultado
);

if ($dadosJaExistem) {
   $mensagem = 'O(s) valor(es): ' . implode(',', $dadosJaExistem)  . ' ja existem no banco de dados, por favor escolha outro(s)';
   throw new Exception($mensagem);
}

 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 2017-5-17 at 18:16, EdCesar disse:
Em 2017-5-17 at 17:29, gabrieldarezzo disse:

o @EdCesar esqueceu de lançar a exceção...


@gabrieldarezzo,  bem observado, atualizei e retirei o try cath.
Nesse caso caso dele, acho que dar apenas o return com a mensagem de falha ou sucesso, deixa o código mais simples

Tem outras coisas também que é importante tratar, também como:


$nome = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';

ou no PHP 7:


$usuario = $_POST['usuario'] ?? '';

Foge do tópico, mas fica a dica :)

 

Gostei.  Eu vou estudar isso também.  Bom domingo a todos.

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos

  • Conteúdo Similar

    • Por leopb17
      Olá,
      Venho com um projeto há um tempo, e não encontro uma maneira prática de realizar a seguinte situação:
       Um usuário, já cadastrado, ao acessar uma página específica, é sorteado (aleatóriamente) para um grupo, que será ocupado por outras 10 pessoas da mesma forma (nessa espécie de sorteio) Inicialmente, pensei em estabelecer os grupos em uma espécie de tabela, com um id específico (1,2,3..) e 10 espaços disponíveis para serem preenchidos. Essa tabela, teria uma quantidade inicial de grupos (por exemplo 20) e quanto um grupo fosse preenchido com 10 pessoas, outro novo seria criado, de forma a manter uma quantidade constante de grupos para o sorteio

      Será que alguém poderia me ajudar com alguma base ou ideia?
       
    • Por leopb17
      Olá,
      Venho com um projeto há um tempo, e não encontro uma maneira prática de realizar a seguinte situação:
       Um usuário, já cadastrado, ao acessar uma página específica, é sorteado (aleatóriamente) para um grupo, que será ocupado por outras 10 pessoas da mesma forma (nessa espécie de sorteio) Inicialmente, pensei em estabelecer os grupos em uma espécie de tabela, com um id específico (1,2,3..) e 10 espaços disponíveis para serem preenchidos. Essa tabela, teria uma quantidade inicial de grupos (por exemplo 20) e quanto um grupo fosse preenchido com 10 pessoas, outro novo seria criado, de forma a manter uma quantidade constante de grupos para o sorteio

      Será que alguém poderia me ajudar com alguma base ou ideia?
       
    • Por Gabrielvt14
      Olá pessoal,
       
      Estou querendo salvar no banco de dados um link (https://site.com.br) e quero utilizar PDO para isso.
      Mas pensei na hipótese do prepare barrar alguns caracteres, como, "/" (barra), ":" (dois pontos), etc...
       
      Alguém saberia me responder se o prepare barraria esses caracteres de links? Pois sei que ele faz uma filtragem na query para evitar ataques, mas não sei exatamente quais caracteres ele filtra.
       
      Desde já, grato!
    • Por diegoaugusto
      Pessoal, estou precisando sincronizar um banco de dados mysql em um servidor local com uma copia dele que fica em um servidor web.
       
      Existe alguma maneira automatizada de fazer esse processo?
    • Por x86bra
      Pessoal, bom dia.
      Estou tendo certa dificuldade em manipular informações entre javascript e PHP. Tenho duas páginas, uma com um textbox e um submit e outra escrita em php onde faço conexão com o mysql e tento dar o insert, só que quando vou ver no banco, a tabela está em branco (não NULL, um espaço em branco tipo " ").
       
      Esta é a primeira página, onde tem os campos e o script:
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery-ui.min.js"></script> </head> <input type="text" name="codigo" id="codigo" /> <input type="button" name="btn" id="btn" value="Submit" onclick="tst()" /> <script> function tst(){ var info={code: $('#codigo').val()}; $.post({ url: "testejquery.php", dataType:"text", data: info, success: function() { window.open('testejquery.php'); } }); console.log(info); } </script> <body> </body> </html> No console eu consigo ver que a variável foi preenchida corretamente.
       
      Aqui a segunda página:
      <?php mysql_connect("localhost:3306", "root", "") or die(mysql_error()); mysql_select_db("teste") or die(mysql_error()); error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); $dado = (isset( $_POST['muge'])); $sql = "INSERT INTO test (coisa) VALUES ('$coisa')"; $result = mysql_query($sql) or die(mysql_error()); ?> O insert até que funciona, porém coloca tudo em branco no BD, como se não estivesse recebendo a informação da primeira pagina 
      Alguém pode me dar uma luz?