Mulambo 1 Denunciar post Postado Agosto 26, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Agosto 26, 2010 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 $login = $_POST["login"]; $_SESSION["login"] = $login; inicie sempre esse verifica para que tu tenha esse valor guardado , sempre o primeiro a ser aberto no codigo. isso nas tuas outras paginas: $busca = mysql_query("SELECT * FROM cadastro WHERE email = '".$_SESSION["login"]."'"); while ($reg = mysql_fetch_array($busca)){ $id = $reg["codigo"]; } Outra coisa , tu nao pode fazer um INSERT , tu deveria fazer um UPDATE so para atualizar , nao seria isso ? Espero ter ajudado .. Felipe ;) Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Agosto 26, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Agosto 26, 2010 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'"); $linha = mysql_num_rows($existe); // aqui conta quantos registros foram achados 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 Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Agosto 26, 2010 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! Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Agosto 26, 2010 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 ;) Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Agosto 26, 2010 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! Compartilhar este post Link para o post Compartilhar em outros sites