Jump to content
Carlos Louvato

Gerar nova Senha :Warning: mysqli_query() expects parameter 1 to be

Recommended Posts

Olá, estou ativando um antigo código PHP.  Já tentei resolver com a troca de mysql_query()  para mysqli_query().

Onde iniciou erro que não consigo arrumar. Sei que no caso de mysqli_query() devo colocar o parametro no início: $conecta( no meu caso).

Se alguem puder me dar um paremetro para estudar , eu agradeço.

A finalidade é gerar uma nova senha. Manda automaticamente uma senha randômica e já troca automaticamente no banco de dados.

 

ERRO: 

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/copam957/public_html/copa1/gerar_nova_senha.php on line 35

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /home/copam957/public_html/copa1/gerar_nova_senha.php on line 36
Este email não é cadastrado em nosso banco de dados.

Segui código:

 

<?php

include "conecta.php";
mysqli_set_charset($conecta, "utf8");

$recupera = $_POST['recupera'];
$email = $_POST['email'];

switch($recupera){

	case "recupera":
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

function recupera_senha($email){

	if(!isset($email)){

        echo "Você esqueceu de preencher seu email.<br />
			<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />"; 

		include "formulario_senha_perdida.html";

		exit();

	}

	// Checando se o email informado está cadastrado
		
	$sql_check = mysqli_query($conecta, "SELECT * FROM usuario WHERE email='{$email}'");
	$sql_check_num = mysqli_num_rows($sql_check);

	if($sql_check_num == 0){

		echo "Este email não é cadastrado em nosso banco de dados.<br /><br />";

		include "formulario_senha_perdida.html";

		exit();

	}
	
	// Se tudo OK vamos gerar uma nova senha e enviar para o email do usu⳩o!

	function makeRandomPassword(){

		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
		srand((double)microtime()*1000000);

		$i = 0;

		while ($i <= 7){

			$num = rand() % 33;
			$tmp = substr($salt, $num, 1);
			$pass = $pass . $tmp;
			$i++;

		}

		return $pass;

	}

	$senha_randomica = makeRandomPassword();

	$senha = md5($senha_randomica);

	$sql = mysqli_query($conecta, "UPDATE usuario SET senha='{$senha}' WHERE email ='{$email}'");

	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: MKYS - 1Copa MKYS de Jiu Jitsu.<contato@copamkys.com.br>"; //COLOQUE TEU EMAIL

	$subject = "Sua nova senha no site COPA MKYS";
	$message = "Olá, redefinimos sua senha.<br /><br />

	<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />

	<a href='http://www.copamkys.com.br/copa1/index.php'>http://www.copamkys.com.br/copa1/index.php</a><br /><br />

	Obrigado!<br /><br />

	Carlos Louvato (Organização)<br /><br /><br />


	Esta é uma mensagem automática, por favor não responda!";

	mail($email, $subject, $message, $headers);

	echo "<script language=javascript>alert( 'EMAIL ENVIADO COM SUCESSO! VERIFIQUE SEU E-MAIL!!' );location.href='index.php';</script>";


}

?>

Lembrando que o email de recuperação vem de um formulario HTML.

Grato a todos

Share this post


Link to post
Share on other sites

verifique:

1. se esta instalada a extensao mysqli (pesquise sobre phpinfo());

2. o que ha na variavel $conecta

(poste o arquivo conecta.php ou pesquise sobre mysqli_connect)

Share this post


Link to post
Share on other sites
7 minutos atrás, Fernando C disse:

verifique:

1. se esta instalada a extensao mysqli (pesquise sobre phpinfo());

2. o que ha na variavel $conecta

(poste o arquivo conecta.php ou pesquise sobre mysqli_connect)

Olá,  segui codigo $conecta

 

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_conecta = "localhost";
$database_conecta = "copam957_****";
$username_conecta = "copam957_root";
$password_conecta = "*******";
$conecta = mysqli_connect($hostname_conecta, $username_conecta, $password_conecta) or trigger_error(mysql_error(),E_USER_ERROR); 
mysqli_set_charset($conecta, "utf8");
?>

Grato Carlos

Share this post


Link to post
Share on other sites

Crie um arquivo com qualquer nome em .php e coloque no arquivo: 

phpinfo();

 

Após, abra o arquivo no seu site, e procure pela extensão mysqli, se houver e tiver ativo, beleza, menos mau.

 

Seguindo seu código, deixe-o assim:

 

<?php

include "conecta.php";
mysqli_set_charset($conecta, "utf8");

$recupera = $_POST['recupera'];
$email = $_POST['email'];

switch($recupera){

	case "recupera":
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

function recupera_senha($email){
	if(!isset($email)){
        echo "Você esqueceu de preencher seu email.<br />
			<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />"; 
		include "formulario_senha_perdida.html";
		exit();
	}

	// Checando se o email informado está cadastrado
		
	if($sql_check = $conecta->query("SELECT * FROM usuario WHERE email = '{$email}'")){
    	$sql_check_num = $sql_check->num_rows;
    }

	if($sql_check_num == 0){
		echo "Este email não é cadastrado em nosso banco de dados.<br /><br />";
		include "formulario_senha_perdida.html";
		exit();
	}
	
	// Se tudo OK vamos gerar uma nova senha e enviar para o email do usu⳩o!
	function makeRandomPassword(){
		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
		srand((double)microtime()*1000000);
		$i = 0;
		while ($i <= 7){
			$num = rand() % 33;
			$tmp = substr($salt, $num, 1);
			$pass = $pass . $tmp;
			$i++;
		}
		return $pass;
	}

	$senha_randomica = makeRandomPassword();
	$senha = md5($senha_randomica);
	$sql = mysqli_query($conecta, "UPDATE usuario SET senha='{$senha}' WHERE email ='{$email}'");

	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: MKYS - 1Copa MKYS de Jiu Jitsu.<contato@copamkys.com.br>"; //COLOQUE TEU EMAIL
	$subject = "Sua nova senha no site COPA MKYS";
	$message = "Olá, redefinimos sua senha.<br /><br />
	<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />
	<a href='http://www.copamkys.com.br/copa1/index.php'>http://www.copamkys.com.br/copa1/index.php</a><br /><br />
	Obrigado!<br /><br />
	Carlos Louvato (Organização)<br /><br /><br />
	Esta é uma mensagem automática, por favor não responda!";
	mail($email, $subject, $message, $headers);
	echo "<script language=javascript>alert( 'EMAIL ENVIADO COM SUCESSO! VERIFIQUE SEU E-MAIL!!' );location.href='index.php';</script>";
}
?>

 

Share this post


Link to post
Share on other sites

O erro ocorre pois no PHP variáveis globais não são acessíveis em outros escopos(http://php.net/manual/en/language.variables.scope.php) e você está tentando acessar a variável global $conecta no escopo da função recupera_senha.

 

Para que ela seja acessível você deve declarar a intenção de uso com a palavra chave global.

//...
function recupera_senha($email){
    global $conecta;
//...

 

Porem saliento que o uso de variáveis globais é desencorajado.

Share this post


Link to post
Share on other sites
Em 11/05/2018 at 17:49, Jhess disse:

Crie um arquivo com qualquer nome em .php e coloque no arquivo: 


phpinfo();

 

Após, abra o arquivo no seu site, e procure pela extensão mysqli, se houver e tiver ativo, beleza, menos mau.

 

Seguindo seu código, deixe-o assim:

 


<?php

include "conecta.php";
mysqli_set_charset($conecta, "utf8");

$recupera = $_POST['recupera'];
$email = $_POST['email'];

switch($recupera){

	case "recupera":
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

function recupera_senha($email){
	if(!isset($email)){
        echo "Você esqueceu de preencher seu email.<br />
			<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />"; 
		include "formulario_senha_perdida.html";
		exit();
	}

	// Checando se o email informado está cadastrado
		
	if($sql_check = $conecta->query("SELECT * FROM usuario WHERE email = '{$email}'")){
    	$sql_check_num = $sql_check->num_rows;
    }

	if($sql_check_num == 0){
		echo "Este email não é cadastrado em nosso banco de dados.<br /><br />";
		include "formulario_senha_perdida.html";
		exit();
	}
	
	// Se tudo OK vamos gerar uma nova senha e enviar para o email do usu⳩o!
	function makeRandomPassword(){
		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
		srand((double)microtime()*1000000);
		$i = 0;
		while ($i <= 7){
			$num = rand() % 33;
			$tmp = substr($salt, $num, 1);
			$pass = $pass . $tmp;
			$i++;
		}
		return $pass;
	}

	$senha_randomica = makeRandomPassword();
	$senha = md5($senha_randomica);
	$sql = mysqli_query($conecta, "UPDATE usuario SET senha='{$senha}' WHERE email ='{$email}'");

	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: MKYS - 1Copa MKYS de Jiu Jitsu.<contato@copamkys.com.br>"; //COLOQUE TEU EMAIL
	$subject = "Sua nova senha no site COPA MKYS";
	$message = "Olá, redefinimos sua senha.<br /><br />
	<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />
	<a href='http://www.copamkys.com.br/copa1/index.php'>http://www.copamkys.com.br/copa1/index.php</a><br /><br />
	Obrigado!<br /><br />
	Carlos Louvato (Organização)<br /><br /><br />
	Esta é uma mensagem automática, por favor não responda!";
	mail($email, $subject, $message, $headers);
	echo "<script language=javascript>alert( 'EMAIL ENVIADO COM SUCESSO! VERIFIQUE SEU E-MAIL!!' );location.href='index.php';</script>";
}
?>

 

 Olá Jhess, Esta ativo a Extensão! Tenho algumas páginas trabalhando com mysqlI.

Apresentou o erro:

Citar

Parse error: syntax error, unexpected 'switch' (T_SWITCH) in /home/copam957/public_html/copa1/gerar_nova_senha.php on line 9

 

Grato Carlos

Share this post


Link to post
Share on other sites
Em 11/05/2018 at 20:16, HwapX disse:

O erro ocorre pois no PHP variáveis globais não são acessíveis em outros escopos(http://php.net/manual/en/language.variables.scope.php) e você está tentando acessar a variável global $conecta no escopo da função recupera_senha.

 

Para que ela seja acessível você deve declarar a intenção de uso com a palavra chave global.


//...
function recupera_senha($email){
    global $conecta;
//...

 

Porem saliento que o uso de variáveis globais é desencorajado.

 Olá, estou incluindo no escopo a informação. Devo incluir apenas o codigo: global $conecta; ?

Grato pela ajuda

 

Share this post


Link to post
Share on other sites
Em 11/05/2018 at 17:49, Jhess disse:

Crie um arquivo com qualquer nome em .php e coloque no arquivo: 


phpinfo();

 

Após, abra o arquivo no seu site, e procure pela extensão mysqli, se houver e tiver ativo, beleza, menos mau.

 

Seguindo seu código, deixe-o assim:

 


<?php

include "conecta.php";
mysqli_set_charset($conecta, "utf8");

$recupera = $_POST['recupera'];
$email = $_POST['email'];

switch($recupera){

	case "recupera":
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

function recupera_senha($email){
	if(!isset($email)){
        echo "Você esqueceu de preencher seu email.<br />
			<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />"; 
		include "formulario_senha_perdida.html";
		exit();
	}

	// Checando se o email informado está cadastrado
		
	if($sql_check = $conecta->query("SELECT * FROM usuario WHERE email = '{$email}'")){
    	$sql_check_num = $sql_check->num_rows;
    }

	if($sql_check_num == 0){
		echo "Este email não é cadastrado em nosso banco de dados.<br /><br />";
		include "formulario_senha_perdida.html";
		exit();
	}
	
	// Se tudo OK vamos gerar uma nova senha e enviar para o email do usu⳩o!
	function makeRandomPassword(){
		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
		srand((double)microtime()*1000000);
		$i = 0;
		while ($i <= 7){
			$num = rand() % 33;
			$tmp = substr($salt, $num, 1);
			$pass = $pass . $tmp;
			$i++;
		}
		return $pass;
	}

	$senha_randomica = makeRandomPassword();
	$senha = md5($senha_randomica);
	$sql = mysqli_query($conecta, "UPDATE usuario SET senha='{$senha}' WHERE email ='{$email}'");

	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: MKYS - 1Copa MKYS de Jiu Jitsu.<contato@copamkys.com.br>"; //COLOQUE TEU EMAIL
	$subject = "Sua nova senha no site COPA MKYS";
	$message = "Olá, redefinimos sua senha.<br /><br />
	<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />
	<a href='http://www.copamkys.com.br/copa1/index.php'>http://www.copamkys.com.br/copa1/index.php</a><br /><br />
	Obrigado!<br /><br />
	Carlos Louvato (Organização)<br /><br /><br />
	Esta é uma mensagem automática, por favor não responda!";
	mail($email, $subject, $message, $headers);
	echo "<script language=javascript>alert( 'EMAIL ENVIADO COM SUCESSO! VERIFIQUE SEU E-MAIL!!' );location.href='index.php';</script>";
}
?>

 

image.thumb.png.701b7449c119b84a3c1524b9a479d269.png

Share this post


Link to post
Share on other sites

Ok, vamos corrigir primeiro sua conexão com o banco:

 

<?php
//Comentarios sao dispensaveis
$hostname_conecta = "localhost";
$database_conecta = "copam957_****";
$username_conecta = "copam957_root";
$password_conecta = "*******";

//Na conexao que você havia feito, esqueceu de especificar a database no link de conexao
$conecta = new mysqli($hostname_conecta, $username_conecta, $password_conecta, $database_conecta);

if ($conecta->connect_error) {
    die("Erro de conexao: " . $conecta->connect_error);
} 

mysqli_set_charset($conecta, "utf8");
?>

 

Algum erro deve estar ocorrendo antes do seu switch, vamos tratar, então:

 

<?php

$recupera = addslashes($_POST['recupera']);
// echo $recupera; // Pra verificar o que está vindo
$email = addslashes($_POST['email']);

include "conecta.php"; // Verifique se o arquivo está correto e tem permissões no seu FTP / Host
//mysqli_set_charset($conecta, "utf8"); -- Como ja foi definido no arquivo conecta.php nao existe razao pra setar charset de novo

switch($recupera){
	case "recupera": //Verifique se é isso mesmo que está recebendo da sua variável $_POST['recupera']
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

 

Share this post


Link to post
Share on other sites
2 horas atrás, Jhess disse:

Ok, vamos corrigir primeiro sua conexão com o banco:

 


<?php
//Comentarios sao dispensaveis
$hostname_conecta = "localhost";
$database_conecta = "copam957_****";
$username_conecta = "copam957_root";
$password_conecta = "*******";

//Na conexao que você havia feito, esqueceu de especificar a database no link de conexao
$conecta = new mysqli($hostname_conecta, $username_conecta, $password_conecta, $database_conecta);

if ($conecta->connect_error) {
    die("Erro de conexao: " . $conecta->connect_error);
} 

mysqli_set_charset($conecta, "utf8");
?>

 

Algum erro deve estar ocorrendo antes do seu switch, vamos tratar, então:

 


<?php

$recupera = addslashes($_POST['recupera']);
// echo $recupera; // Pra verificar o que está vindo
$email = addslashes($_POST['email']);

include "conecta.php"; // Verifique se o arquivo está correto e tem permissões no seu FTP / Host
//mysqli_set_charset($conecta, "utf8"); -- Como ja foi definido no arquivo conecta.php nao existe razao pra setar charset de novo

switch($recupera){
	case "recupera": //Verifique se é isso mesmo que está recebendo da sua variável $_POST['recupera']
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

 

Olá, Jhess , antes de mais nada obrigado pela ajuda.

Fiz a mudança na conexão do Banco como solicitou. Tudo Certo!

 

Fiz  passa a passo o tratamento. O único erro

Citar

Parse error: syntax error, unexpected '}' in /home/copam957/public_html/copa1/gerar_nova_senha.php on line 18

 

Fui acompanhando a abre e fecha das chaves, mais não achei o motivo do erro.

 

Verifiquei tb o arquivo e suas permissões no seu FTP / Host. Está com todas as permissões.

 

Vou postar código html do Formulário de senha perdida. Pelo que observei esta mandando as informações corretas.

<!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=iso-8859-1" />
<title>Formul&aacute;rio Nova Senha</title>
<style type="text/css">
@import url("css/estilos.css");
</style>
</head>
<div align="center"><iframe src="topointerno.html" width="800" height="400" align="middle" scrolling="no" frameborder="0"></iframe></div>
<body>
</form>
<form id="form2" name="form2" method="post" action="">
  <div align="center"></div>
</form>
<form name="form1" method="post" action="gerar_nova_senha.php">

  <div align="center">
    <p>Por favor digite o seu email que est&aacute; cadastrado em nosso banco de dados;<br />
      
      <input name="email" type="text" id="email" />
      <input name="recupera" type="hidden" id="recupera" value="recupera" />
    </p>
    <p>
      <input type="submit" name="Submit2" value="Gerar Senha" id="Submit2" />
    </p>
  </div>
</form>

</body>
</html>

Em algumas mudanças ele chegou a enviar o email de alteração. Mais não faz a mudança no banco pelo comando UPDATE.

Então pq deve ter erro como você falou antes do switch.

Grato pela ajuda. E vou tentando até conseguir acertar.

Grato Carlos Louvato

 

 

 

 

 

 

Share this post


Link to post
Share on other sites
Em 14/05/2018 at 17:26, Carlos Louvato disse:

Fiz  passa a passo o tratamento. O único erro

 

Tente tirar todos os comentários que eu coloquei.

Share this post


Link to post
Share on other sites
Em 16/05/2018 at 14:11, Jhess disse:

 

Tente tirar todos os comentários que eu coloquei.

Olá JHESS.

Refiz todos os passos e corrigi o erro de sintaxe.

Codigo ficou:

 

<?php

$recupera = addslashes($_POST['recupera']);
$email = addslashes($_POST['email']);

include "conecta.php";

switch($recupera){
	case "recupera":
		recupera_senha($email);
		break;

	default:
		include "formulario_senha_perdida.html";
		break;
}

function recupera_senha($email){
	if(!isset($email)){
        echo "Você esqueceu de preencher seu email.<br />
			<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />"; 
		include "formulario_senha_perdida.html";
		exit();
	}

	// Checando se o email informado está cadastrado
		
	if($sql_check = $conecta->query("SELECT * FROM usuario WHERE email = '{$email}'")){
    	$sql_check_num = $sql_check->num_rows;
    }

	if($sql_check_num == 0){
		echo "Este email não é cadastrado em nosso banco de dados.<br /><br />";
		include "formulario_senha_perdida.html";
		exit();
	}
	
	// Se tudo OK vamos gerar uma nova senha e enviar para o email do usu?o!
	function makeRandomPassword(){
		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
		srand((double)microtime()*1000000);
		$i = 0;
		while ($i <= 7){
			$num = rand() % 33;
			$tmp = substr($salt, $num, 1);
			$pass = $pass . $tmp;
			$i++;
		}
		return $pass;
	}

	$senha_randomica = makeRandomPassword();
	$senha = md5($senha_randomica);
	$sql = mysqli_query($conecta, "UPDATE usuario SET senha='{$senha}' WHERE email ='{$email}'");

	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: MKYS - 1Copa MKYS de Jiu Jitsu.<contato@copamkys.com.br>"; //COLOQUE TEU EMAIL
	$subject = "Sua nova senha no site COPA MKYS";
	$message = "Olá, redefinimos sua senha.<br /><br />
	<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />
	<a href='http://www.copamkys.com.br/copa1/index.php'>http://www.copamkys.com.br/copa1/index.php</a><br /><br />
	Obrigado!<br /><br />
	Carlos Louvato (Organização)<br /><br /><br />
	Esta é uma mensagem automática, por favor não responda!";
	mail($email, $subject, $message, $headers);
	echo "<script language=javascript>alert( 'EMAIL ENVIADO COM SUCESSO! VERIFIQUE SEU E-MAIL!!' );location.href='index.php';</script>";
}
?>

 Voltou apresentar o erro:

Citar

Fatal error: Call to a member function query() on null in /home/copam957/public_html/copa1/gerar_nova_senha.php on line 28

 

Na linha :

 

if($sql_check = $conecta->query("SELECT * FROM usuario WHERE email = '{$email}'")){

 

Estou experimentando outras formas de solicitar novas senhas. mais ainda gosto de receber pelo email.

Obrigado pela ajuda.

Carlos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By wandoh
      Boa Tarde! estou com um dificuldades de puxar os dados do usuário logado no site. Atualmente estou conseguindo puxar somente o NOME, quando tento puxar o restante da erro! Abaixo segue o Código.
       
      session_start(); //inicializa variaveis $id = "accountid"; $name = ""; $email = ""; $errors = array(); //conexão db $db = mysqli_connect('localhost', 'root', 'senha', 'db') or die("could not connect to database"); //Registrar usuário if (isset($_POST['reg_user'])) { // receives all input values from the form $name = mysqli_real_escape_string($db, $_POST['name']); $email = mysqli_real_escape_string($db, $_POST['email']); $password = mysqli_real_escape_string($db, $_POST['password']); $password2 = mysqli_real_escape_string($db, $_POST['password2']); //form validação: ensure that the form is correctly filled ... // by adding (array_push)) corresponding error unto $errors array if(empty($name)) { array_push($errors, " "); } if(empty($email)) { array_push($errors, " "); } if(empty($pwd)) { array_push($errors, " "); } if($pwd != $pw2) { array_push($errors, " "); } // To protect MySQL injection (more detail about MySQL injection) $name = stripslashes($name); $password = stripslashes($password); // first check the databese to make sure // verifica na db se a usuário existente com o mesmo nome de usuário e email $user_check_query = "SELECT * FROM t_account WHERE name='$name' or email='$email' LIMIT 1"; $result = mysqli_query($db, $user_check_query); $user = mysqli_fetch_assoc($result); if($user) { // if user existente if ($user['name'] === $name) { array_push($errors, " "); } if ($user['email'] === $email) { array_push($errors, " "); } } // Registra o usuário se não haver erros if (count($errors) == 0 ) { $pwd = md5($pwd); print $pwd; $query = "INSERT INTO t_account (name, email, pwd, pw2) VALUES ('$name', '$email', '$password', '$password2')"; mysqli_query($db, $query); $_SESSION['accountid'] = $id;// $_SESSION['name'] = $name; $_SESSION['success'] = 'Você está logado em'; echo " "; //header('location: index.php'); } } //LOGIN USER if (isset($_POST['login_user'])) { $name = mysqli_real_escape_string($db, $_POST['name']); $password = mysqli_real_escape_string($db, $_POST['password']); if (empty($name)) { array_push($errors, " "); } if (empty($password)) { array_push($errors, " "); } if (count($errors) == 0 ) { $pwd = md5($pwd); $query = "SELECT 'email' FROM t_account WHERE name='$name' AND password='$password'"; $results = mysqli_query($db, $query); if (mysqli_num_rows($results)) { $_SESSION['accountid'] = $id;// $_SESSION['name'] = $name; $_SESSION['success'] = 'Você está logado em'; echo " "; //header('location: index.php'); }else{ array_push($errors, " "); } } } Com a variável abaixo, é exibido o nome de quem esta logado.
      $_SESSION["name"] Já com os demais, não e exibido o resultado é apresentado uma msg de erro.
      $_SESSION["email"] Notice: Undefined index: email in Passei em todos os post que tem sobre o assunto, mas infelizmente em meu código não deu certo.
       Sou novo em PHP!
      Preciso puxar todos os dados cadastrado do usuário.
    • By Mucio Willamys
      olá, gostaria da ajuda de vcs :
      este código traz as informações do banco de dados e as coloca dentro de um select html
      é parte de um projeto de um sistema de uma clínica médica, onde ao cadastrar os médicos posso escolher a especialidade do mesmo.
      <select name="especialidade" required="">                 <option value="" >--Escolha uma especialidade--</option>          <?php              $result_especialidade = "select * from especialidade";              $result_especialidade = mysqli_query($bd, $result_especialidade);              while ($row_especialidade = mysqli_fetch_assoc($result_especialidade)){ ?>                    <option value="<?php echo $row_especialidade['id']; ?>"><?php echo  $row_especialidade['nome']; ?> </option> public function editar($id){ include "Bd.class.php"; $nome = $this->nome; $cpf = $this->cpf; $crm = $this->crm; $especialidade = $this->especialidade; $query = "update medico set nome = '$nome', cpf = '$cpf', crm = '$crm', especialidade_id = '$especialidade' where id = $id"; $status = $bd->query($query); return $status; } Acima ^ está a função editar...
       
       
       
      abaixo está o form com as informações do médico.
      <form method="POST" action="../controller/Controller-medico.php?op=e"> <input type="hidden" name="id" size="5" value="<?php echo $id; ?>" > <div class="campo"> <label for="nome">Nome: </label> <input type="nome" name="nome" size="30" value="<?php echo $m->getNome() ?>"> </div> <div class="campo"> <label for="cpf">CPF: </label> <input type="text" name="cpf" size="30" value="<?php echo $m->getCpf() ?>"> </div> <div class="campo"> <label for="rg">CRM: </label> <input type="text" name="crm" size="30" value="<?php echo $m->getCrm() ?>"> </div> <div class="campo"> <label for="especialidade"> Especialidade: </label> </div> <div class="campo"> <input type="submit" value="Atualizar"> </div> </form> Gostaria de saber como faço pra setar um input ou um select no caso para a alteração do dado(especialidade)?
    • By Filipe556
      alguém tem ideia de algum método de bloquear usuário por ip
    • By vini_seven
      Segue aqui meu código abaixo, o que ocorre é o seguinte, quando o usuário logar ele vai para a página de chat, quando ele vai para essa página é feito um update no banco de dados para status = 1 esse status igual a 1 é a minha condição para exibição na página usuários para então que o técnico da T.I escolha quem atender, todas que estão com status = 1 vão estar visíveis lá. Porém ao usuário clicar no botão sair na página de chat, quero que faça o update no banco de dados com status = 0 novamente, para então na página de usuários a ser atendido ele vai sair, vou colocar um refresh a cada 60s nessa página para ela atualizá-la. ----CÓDIGO DO TRECHO DA PÁGINA CHAT ONDE TEM O BOTÃO SAIR---
      <> <body> <div class="contact1"> <div class="fundo_chat"> <div class="janela_chat"> </div> <form action="chat.php" method="post" class="form-chat"> <input type="text" name="mensagem" id="mensagem" placeholder="Mensagem"> <tr> <button class="btn btn-primary" type="submit" id="botao-enviar">Enviar</button> <a class="btn btn-primary" href="logout.php" role="button" id="botao-sair">Sair</a> </form> </div> </div> </body> </html> <> --CÓDIGO ONDE É FEITO A VALIDAÇÃO DE LOGIN, REDIRECIONA PARA A PÁGINA DE USUÁRIOS QUEM É DA T.I, OS RESTANTES DE OUTROS SETORES VÃO DIRETO PARA A CHAT ONDE AGUARDA ATENDIMENTO E AO SER REDIRECIONADO MUDA STATUS PARA =1, ESTÁ MUDANDO PARA 1 PERFEITAMENTE.-- <> <?php session_start(); header('Content-Type: text/html; charset=utf-8'); include("conexao.php"); if(empty($_POST['nome']) || empty($_POST['senha'])){ header('location:index.html'); exit(); } $nome = mysqli_real_escape_string($conn, $_POST['nome']); $senha = mysqli_real_escape_string($conn, $_POST['senha']); $query = "select * from usuarios where nome = '$nome' and senha = '$senha'"; $setor = "SELECT setor FROM usuarios"; $result = mysqli_query($conn, $query); $row = mysqli_num_rows($result); if($row == 1){ $_SESSION['nome'] = $nome && $_SESSION['senha'] = $senha; while ($verifica_setor = mysqli_fetch_array($result)) { $setor = $verifica_setor['setor']; if ($setor == "Tecnologia da Informação") { header('location: usuarios.php'); }else{ mysqli_query($conn, "UPDATE usuarios set status = '1' WHERE nome = '$nome'"); header('location: chat.php'); } } } else { echo "<script>alert('USUÁRIO NÃO CADASTRADO OU DADOS INVÁLIDOS!');</script>"; echo "<script>window.location='index.html';</script>"; exit(); } ?> <> --AQUI É O MEU LOGOUT, ONDE EU INICIO A PARAMETRO SESSION PARA PEGAR O VALOR GLOBAL DELA QUE TINHA QUE SER O NOME PARA BUSCAR NA TABELA, FIZ UM OR DIE PARA TESTAR O QUERY E UM ECHO PARA VER O QUE ESTAVA SENDO EXIBIDO, E O QUE EXIBE NO ECHO É O VALOR = 1, POR ISSO A QUERY NAO FUNCIONA DO JEITO CERTO-- <> <?php include("conexao.php"); session_start(); echo $_SESSION['nome']; mysqli_query($conn, "UPDATE usuarios SET status = '0' WHERE nome = '$nome'") or die ("PARAMETROS NAO ALTERADO"); /* session_destroy(); header('location:index.html'); exit();*/ ?> <>  
    • By Sapinn
      Salve! Estou desenvolvendo um sistema de mensagens para o meu site no qual o ADM envia a mensagem para todos os usuarios ou ele pode digitar o email de um usuaio e será enviado apenas para este usuario especifico, além disso, o usuario recebe um tipo de notificação que informa que tem uma nova mensagem. O problema está sendo justamente nesta segunda parte não consigo pensar em uma logica para que a mensagem destinada a apenas um usuario so seja notificado ele.
      Alguém pode me ajudar
      vejam meu codigo
       
      <?php //conexao com o banco de dados include '../php/conexao.php'; //pega a tabela mensagem $query = mysql_query("select * from mensagem")or die(mysql_error //ver todos os dados que tem nela while($mensagem = mysql_fetch_assoc($query)){ //verifica na tabela ler se o codigo do aluno é igual ao codigo do usuario logado se tem alguma mensagem na tabela e se o email do destinatario é igual //ao do usuario logado $ver = mysql_query("SELECT * FROM ler where codigo_aluno='".$row['id']."' and codigo_mensagem= '".$mensagem['id']."' and destinatario ='".$row['email']."'")or die(mysql_error); } //se for igual ao 0 ou seja não tiver tudo ok significa que ele não leu a mensagem então mostra a notificação if(mysql_num_rows($ver) == 0){ ?> <span class="app-menu__label">Mensagens</span> <i><img src="../img/icone/menu/sino_mensagem.png" width="26px" height="26px"></i></a> </li> <?php //se não ele não mostro porque ela já foi lida }else{ ?> <span class="app-menu__label">Menssagem</span></a> </li> <?php } ?> Preciso de ajuda acho que o erro é na minha logica 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.