Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E ai gente, tranquilo?
Gostaria da sua ajuda. Preciso pegar o ID do usuario na SESSION, e inserir dados na tabela, mais não sei como faço o insert especifico para o id.
Exemplo: O usuário vai comprar um numero "x" de créditos, mas para comprar ele precisa estar logado,após logar-se o usuário, vai até a pagina de compra, seleciona a quantidade de créditos, e é salvo na database.
A pergunta é, como vou fazer o insert do usuário, para adicionar os créditos de acordo com o id do user?
Meu código:
<?php
include ("config.php");
if(isset($_POST["comprar"]) == true) { {
$creditos = $_POST["creditos"];
$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");
echo "<h1>Créditos comprados com sucesso!</h1>";
} }
?>
Atenciosamente,Mulambo
Olá amigo, obrigado por responder..
Me desculpe, mas não entendi direito o que você 'disse'.
Eu tenho que pegar alguma informação da session(no caso o login,por exemplo),jogar na query para buscar o id, certo?!
Com o id em mãos eu coloco ele dentro da query de inserção, mas como ficaria a query?
Ps.: No caso o campo creditos da tabela está vazia, logo eu usou INSERT, estou correto?
Atensiosamente,Mulambo
login.php
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="verifica_login.php" method="post">
Login : <input type="text" name="login"><br>
Senha : <input type="password" name="senha"><br>
<input type="submit" value="Logar">
</form>
</body>
</html>
Aqui o usuario vai logar, e os valores vao para a pagina verifica_login.php que verá se ele realmente exste no banco.
verifica_login.php
<?php
include("conexao.php") // tua conexao
$login = $_POST["login"];
$senha = $_POST["senha"];
$existe = mysql_query("SELECT * FROM usuario WHERE login like '$login' AND senha = '$senha'");if ($linha == 0){
echo "Não achou nada!";
}else{
session_start(); // inicio a sessao
$_SESSION["login"] = $login;
$_SESSION["senha"] = $senha;
//pode direcionar para algum lugar depois
}
?>
Aqui tu verificou a existencia do usuario no teu banco , se ele realmente existir , passara adiante , senao fica ali mesmo.Agora tu na tua pagina faz assim:
<?php
session_start(); // pode criar uma pagina para verificar a sessao existente
include ("config.php");
$busca_usuario = mysql_query("SELECT * FROM cadastro WHERE email like '".$_SESSION["login"]."'");//digamos que tu tem uma tabela cadastro e que o login é o email que esta tbm guardado nessa tabela.
while ($reg = mysql_fetch_array($busca_usuario)){
$id = $reg["id"]; // codigo,id_usuario ... como tu denominou ser o id unico dele
}
if(isset($_POST["comprar"]) == true) { {
$creditos = $_POST["creditos"];
//$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = "UPDATE `usuario` SET `creditos` = '$creditos' WHERE `id` = '$id'";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");
echo "<h1>Créditos comprados com sucesso!</h1>";
} }
?>
;) fiz sem testar, ve se funciona , senao mostre ql o erro :D
Felipe
Bom, testei aqui não deu certo não!! Vou mostrar meus códigos pra gente se entender melhor :)
login.php
<?php
include ("config.php");
if(isset($_POST["logar"]) == true) { {
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);
$sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '". $usuario ."') AND (`senha` = '". sha1($senha) ."') AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
echo "Login inválido!"; exit;
} else {
$resultado = mysql_fetch_assoc($query);
if (!isset($_SESSION)) session_start();
// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
$_SESSION['UsuarioNome'] = $resultado['nome'];
$_SESSION['UsuarioNivel'] = $resultado['nivel'];
header("Location: index.php"); exit;
}
}}
?>
<form action="" method="post">
<fieldset>
<legend>Dados de Login</legend>
<label for="txUsuario">Usuário</label>
<input type="text" name="usuario" id="txUsuario" maxlength="25" />
<label for="txSenha">Senha</label>
<input type="password" name="senha" id="txSenha" />
<input type="submit" name="logar" value="Entrar" />
</fieldset>
</form>
Agora o código que faz a proteção das páginas:
<?php
include ("config.php");
if (!isset($_SESSION)) session_start();
$nivel_necessario = 1;
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
session_destroy();
header("Location: login.php");
exit;
}
?>
A página de compra com código completo(comprar.php):
<?php
include ("config.php");
if (!isset($_SESSION)) session_start();
$nivel_necessario = 1;
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
session_destroy();
header("Location: login.php");
exit;
}
?>
<?php
if(isset($_POST["comprar"]) == true) { {
$busca_usuario = mysql_query("SELECT * FROM usuarios WHERE nome like '".$_SESSION["UsuarioNome"]."'");//digamos que tu tem uma tabela cadastro e que o login é o email que esta tbm guardado nessa tabela.
while ($reg = mysql_fetch_array($busca_usuario)){
$id = $reg["id"]; // codigo,id_usuario ... como tu denominou ser o id unico dele
}
$moedas = $_POST["moedas"];
//$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = "UPDATE `usuarios` SET `creditos` = '$moedas' WHERE `id` = '$id'";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");
echo "<h1>Créditos comprados com sucesso!</h1>";
} }
?>
<?php echo $_SESSION['UsuarioID']; ?>
<form action="" method="post">
<fieldset>
<legend><h1>Comprar Moedas</h1></legend><div><a href="index.php">Inicio</a> | <a href="logout.php">Sair</a></div>
<label>Quantidade de moedas:</label>
<input type="text" name="moedas" maxlength="25" />
<input type="submit" name="comprar" value="comprar" />
</fieldset>
</form>
Bom, acho que fiz tudo como você disse, só mudei algumas coisas para adaptar ao sistema.
Ps.: Troquei o campo creditos, pelo campo moeda!
Aqui tu faz uma redundancia de codigo , se tu jah tem uma pagina com a segurança da pagina , pra que re-digitala ?
Faz um include dessa pagina , ai tu nao precisa arir e fechar a tag php , se tu jah guardou o id do usuario , nem precisa fazer aquela pesquisa que eu coloquei ai pra ti , por que tu jah tem o id dele.
<?php
include("tua pagina");
if(isset($_POST["comprar"]) == true) { {
$moedas = $_POST["moedas"];
//$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = "UPDATE `usuarios` SET `creditos` = '$moedas' WHERE `id` = '".$_SESSION["Usuario_ID"]."'";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");
echo "<h1>Créditos comprados com sucesso!</h1>";
} }
?>
<?php echo $_SESSION['UsuarioID']; ?>
<form action="" method="post">
<fieldset>
<legend><h1>Comprar Moedas</h1></legend><div><a href="index.php">Inicio</a> | <a href="logout.php">Sair</a></div>
<label>Quantidade de moedas:</label>
<input type="text" name="moedas" maxlength="25" />
<input type="submit" name="comprar" value="comprar" />
</fieldset>
</form>
Vi que tu debugou a sesison , apareceu algo ?
ela tem algum valor ?
Felipe , qualquer coisa , posta ai ;)
Problema resolvido,
arrumei a linha:
$busca_usuario = mysql_query("SELECT * FROM usuarios WHERE id like '".$_SESSION["UsuarioID"]."'");
WHERE nome LIKE, eu troquei por: WHERE id LIKE
Obrigado pela ajuda, precisando só falar!! Abraço!
tu tem que ter uma sessao , nessa sessao tu guarda o email , ou login , que tenha no banco , entao tu faz um SELECT pra procurar o id , tipo
Login : Gremio10
tua pagina de verifia_login.php
inicie sempre esse verifica para que tu tenha esse valor guardado , sempre o primeiro a ser aberto no codigo.
isso nas tuas outras paginas:
while ($reg = mysql_fetch_array($busca)){Espero ter ajudado .. Felipe ;)