Ir para conteúdo

POWERED BY:

Arquivado

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

elogik

Vida de iniciante...

Recommended Posts

Povo, vida de iniciante é f***, bem lá venho eu novamente com meus códigos xaropes... Dessa vez estou agarrado com um sistema de login, e usei o modelo em ASP que eu costumava usar em meus estudo e que funcionava. Segui o mesmo algoritmo, e não funcioniou, retorna um erro na linha 29 do código (em negrito). Alguém, por favor poderia me dizer em qual ponto desse script eu errei?

 

<?php

// Login de usuários.

// Conectando ao Banco de Dados.

$conexao = mysql_connect("localhost", "root", "root");

mysql_select_db("bkinfo", $conexao);

 

// Recuperando informações.

$email = $_POST['login'];

$senha01 = $_POST['senha'];

 

// Verificando se as informações estão corretas.

$verifica = "SELECT * FROM clientes WHERE email = '$email' AND senha01 = '$senha01'";

mysql_query($verifica, $conexao);

 

// Condicionando resultado conforme consulta.

if ($verifica == TRUE):

session_start(); // Iniciando uso de sessões.

$_SESSION['nome'] = mysql_result($verifica,0,"nome");

$_SESSION['email'] = mysql_result($verifica,0,"email");

$_SESSION['cpfcnpj'] = mysql_result($verifica,0,"cpfcnpj");

$_SESSION['rginsestadual'] = mysql_result($verifica,0,"rginsestadual");

$_SESSION['orgao'] = mysql_result($verifica,0,"orgao");

$_SESSION['endereco'] = mysql_result($verifica,0,"endereco");

$_SESSION['bairro'] = mysql_result($verifica,0,"bairro");

$_SESSION['cidade'] = mysql_result($verifica,0,"cidade");

$_SESSION['cep'] = mysql_result($verifica,0,"cep");

$_SESSION['fone'] = mysql_result($verifica,0,"fone");

$_SESSION['logado'] = 1 // 1 para TRUE e 0 para FALSE.

header("Location: index.php"); // Redireciona para index.php, agora com os valores de Session válidos.

else

header("Location: erro_login.php"); // Redireciona para página de erro.

endif;

?>

 

Olha, eu tenho pesquisado pra caramba, mas o volume de informações e métodos para proceder diante essas situações é tão grande, e tão vasto de opções, que a lógica acaba ficando mais complexa para mim, pelo menos nessa primeira semana de programação em PHP/MySQL. Estou me esforçando para pentelhar menos...

 

Se alguém puder me explicar isso... continuo seguindo em frente!

 

Bruno Campos

E-logik

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, vamos lá, a estrutura do if é assim: if(condicao) {, a { (chave) só é necessária quando dentro do if tem mais de uma linha de código, no seu código por exemplo, e } pra fechar o if, a mesma coisa vale para o else, quanto ao header, quando você já enviou informações ao browser, use uma meta tag: <meta http-equiv='refresh' content='0;URL=pag.php'>, ou mesmo javascript, você fecha o PHP coloca o código pra direcionar e depois abre novamente, é isso. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok... eu resolvi um detalhe nesse mesmo código. Esqueci um ';' (ponto-e-virgula') na linha de criação $_SESSION['logado'] = 1, e aproveitei para colocar as '{}' que faltavam entre os blocos de programação. Porém o erro saltou da linha 29 para a linha 31, que é exatamente igual a de cima. Verja o código corrigido, só a parte que interessa e dá erro.

 

<?php

.

.

.

$_SESSION['logado'] = 1;

header("Location: index.php");

} else {

header("Location: erro_login.php");

}

endif;

?>

 

Eu experimentei retirar a linha e deixa o If apenas com a condição de redirecionar para index.php. Daí o servidor retornor diversos erros nas criações das sessions. Um monte de erros, como pode ele mostrar erros numa linha do código e depois mostrar erros em linhas anteriores a essa? Não segue uma sequência linear de 'cima para baixo'? Estou tentando entender daqui, alguém poderia ajudar novamente?

 

O que eu quero é:

1- O usuário digita o e-mail e a senha

2- Tem uma consulta ao BD para saber se aquele usuário existe

3- Caso o usuário esteja cadastrado, criar session para cada informação encontrada em seu registro no BD.

4- Redireciona para index.php, agora com as sessions prontas para serem declaradas a qualquer momento.

5- Caso contrário, se o usuário NÃO existir, redireciona para uma página de erro.

 

Em ASP, eu faço isso em dois palitos, mas estou aprendendo em PHP, e pelo o que estou vendo o buraco é mais embaixo, pois são definitivamente linguagens completamente diferentes, estou achando o PHP mais complicado, e mais completo, justamento por essa complexidade que deixa o scripts mais robustos e seguros, claro, quando esse são bem desenvolvidos.

 

Aguardo a ajuda de qualquer um!

Bruno Campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

ql a mensagem de erro? o mais provavel eh q seja do header.. esse codigo é so PHP? nao tem nenhum codigo html antes do <?  ??

Certeza absoluta, não existe nenhum código HTML antes do reader. É um script PHP puro...

Outra coisa, eu tentei substituir os headers, pensando ser apenas um problema com eles. Então coloquei

 

echo "Funcionou!"

 

Veja o que ele me exibiu: -_-

Warning: open(/tmp\sess_8341016104be0939b818ff076c56cb35, O_RDWR) failed: m (2) in C:\apache\htdocs\bkinformatica\loginuser.php on line 17

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 18

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 19

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 20

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 21

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 22

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 23

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 24

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 25

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 26

 

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\bkinformatica\loginuser.php on line 27

 

Warning: open(/tmp\sess_8341016104be0939b818ff076c56cb35, O_RDWR) failed: m (2) in Unknown on line 0

 

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

---------------------------------------------------------------------------------------------------------------------------------------

Onde é que eu estou errando afinal: SESSION ou HEADER?

Tow bolado pq se fosse em ASP eu já estaria finalizando. :angry: . O problema é o cliente que não quer pagar mais caro por um servidor de hospedagem, então lá vou eu aprender PHP em 15 dias... :wacko:

 

Aguardo mais respostas, em suma todo mundo tem me ajudado bastante... vcs são do krai, o PHP é que tem se mostrado meio Caxias!

Bruno Campos | E-logik

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro o problema de header é em função dos cabeçalhos que tu está usando na página e a função header junto com um cabeçalio anterior não funciona portanto tu deve usar um java scritp para criar esse redirecionamento como no exemplo completo de sistema de longin que eu fiz em uma pagina ele verifica se o cara tem no banco de dados o mesmo nome e senha se ele está bloqueado ou deletado e mais uma coisa que eu não lembro de cabeça agora :P mas é um bom sistema de login as classes tu troca por função mysql do php que tu conhece e uma dica não usa a conecção na página escrita fisicamente cria um arquivo chamado conectal.php coloca a conectação e usa um include ("conecta.php"); ou um require ("conecta.php");para fazer a conecção em apenas uma página para um dia que tu mudar a senha do db ou mesmo o nome da data vese alguma coisa assijm tu não rpecisar trocar em todas as páginas isso. bom eu velho espero ter ajudado meu código estáligberado para uso qualuer coisa me chama no icq msn ou email flw seguie o códgi abaixo

<?switch ($_POST['rodar']) {case "sim"://echo 'entrou';$caminho = "../";include ("".$caminho."class/mysqldbo.class.php");  $dbConfig = new dataBaseMy;   $dbConfig->opendb();//----$select = "SELECTlogin_usuarios, senha_usuariosFROMcasamento_usuariosWHERElogin_usuarios = '".$_POST['nome']."'ANDsenha_usuarios = '".$_POST['senha']."'";$dbConfig->openrs($select);if ($dbConfig->num_rows == 0) {$aviso = "<br><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"-1\" color=\"#FF0000\"><b><img src = \"".$caminho."img_global/aviso_alta_prioridade.gif\"><br>Login ou Senha estão incorretos, tente novamente</b></font><br>";} else {$select = "SELECTstatus_usuariosFROMcasamento_usuariosWHERElogin_usuarios = '".$_POST['nome']."'ANDsenha_usuarios = '".$_POST['senha']."'ANDstatus_usuarios = 'B' OR status_usuarios = 'D' OR nivel_usuarios = '0'";$dbConfig->openrs($select);if ($dbConfig->num_rows != 0) {$aviso = "<br><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"-1\" color=\"#FF0000\"><b><img src = \"".$caminho."img_global/aviso_alta_prioridade.gif\"><br>Este usuário está bloqueado, deletado ou não tem nível de prioridade suficiente para acessar este sistema do sitema, contate o administrador do sistema</b></font><br>";} else {$select = "SELECTnome_usuarios, id_usuarios,nivel_usuariosFROMcasamento_usuariosWHERElogin_usuarios = '".$_POST['nome']."'ANDsenha_usuarios = '".$_POST['senha']."'";$dbConfig->openrs($select);while(!$dbConfig->eof()) {$nome = $dbConfig->getfield("nome_usuarios");$id = $dbConfig->getfield("id_usuarios");$nivel = $dbConfig->getfield("nivel_usuarios");$dbConfig->movetonext();}//fecha while(!$dbConfig->eof())session_start(login);$_SESSION['nome_usuarios111'] = $nome;$_SESSION['id_usuarios111'] = $id;$_SESSION['nivel_usuarios111'] = $nivel;echo "<script language=javascript>location.href=\"inicial.php\";</script>"; // proxima página (redirecionamento)}//fecha if ($dbConfig->num_rows != 0)}//fecha if ($dbConfig->num_rows == 0)}//switch ($_POST['rodar'])?><html><head><title>Sistema nosso casamento</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><form action="login.php" method="post"><body background="../img/background.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><table width="770" border="0" cellspacing="0" cellpadding="0">  <tr>    <td><img src="../img/top_admin.jpg" width="770" height="206"></td>  </tr></table><table width="770" border="0" cellspacing="0" cellpadding="0">  <tr>    <td align="center"><br>      <img src="../img/login_top.gif" width="350" height="31"><br>      <table width="350" border="0" cellpadding="0" cellspacing="5" background="../img/login_middle.gif">        <tr>           <td width="91" align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Nome:</font></td>          <td width="259"><input name="nome" type="text" id="nome"></td>        </tr>        <tr>           <td align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></td>          <td><input name="senha" type="text" id="senha"></td>        </tr>        <tr>           <td align="right"> </td>          <td><input type="submit" name="Submit" value="Logar no sistema">            <input name="rodar" type="hidden" id="rodar" value="sim"></td>        </tr>      </table>      <img src="../img/login_botton.gif" width="350" height="21"><br>      <table width="340" border="0" cellspacing="3" cellpadding="0">        <tr>          <td align="center">    <?    echo $aviso;    ?>    </td>        </tr>      </table>        </td>  </tr></table><br></form></body></html>

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.