Jump to content
Fórum Script Brasil
  • 0

Login restrito


wgc

Question

Olá, pessoal.

Bem, estou com um problema que pra muitos pode ser simples mas pra mim não.

Então... Tenho um website que contem duas áreas, uma normal e outra para usuários cadastrados. Pois bem, quando usuário acessa o site não tem problema nenhum, mas quando ele vai acessar a área restrita não consegue. Por que, disso? bem... quando eu coloco o código PHP para verificar o usuário dentro de um HTML ex.:

<?php

session_start(); // Inicia a session

?>

<html>

<body>

<div align="center">

<?php

include "config.php";

$usuario = $_POST['usuario'];

$senha = $_POST['senha'];

if((!$usuario) || (!$senha)){

echo "Por favor, todos campos devem ser preenchidos!

";

echo "<a href=\"index.php\">Voltar";

}

else{

$senha = md5($senha);

$sql = mysql_query("SELECT * FROM usuarios WHERE usuario={$usuario}' AND senha='{$senha}' AND ativado='1'");

$login_check = mysql_num_rows($sql);

if($login_check > 0){

while($row = mysql_fetch_array($sql)){

foreach( $row AS $key => $val ){

$$key = stripslashes( $val );

}

$_SESSION['usuario_id] = $usuario_id;

$_SESSION['nome'] = $nome;

$_SESSION['sobrenome'] = $sobrenome;

$_SESSION['email'] = $email;

$_SESSION['nivel_usuario'] = $nivel_usuario;

mysql_query("UPDATE usuarios SET data_ultimo_login = now() WHERE usuario_id ='{$usuario_id}'");

header("Location: /restrito/index.php");

}

}

else{

echo "Você não pode logar-se!

Este usuário e/ou senha não são válidos!

Por favor tente novamente!

";

echo "<a href=\index.php>Clique aqui para voltar para a página inicial.

";

echo "Ainda não é usuário? <a href=\"form_cadastro.php\">Clique aqui e Cadastre-se.";

}

}

?>

</div>

</body>

</html>

ele diz que há um erro na linha 46 que no caso seria este comando header("Location: /restrito/index.php"); .

Mas quando eu retiro o código HTML e deixo só o PHP, o usuário consegue acessar a área restrita.

O que fazer... ou o que estou fazendo de errado?

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Olá!

Você deveria ter postado a mensagem de erro. Se o problema persistir após as sugestões aqui postadas, nos mostre qual é a msg de erro! Então, parece que só há erro de sintaxe no código, e.g.:

$$key = stripslashes( $val );
Na linha acima você inseriu dois cifrões, por quê? Na linha abaixo tente fazer algumas mudanças:
$sql = mysql_query("SELECT * FROM usuarios WHERE usuario='{$usuario}' AND senha='{$senha}' AND ativado='1'");
Faça assim:
$sql = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario' AND senha='$senha' AND ativado='1'");
Ou assim:
$sql = mysql_query("SELECT * FROM usuarios WHERE usuario='".$usuario."' AND senha='."$senha."' AND ativado='1'");
Repita o procedimento acima para as outras linhas que contém instruções MySQL. Outra coisa, faça assim para usar a função NOW():
mysql_query("UPDATE usuarios SET data_ultimo_login ='".now()."' WHERE usuario_id ='".$usuario_id."'");

Link to comment
Share on other sites

  • 0

o seu código ta quase certo wgc

só que o PHP não permite o uso da função header(), depois que você já tenha enviado algo ao cliente

e você logo depois de iniciar a sessão já envia tags html, por isso a função header não funciona

<?php
session_start(); // Inicia a session
?>
<html>
<body>
<div align="center">

<?php
E 3l3tr1c as linhas que você disse que talvez estivessem erradas estão corretas no trecho
foreach( $row AS $key => $val ){
     $$key = stripslashes( $val );
}
os dois cifrões querem dizer que o valor que está dentro de $key se tornará uma variável e receberá o valor de stripslashes( $val ) isso poderia ser substituto por:
extract($row);

e nos outros trechos o uso de chaves auxilia para que o PHP saiba que ali dentro existem variáveis a serem acessadas e aonde começam e onde terminam

Espero ter ajudado

Abrass

Link to comment
Share on other sites

  • 0

Verdade e fica mais simples fazer do jeito que jissa disse.

porque pra manter a linha do comando header, além de tirar as tags html la do começo você teria que ir armazenando as mensagens em variáveis pra só depois de todo o processo pronto ir escrevendo todas elas, vai te economizar ai pelo menos uma hora de trabalho rsrs

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...