Ir para conteúdo
Fórum Script Brasil
  • 0

Banco De Dados Com Php


Tsikbal

Pergunta

24 respostass a esta questão

Posts Recomendados

  • 0

hehehehe... Alguém pode me tirar mais umas dúvidas?

-Essas páginas só rodam quando estão hospedadas num servidor? Eu testo no Wamp e não dá certo.

-Quando eu faço o banco de dados no "phpmyadmin" salva em outra pasta. É assim mesmo?

- MySql é um programa em si? Porque esses tutoriais dizem: "Crie o banco no MySql"...

Link para o comentário
Compartilhar em outros sites

  • 0

- O Wamp transforma o seu pc em um servidor, logo se funciona, ou não no seu pc, o resultado deve ser o mesmo no servidor (nem sempre será igual porque o servidor e seu pc terão versões de software diferentes).

- Sim.

- MySQL é um SGBD, ou seja, Sistema Gerenciador de Banco de Dados... como é um sistema ele é um programa que se preocupa inserir, retirar, manter e etc, relativo aos dados, mas o banco de dados em si é sempre um "arquivinho jogado em algum lugar". Vale ressaltar que o MySQL em si é muito chato de mecher, por isso é conveniente utilizar programas front-end, ou seja, que deixam o MySQL utilizável por qualquer um, e essa é a função do phpmyadmin.

Link para o comentário
Compartilhar em outros sites

  • 0

Poxa, eu estou quase conseguindo, mas...

Ele chega a criar o cadastro, eu sei porque eu conferi no phpmyadminin que ele cria o cadastro. Mas aí na hora de efetuar o login, ele diz que a senha ou o login estão inválidos.

Olhem só:

configura.php

<?php
$tabela = "usuarios"; /* nome da tabela usada */

/* Os dados abaixo são de conexão com o bd e devem ser alterados conforme os dados do servidor */
$bd = "usuarios"; /* nome do banco */
$user = ""; /* nome do usuário */
$pass = ""; /* senha do usuário */
$host = ""; /* host do bd */
$con = mysql_connect("$host","$user","$pass") or die('Erro - Falha na Conexão');
$con2 = mysql_select_db("$bd") or die('Erro - Falha ao Abrir Banco de Dados');
?>
index.php
<?php
include("configura.php");

echo "<html>
<head>
<title>Sistema login e cadastro de usuários</title>
</head>
<body>
  <form action=\"login.php\" method=\"POST\">
    Login:&nbsp;<input type=\"text\" name=\"login\" size=\"10\" maxlength=\"30\" /><br />
    Senha:&nbsp;<input type=\"password\" name=\"senha\" size=\"10\" maxlength=\"8\" /><br />
    <input type=\"submit\" value=\"Enviar\" />&nbsp;<input type=\"reset\" value=\"Limpar\" />
  </form>
  <br /><br />
  <a href=\"cadastro.php\">Cadastre-se</a>
</body>
</html>";
?>
login.php
<?php
session_start(); /* aqui inicia a sessão */
include("configura.php");

if($_POST["login"] == "" || $_POST["senha"] == ""){ /* verifica se os dados estão vazios */
  echo "Você deve postar seu login e sua senha!"; /* se estiver, mostra esse aviso */
} else { /* se não, continua a verificar... */
  $login = $_POST["login"]; /* pega o valor de login do form anterior */
  $senha = $_POST["senha"]; /* pega o valor da senha do form anterior */
  
  $query = mysql_query("SELECT id, login, senha FROM ".$tabela." WHERE login='".$login."' && senha='".$senha."'") or die ("Erro: ". mysql_error()); /* faz a consulta no bd, e verifica se o login e senha digitados pelo usuário são iguais aos do bd */
  $total = mysql_num_rows($query); /* aqui pega o número de linhas que obedecam à consulta anterior */
  
  if($total == "0"){ /* se não tiver nenhuma linha, mostra o aviso */
    echo "Login ou senha inválidos.<br />
    <a href=\"index.php\">Voltar</a>";
  } else { /* se não, continua... */
    while($l = mysql_fetch_array($query)){ /* aqui pega o resultado do bd e passa pra variáveis, registrando-as na sessão criada no início do arquivo */
      $_SESSION["id"] = $l["id"];
      $_SESSION["login_user"] = $l["login"];
      $_SESSION["senha_user"] = $l["senha"];
      header("Location: painel.php"); /* manda o usuário para a página painel.php */
    } /* fecha o while */
  }  /* fecha o segundo if */
} /* fecha o primeiro if*/
?>
painel.php
<?php
session_start();
require("verifica.php"); /* aqui, inclui o arquivo verifica.php */
include("configura.php"); /* aqui, inclui o arquivo de conexão */

echo "<html>
<head>
<title>Painel de Controle</title>
</head>
<body>";
Você está logado, ".$_SESSION["login_user"]."
<br />
<a href=\"logout.php\">Sair</a>";
echo "</body>
</html>";
?>
verifica.php
<?php
if(!isset($_SESSION["login_user"]) || !isset($_SESSION["senha_user"])){ /* se o login e senha não estiverem registrados... */
    header("Location: index.php"); /*... manda pra página index.php... */
}
?>
logout.php
<?php
session_start(); /* inicia a sessão */
session_unset(); /* elimina todas as variáveis da sessão */
session_destroy(); /* destrói a sessão */
header("Location: index.php");
?>
cadastro.php
<?php
echo "<html>
<head>
<title>Cadastro de usuários</title>
</head>
<body>";
if($_POST["ok"]){ /* se o formulário tiver sido preenchido... */
  include("configura.php"); /* ... inclui a página configura.php... */
  $clogin = $_POST["clogin"]; /* ... e passa as variáveis do formulário */
  $senha = $_POST["csenha"];
  
  $sql = mysql_query("SELECT login FROM ".$tabela." WHERE login='".$login."'") or die ("Erro: ". mysql_error()); /* consulta no bd */
  $num = mysql_num_rows($sql); /* vê quantos registros tem no bd */
  if($num >= "1"){ /* se tiver 1 ou mais registros, mostra a mensagem a seguir */
    echo "O login escolhido já está sendo usado.
    <br />
    <a href=\"cadastro.php\">Voltar</a>";
  } else {
    $sql2 = mysql_query("INSERT INTO ".$tabela." (login, senha) VALUES ('$clogin','$csenha')") or die ("Erro: ". mysql_error()); /* aqui adiciona o login e a senha no bd */
    echo "Cadastro efetuado!
    <br />
    <a href=\"index.php\">Efetue seu login</a>";
  }
} else { /* se o formulário não tiver sido preenchido */
  echo "<form name=\"tuto\" method=\"POST\">
      Login de usuário:&nbsp;<input type=\"text\" name=\"clogin\" size=\"10\" maxlength=\"20\" /><br />
      Senha de usuário:&nbsp;<input type=\"text\" name=\"csenha\" size=\"10\" maxlength=\"10\" /><br />
      <input type=\"submit\" name=\"submit\" value=\"Cadastrar\" />
      <input type=\"hidden\" name=\"ok\" value=\"1\" />
    </form>";
} /* fecha o if */
echo "</body>
</html>";
?>
e o banco de dados "usuarios"
CREATE TABLE `usuarios` (
`id` int(5) NOT NULL auto_increment,
`login` varchar(20) NOT NULL default '',
`senha` varchar(10) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1; 

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos alterar agumas coisas no scxript de login:

// ...
$query = mysql_query("SELECT id, login, senha FROM ".$tabela." WHERE login='".$login."'") or die ("Erro: ". mysql_error()); /* não use a senha na consulta, pois será mais fácil de verificar se o nome de usuário não existe e/ou a senha está errada */

$total = mysql_num_rows($query); /* aqui pega o número de linhas que obedecam à consulta anterior */
  
  if($total == 0){ /* (ZERO SEM ASPAS) se não tiver nenhuma linha, mostra o aviso */
    echo "Login inválido.<br />
    <a href=\"index.php\">Voltar</a>";
  } else { /* se não, continua... */
     $l = mysql_fetch_array($query)) /* aqui pega o resultado do bd e passa pra variáveis, registrando-as na sessão criada no início do arquivo */
   
    if ($l['senha'] != $senha){
     echo "Senha errada";
     exit;
    }

      $_SESSION["id"] = $l["id"];
      $_SESSION["login_user"] = $l["login"];
      $_SESSION["senha_user"] = $l["senha"];
      header("Location: painel.php"); /* manda o usuário para a página painel.php */
  }  /* fecha o segundo if */
} /* fecha o primeiro if*/
?>

Veja se dá certo.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Parse error... é só remover o ) da linha 19... ou seja:

....

$l = mysql_fetch_array($query) /* aqui pega o resultado do bd e passa pra variáveis,

...

Servidor gratuito? Geralmente só se muda login/senha de acesso ao bd.. e talvez o nome do servidor, alguns serviços usam personalizados e não "localhost".

Link para o comentário
Compartilhar em outros sites

  • 0
Parse error: parse error, unexpected ')' in C:\wamp\www\db\login.php on line 19

:o

Foi mal. Na pressa acabei esquecendo de tirar aquele parentese e colocar o ponto-e-vírgula.

A linha corretamente será:

$l = mysql_fetch_array($query); /* aqui pega o resultado do bd e passa pra variáveis, registrando-as na sessão criada no início do arquivo */

E outra coisa, se eu quiser jogar isso num servidor gratuito, eu tenho que mudar o quê?

Como o ESerra disse, basta trocar os nomes de usuário, senha, nome de banco. Isso vale para qualquer servidor. Mas tenha certeza de que o servidor que escolheu suporte PHP, pois há poucos gratuitos que suportam essa linguagem.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Beraldo, você não sabe o quanto está me ajudando ^^ Obrigadão

Bem, mas tá dando senha errada, me parece que não chega a cadastrar a senha no banco... O que pode ser?

Será que é porque no cadastro.php em ver de ser:

  $clogin = $_POST["clogin"]; /* ... e passa as variáveis do formulário */
  $senha = $_POST["csenha"];
é
  $clogin = $_POST["clogin"]; /* ... e passa as variáveis do formulário */
  $csenha = $_POST["csenha"]; /*mudei de $senha para $csenha */

EDIT: É isso sim!

Agora dá erro no painel.php assim:

Parse error: parse error, unexpected T_STRING in C:\wamp\www\db\painel.php on line 11

Buá buá buá.. snif snif

Conto com você Beraldo pra me ajudar, pf

Link para o comentário
Compartilhar em outros sites

  • 0

É só adicionar um echo na linha 11... lá vai o código (dei uma testada aqui... adaptando, é claro e funcionou):

<?php
session_start();
require("verifica.php"); /* aqui, inclui o arquivo verifica.php */
include("configura.php"); /* aqui, inclui o arquivo de conexão */

echo "<html>
<head>
<title>Painel de Controle</title>
</head>
<body>";
echo "Você está logado, ".$_SESSION["login_user"]."
<br />
<a href=\"logout.php\">Sair</a>";
echo "</body>
</html>";
?>
Se possível deixa o código asism:
<?php
session_start();
require("verifica.php"); /* aqui, inclui o arquivo verifica.php */
include("configura.php"); /* aqui, inclui o arquivo de conexão */

echo "<html><head><title>Painel de Controle</title></head><body>";
echo "Você está logado, ".$_SESSION["login_user"]." <br/> <a href=\"logout.php\">Sair</a>";
echo "</body></html>";
?>

Fica mais fácil de ver o que está errado...

Link para o comentário
Compartilhar em outros sites

  • 0

ÊÊÊÊÊÊÊ Vlw!!!

estou tão feliz!!!

Obrigado, Beraldo, ESerra... vocês são ótimos :)

Agora minhas dúvidas finais.

1. Todas as páginas que eu fizer que forem "protegidas contra visitantes" (só tem acesso os logados), estão representadas pelo painel.php, né?

2. Como eu vou colocar o banco na rede? Qual dos arquivos eu hospedo (.frm, .MYD ou MYI) e tem um lugar certo pra hospedá-lo(s)?

3. Vamos supor que eu queira hospedar no geocities (é só uma hipótese). O código configura.php vai ficar assim, é?:

<?php
$tabela = "usuarios"; /* nome da tabela usada */

/* Os dados abaixo são de conexão com o bd e devem ser alterados conforme os dados do servidor */
$bd = "usuarios"; /* nome do banco */
$user = ""; /* nome do usuário */
$pass = ""; /* senha do usuário */
$host = "www.geocities.com/minhapagina/meubanco"; /* host do bd */
$con = mysql_connect("$host","$user","$pass") or die('Erro - Falha na Conexão');
$con2 = mysql_select_db("$bd") or die('Erro - Falha ao Abrir Banco de Dados');
?>

Link para o comentário
Compartilhar em outros sites

  • 0

1 - Não entendi bem o que você quiz dizer... qualquer página que necessite ser protegida sempre terá que ter um include o verifica.php...

2 - Você vai ter que exportar o banco de dados que você tem e depois importar ele (se ele já tiver algum conteúdo) ou apenas pegar a estrutura dele e executar no programa que faz o gerenciamento no host (geralmente algo como o phpmyadmin).

3 - Não dá para dizer como ficará... o host fornecerá os dados de configuração (o geocities não oferece suporte a php/mysql), a única coisa que dá pra dizer é que você SEMPRE VAI TER QUE ALTERAR SÓ 4 COISAS:

$bd = "usuarios"; /* nome do banco */

$user = ""; /* nome do usuário */

$pass = ""; /* senha do usuário */

$host = "www.geocities.com/minhapagina/meubanco"; /* host do bd */

mas tudo conforme a indicação do host...

Link para o comentário
Compartilhar em outros sites

  • 0

Não.. o lugar onde o BD está fisicamente nunca vai aparecer, por exemplo, nos host pagos, onde você tem um dominio qualquer o endereço geralmente é simplesmente localhost... no geocities poderia ser algo como geocities.com/nomedousuario, mas isso é pura suposição...

Link para o comentário
Compartilhar em outros sites

  • 0

Em que parte do codigo painel.php eu insiro o conteúdo da página? é porque eu uso iframe no meu site.

O fato de você utilizar iframe não muda em nada o lugar onde você vai colocar o conteúdo da página...

<?php

session_start();

require("verifica.php"); /* aqui, inclui o arquivo verifica.php */

include("configura.php"); /* aqui, inclui o arquivo de conexão */

echo "<html>

<head>

<title>Painel de Controle</title>

</head>

<body>";

Você está logado, ".$_SESSION["login_user"]."

<br />

<a href=\"logout.php\">Sair</a>";

echo "SEU CONTEÚDOO TEM QUE VIR POR AQUI...</body></html>";

?>

Na verdade você pode colocar o conteúdo em qualquer parte, desde que fique entre as tags <body>.

Link para o comentário
Compartilhar em outros sites

  • 0

Vlw ^^

Agora, só não entendi bem pra que serve o verfica.php

:(

O verifica serve para ver se o usuáro está logado... pois se ele estiver logado uma sessão estará aberta, se não existir sessão é sinal que o usuário não está logado e será redirecionado para a index.php (ou o que estiver informado no header).

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...