Ir para conteúdo

POWERED BY:

Arquivado

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

First

Atualizar dados

Recommended Posts

Olá!

 

Eu queria saber como que eu posso fazer um script para atualizar os dados do registrado, como "Nome, E-mail, Senha, etc..."

 

Como posso fazer isso?

HTML

<form action="" enctype="multipart/form-data" method="post" name="post" id="ucp">
						<h2 class="block">Alterar senha</h2>
						<h3 style="font-size:12px;">Os campos marcados com um * são obrigatórios.</h3>
						<p>
							<fieldset style="font-size:13px;">
								<dl>
									<dt><label>Senha atual : *</label></dt>
									<dd><input type="password" name="" size="50"/></dd>
								</dl>
								<dl>
									<dt><label>Nova senha : *</label></dt>
									<dd><input type="password" name="" size="50"/></dd>
								</dl>
								<dl>
									<dt><label>Confirmar senha : *</label></dt>
									<dd><input type="password" name="" size="50"/></dd>
								</dl>
							</fieldset>
						</p>
						<input type="submit" value="Salvar" style="background-color:#d18f4f!important;">
					</form>

se na senha eu colocar user_password será que resulta?

Alguém pode me explicar como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz,

 

Eu colocaria mais uma informação ai, talvez eu deixaria o login na SESSION, mas vamos partir do principio que não está. Não sou expert, mas faria assim

 

Aproveitaria este seu código, ele está enviando para o mesmo arquivo, então será necessário uma conexão com o banco ai.

$link = mysqli_connect("localhost","root","") or die("erro na conexão");
mysqli_select_db($link, "login");
 
//Recebendo os dados enviados no formulário
 
$login = $_POST['login'] // é bom criar um campo lá, se estivesse na session usaria $_SESSION['login']
$senhaAntiga = $_POST['sAntiga'];
$senhaNova = $_POST['sNova'];
$confimSenha = $_POST['sConfirm'];
 
if( $senhaNova == $confirmSenha){
 
   $query = mysqli_query($link,"UPDATE usuarios SET passoword = ".$senhaNova." WHERE loginUsuario =".$login);
if($query ==1){
echo "<script type='text/javascript' >alert('Senha atualizada com sucesso!'); </script>";
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Boa noite, queridos amigos eu tenho algumas dúvidas, será que podem me responder?

 

Leozin, pelo que eu entendi no seu tutorial está ensinando a criar um sistema de login e registro etc... não seria isso que eu queria, também não entendi muito pois sou iniciante com PHP.

 

li0n, sim, eu estou usando conexão MySQL®.

 

Ldovale, seu código eu conseguir ler um pouco, porem como eu disse eu tenho algumas dúvidas... irei explicar mais claro certo?

 

Bom, eu tenho um sistema pronto e já funcionando... um sistema de login, registro, área restrita para usuários conectados, porem eu fiz um novo arquivo php /profile.php para editarem os seus dados como por exemplo a senha. Porem eu não sei como pegar os dados que é Senha atual e Senha e confirmar a senha e mandar pro Banco e salvar...

 

Olha aqui o script

<?php

/**
 * Class login
 * handles the user's login and logout process
 */
class Login
{
    /**
     * @var object The database connection
     */
    private $db_connection = null;
    /**
     * @var array Collection of error messages
     */
    public $errors = array();
    /**
     * @var array Collection of success / neutral messages
     */
    public $messages = array();

    /**
     * the function "__construct()" automatically starts whenever an object of this class is created,
     * you know, when you do "$login = new Login();"
     */
    public function __construct()
    {
        // create/read session, absolutely necessary
        session_start();

        // check the possible login actions:
        // if user tried to log out (happen when user clicks logout button)
        if (isset($_GET["logout"])) {
            $this->doLogout();
        }
        // login via post data (if user just submitted a login form)
        elseif (isset($_POST["login"])) {
            $this->dologinWithPostData();
        }
    }

    /**
     * log in with post data
     */
    private function dologinWithPostData()
    {
        // check login form contents
        if (empty($_POST['user_name'])) {
            $this->errors[] = "Username field was empty.";
        } elseif (empty($_POST['user_password'])) {
            $this->errors[] = "Password field was empty.";
        } elseif (!empty($_POST['user_name']) && !empty($_POST['user_password'])) {

            // create a database connection, using the constants from config/db.php (which we loaded in index.php)
            $this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

            // change character set to utf8 and check it
            if (!$this->db_connection->set_charset("utf8")) {
                $this->errors[] = $this->db_connection->error;
            }

            // if no connection errors (= working database connection)
            if (!$this->db_connection->connect_errno) {

                // escape the POST stuff
                $user_name = $this->db_connection->real_escape_string($_POST['user_name']);

                // database query, getting all the info of the selected user (allows login via email address in the
                // username field)
                $sql = "SELECT user_name, user_email, user_password_hash
                        FROM users
                        WHERE user_name = '" . $user_name . "' OR user_email = '" . $user_name . "';";
                $result_of_login_check = $this->db_connection->query($sql);

                // if this user exists
                if ($result_of_login_check->num_rows == 1) {

                    // get result row (as an object)
                    $result_row = $result_of_login_check->fetch_object();

                    // using PHP 5.5's password_verify() function to check if the provided password fits
                    // the hash of that user's password
                    if (password_verify($_POST['user_password'], $result_row->user_password_hash)) {

                        // write user data into PHP SESSION (a file on your server)
                        $_SESSION['user_name'] = $result_row->user_name;
                        $_SESSION['user_email'] = $result_row->user_email;
                        $_SESSION['user_login_status'] = 1;

                    } else {
                        $this->errors[] = "Senha errada. Tente novamente.";
                    }
                } else {
                    $this->errors[] = "Este usuário não existe.";
                }
            } else {
                $this->errors[] = "Problema de conexão de banco de dados.";
            }
        }
    }

    /**
     * perform the logout
     */
    public function doLogout()
    {
        // delete the session of the user
        $_SESSION = array();
        session_destroy();
        // return a little feeedback message
        $this->messages[] = "Você foi desconectado.";

    }

    /**
     * simply return the current state of the user's login
     * @return boolean user's login status
     */
    public function isUserLoggedIn()
    {
        if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) {
            return true;
        }
        // default return
        return false;
    }
}

Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os dados são enviados ou através do método POST ou GET, quando você coloca por exemplo:

<form action='recebe.php' method='post' >
Informe a senha atual<input type='password' name='senhatual'> 

quando você clicar em enviar. o form vai mandar para o recebe.php, beleza, para você pegar os dados que o cara digitou, precisa fazer o seguinte

$senhaAtual = $_POST['senhatual']; // Nome do campo lá do formulário, aqui as informações digitadas estão sendo //guardadas na variavel $senhaAtual. A partir daqui você recebe as outras e faz o que eu tinha colocado no outro post.
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa-me ver se entendi...

 

no caso eu teria que criar uma nova pagina php exemplo "editar.php" que iria guardar as informações recebidas e que iria ir la no banco de dados e fazer a alteração... correto?

 

ai o form iria ficar desta maneira olha

<form action="editar.php" method="post">
	<!--Conteúdo HTML que está no início do tópico-->
</form>

Como que eu faço o script do editar.php agora? Tipo verificar se é a senha atual se for certo vamos continuar se não for dar erro e alterar a senha.

 

Me ajuda ai por favor, como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o tutorial que lhe mandei, se você fizer ele apenas para efeito de aprendizado, você saberá como replicar o aprendizado no seu sistema, eu não sou a favor de te dar o código pronto, pois estaria atrapalhando você exercitar a sua lógica. então vamos lá, não vou te passar o código pronto, vou te passar o workflow e você vai fazendo ai e vai postando o código aqui.

 

Primeiro, o formulário que você escreveu, os inputs estão todos sem name, coloque o name unico de cada campo para que você possa chamá-los no seu arquivo php.

 

Segundo ao receber os dados no seu arquivo php, você vai verificar o seguinte:

a senha anterior dele está igual a que estava no banco de dados?

caso positivo verifique: o campo nova senha e confirma senha são diferentes de vazio?

caso positivo você verifica, o campo nova senha e confirma senha são iguais?

caso positivo você faz o update da senha.

 

Esse cenário que imaginei foi apenas para uma possível alteração de senha, caso nessa página você esteja pensando em colocar outras informações que ele possa atualizar, essas informações não precisam entrar nessas condicionais que mencionei.

 

Espero que tenha ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia First

 

Se quiser pode deixar no mesmo arquivo, basta mudar a action para action='' mas acho que não é uma boa prática

 

Imagine o seguinte, uma empresa(usuário) faz um pedido a um fornecedor(servidor), a empresa fornecedora tem toda uma logística para tratar o pedido, primeiro recebe o pedido($_GET ou $_POST) em seguida passa pelo setor de pagamento, fiscal, até chegar ao setor de logística onde as mercadorias serão separadas e retiradas do estoque(do banco de dados), conferidas e colocadas no caminhão para seguir ao cliente. Quando chega no cliente que fez o pedido, o que ele faz? Recepciona(trata os dados) e atualiza seu estoque(update) para venda.

 

Não sei se contribuiu esta analogia mas a ideia é que você entenda que o formulário html envia os dados e o php recepciona estes dados. Mais uma vez, eu faria assim

 

Outra coisa, põe um required nos inputs, para não permitir o enviou dos campos vazios. basta colocar required em qualquer lugar dentro do imput, isto elimina a necessidade de mais uma condicional

// como o Leandro falou, falta os names nos inputs
 
<form action='' method='post'>// enviando para o mesmo doc
//seu formulário com os inputs já contendo os names
</form>
//Logo abaixo do form
$link = mysqli_connect("localhost","root","") or die("erro na conexão");//conexão com o banco, faça colocando os dados do seu, provavelmente já tem isto pronto.
mysqli_select_db($link, "login");// este login, é o nome da base de dados, troca pelo teu ai certinho
 
//Recebendo os dados enviados no formulário, ou seja, quando você clicar em enviar os dados vão chegar aqui
 
$login = $_POST['login']// Recebendo o que usuário digitou no input com name ='login'
$senhaAntiga = $_POST['sAntiga'];// Recebendo o que o usuário digitou no input de name='sAntiga'
$senhaNova = $_POST['sNova'];// Recebendo o que o usuário digitou no input de name='sNova'
$confimSenha = $_POST['sConfirm'];// Recebendo o que o usuário digitou no input de name='sConfirm'
 
if( $senhaNova == $confirmSenha){//Checando se a senha nova confere com a confirmação, se sim(true), ele executa o script abaixo, você poderia fazer outras validações.
 
   $query = mysqli_query($link,"UPDATE usuarios SET passoword = ".$senhaNova." WHERE loginUsuario =".$login);
if($query ==1){
echo "<script type='text/javascript' >alert('Senha atualizada com sucesso!'); </script>"; //vai mostrar para o usuário uma mensagem popup informando que deu tudo certo. Mas, poderia ser um echo básico
}
}

Nada impede de você criar um arquivo a parte e colocar a parte php nele, mas você teria que setar ele no action do formulário. Tipo, action='recebeDados.php'

 

Rapaz, é isto mano, não tem muita dificuldade, se tu quiser, pode me enviar o que tu precisa que faço este procedimento para você, entretanto, isto não estaria te ajudando a aprender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aiin estou totalmente confuso... me ajude por favor não estou entendo muito pois meu PHP é péssimo.

<?php
	$atualpassword = $_POST['currentpassword'];
	$novapassword  = $_POST['newpassword'];
	$confsenha     = $_POST['confpassword'];
	
	if($atualpassword){
		//Como faço o script parar ver se é a mesma do banco de dados
	}else{
		echo "<script type='text/javascript'>A senha não conrresponde com o banco de dados.</script>";
	}
?>
<form action="change-password" method="post">
	<h2 class="block">Alterar senha</h2>
	<h3 style="font-size:12px;">Os campos marcados com um * são obrigatórios.</h3>
		<p>
			<fieldset style="font-size:13px;">
				<dl>
					<dt><label>Senha atual : *</label></dt>
					<dd><input type="password" name="currentpassword" size="50" required/></dd>
				</dl>
				<dl>
					<dt><label>Nova senha : *</label></dt>
					<dd><input type="password" name="newpassword" size="50" required/></dd>
				</dl>
				<dl>
					<dt><label>Confirmar senha : *</label></dt>
					<dd><input type="password" name="confpassword" size="50" required/></dd>
				</dl>
			</fieldset>
		</p>
	<input type="submit" value="Salvar" name="updatepassword" style="background-color:#d18f4f!important;"/>
</form>

No caso seria isso? Como fazer o resto agora? Me ajuda por favor

 

olha um print do banco de dados

fmdhF5L.png

Não sei mais o que fazer me ajuda ai me explica mais um pouco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, faz assim para ver se dá certo

 

<?php
$atualpassword
= $_POST['currentpassword'];
$novapassword = $_POST['newpassword'];
$confsenha = $_POST['confpassword'];


if($novapassword ==$confsenha){
//Como faço o script parar ver se é a mesma do banco de dados

$result = mysqli_query($link, " SELECT *FROM users WHERE user_password_hash= ".$atualpassword );

 

if(mysqli_num_rows($result) > 0)

{

while($row = $result->fetch_assoc())

{

//Já que você não vai utilizar o login da pessoa para realizar a consulta no banco, nem vou colocar uma validação para checar se a senha confere, pois só vai resultar algo, se a senha for igual.

$update = mysqli_query($link, " UPDATE users SET user_password_hash = ".$novapassword." WHERE user_name =".$row['user_name']);

if($update ==1){

echo "Senha atualizada com sucesso!";

}

}

}else{

echo "<script type='text/javascript'>A senha não conrresponde com o banco de dados. </script>";
}

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo deu muitos erros, apesar que o seu script não está escrito de maneira correta eu concertei más... não obtive resultado mysqli seria mysql

 

E agora o que eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh sim, entendi agora sobre o mysqli kkk não sei se tem algo haver mais pelo meu db eu estou usando MySQL®

 

Aqui está o erro

IPEWvAy.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, você terá que validar os posts,

 

tipo

$atualpassword = isset($_POST['currentpassword'])?$_POST['currentpassword']:null;
$novapassword = isset($_POST['newpassword'])?$_POST['newpassword']:null;
$confsenha = isset($_POST['confpassword'])?$_POST['confpassword']:null;
// tradução = se $_POST['confpassword'] ja foi iniciada(não vazio)?manda ele mesmo se não : manda nulo null

Não esquenta muito com os Warnings, são apenas avisos que se você colocar isto em seu código resolve:

 

error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda está dando avisos, se eu usar o " error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING); " Some os avisos, mais acredito que se deu aviso tem que arrumar... pode me ajudar?

 

Código da página completa...

<?php
$atualpassword = isset($_POST['currentpassword'])? $_POST['currentpassword']:null;
$novapassword  = isset($_POST['newpassword'])?     $_POST['newpassword']:null;
$confsenha     = isset($_POST['confpassword'])?    $_POST['confpassword']:null;

if($novapassword ==$confsenha){
	$result = mysql_query($link, "SELECT * FROM users WHERE user_password_hash=".$atualpassword );
	
	if(mysql_num_rows($result) > 0){
		while($row = $result->fetch_assoc()){
			$update = mysql_query($link, " UPDATE users SET user_password_hash = ".$novapassword." WHERE user_name =".$row['user_name']);
			if($update ==1){
				echo "Senha atualizada com sucesso.";
			}
		}
	}else{
		echo "<script type='text/javascript'>A senha não conrresponde com o banco de dados.</script>";
	}
}
?>
<?php
	require '../classes/Login.php';

	$login = new Login();
	if(!$login->isUserLoggedIn()){
		header("Location: index");
		exit;
	} else {
		echo "";
	}
?>
<html>
<head>
	<title>Perfil</title>
	<link rel="stylesheet" type="text/css" href="../css/style.css"/>
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
	<script type="text/javascript" src="../js/script.js"></script>
</head>

<body>
<form action="change-password" method="post">
	<h2 class="block">Alterar senha</h2>
	<h3 style="font-size:12px;">Os campos marcados com um * são obrigatórios.</h3>
		<p>
			<fieldset style="font-size:13px;">
				<dl>
					<dt><label>Senha atual : *</label></dt>
					<dd><input type="password" name="currentpassword" size="50" required/></dd>
				</dl>
				<dl>
					<dt><label>Nova senha : *</label></dt>
					<dd><input type="password" name="newpassword" size="50" required/></dd>
				</dl>
				<dl>
					<dt><label>Confirmar senha : *</label></dt>
					<dd><input type="password" name="confpassword" size="50" required/></dd>
				</dl>
			</fieldset>
		</p>
	<input type="submit" value="Salvar" name="updatepassword" style="background-color:#d18f4f!important;"/>
</form>
</body>
</html>

Mensagens de aviso...

BdTjh1o.png

E agora como podemos arrumar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, os problemas estão nas querys, põe o link para o final mysql_query("select...",$link). Se eu não me engano só se põe na frente em mysqli.

 

echo "<script type='text/javascript'>A senha não conrresponde com o banco de dados.</script>";

tem que ser assim

"<script type='text/javascript'>alert('A senha não corresponde com o banco de dados');</script>";

 

Mano, estou tentando, vamos lá mais uma vez, você está definindo o variável $link? com a conexão certinho? Faz a conexão certinho primeiro rapaz.

$link = mysql_connect('localhost', 'root', '') or die(mysql_error()); // substitui pelos dados do teu banco
mysql_select_db('nomedoteubanco', $link);

tenta a query sem o $link dentro, mas tem que fazer a conexão primeiro.

 

Mano, tem que dá estudada, olha este site www.cursoemvideo.com é bom, tem curso online com excelente professor e com certificação de 40 hs gratuita

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.