• 0
Sign in to follow this  
tms.guiri

Problema acesso servidor

Question

Boa tarde a todos,

o problema é o seguinte, desenvolvi um site com área administrativa com código de segurança para o login. Esta funcionando perfeitamente em localhost, na minha máquina. Mas quando migro para o servidor web o login da área administrativa não redireciona o usuario para a sua pagina, na hora do submit ele continua na mesma pagina, mas os dados das variaveis de login e senha estão sendo armazenados nas variaveis e a busca esta sendo realizado no banco de dados, porque depois que tento o login e digito a pagina na URL ele vai para a area administrativa. Os codigos são estes:

VERIFICA LOGIN

<?php

include("security.php");

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';

$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';

if (validaUsuario($usuario, $senha) == true) {

header("Location:administracao.php");

} else {

expulsaVisitante();

}

}

?>

AGORA O CODIGO DE SEGURANÇA

<?php

// Configurações do Script

// ==============================

$_SG['conectaServidor'] = true; // Abre uma conexão com o servidor MySQL?

$_SG['abreSessao'] = true; // Inicia a sessão com um session_start()?

$_SG['caseSensitive'] = true; // Usar case-sensitive? Onde 'casa' é diferente de 'CASA'

$_SG['validaSempre'] = true; // Deseja validar o usuário e a senha a cada carregamento de página?

// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.

$_SG['servidor'] = 'localhost'; // Servidor MySQL

$_SG['usuario'] = 'NOMEUSUARIO'; // Usuário MySQL

$_SG['senha'] = 'SENHAUSUARIO'; // Senha MySQL

$_SG['banco'] = 'DATABASE'; // Banco de dados MySQL

$_SG['paginaLogin'] = 'index.html'; // Página de login

$_SG['tabela'] = 'usuarios'; // Nome da tabela onde os usuários são salvos

// ==============================

// ======================================

// ~ Não edite a partir deste ponto ~

// ======================================

// Verifica se precisa fazer a conexão com o MySQL

if ($_SG['conectaServidor'] == true) {

$_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");

mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");

}

// Verifica se precisa iniciar a sessão

if ($_SG['abreSessao'] == true) {

session_start();

}

/**

* Função que valida um usuário e senha

*

* @param string $usuario - O usuário a ser validado

* @param string $senha - A senha a ser validada

*

* @return bool - Se o usuário foi validado ou não (true/false)

*/

function validaUsuario($usuario, $senha) {

global $_SG;

$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';

// Usa a função addslashes para escapar as aspas

$nusuario = addslashes($usuario);

$nsenha = addslashes($senha);

// Monta uma consulta SQL (query) para procurar um usuário

$sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";

$query = mysql_query($sql);

$resultado = mysql_fetch_assoc($query);

// Verifica se encontrou algum registro

if (empty($resultado)) {

// Nenhum registro foi encontrado => o usuário é inválido

return false;

} else {

// O registro foi encontrado => o usuário é valido

// Definimos dois valores na sessão com os dados do usuário

$_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL

$_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL

// Verifica a opção se sempre validar o login

if ($_SG['validaSempre'] == true) {

// Definimos dois valores na sessão com os dados do login

$_SESSION['usuarioLogin'] = $usuario;

$_SESSION['usuarioSenha'] = $senha;

}

return true;

}

}

/**

* Função que protege uma página

*/

function protegePagina() {

global $_SG;

if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {

// Não há usuário logado, manda pra página de login

expulsaVisitante();

} else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {

// Há usuário logado, verifica se precisa validar o login novamente

if ($_SG['validaSempre'] == true) {

// Verifica se os dados salvos na sessão batem com os dados do banco de dados

if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {

// Os dados não batem, manda pra tela de login

expulsaVisitante();

}

}

}

}

/**

* Função para expulsar um visitante

*/

function expulsaVisitante() {

global $_SG;

// Remove as variáveis da sessão (caso elas existam)

unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);

// Manda pra tela de login

header("Location: ".$_SG['paginaLogin']);

}

?>

Agradeço desde já e aguardo resposta, abraços a todos

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0

No seu codigo security.php e este mesmo?

$_SG['servidor'] = 'localhost'; // Servidor MySQL
$_SG['usuario'] = 'NOMEUSUARIO'; // Usuário MySQL
$_SG['senha'] = 'SENHAUSUARIO'; // Senha MySQL
$_SG['banco'] = 'DATABASE'; // Banco de dados MySQL
Servidor localhost ? O certo seria no lugar do localhost seria www.nomedoseusite.com.br exemplo
<?php 
$entrar = mysql_connect("www.nomeDoSeuSite.com.br","Nome_usuario","A_Senha") or die ("não encontei o Servidor");
mysql_select_db("Nomedo_seu_Banco_deDados", $entrar)  or die ("Não encontrei o Bco de dados!");

// chamar o formulario de login e apos
header("Location:administracao.php");
?>

você editou os privilegios no cpanel no seu Site.?

Veja este tópico resposta dia 02/06/12 as 11,48hs se ajuda.

http://scriptbrasil.com.br/forum/index.php?showtopic=169653

Coloque os codigos com o code.

Edited by Alceu13

Share this post


Link to post
Share on other sites
  • 0

Bom dia Alceu13,

Obrigado por responder e pela ajuda. Mas não tem a necessidade de mudar de "localhost" para "www.meusite.com.br" porque ele já esta acessando o banco de dados. O problema esta sendo apenas o redirecionamento, porque quando é submetido os dados no formulario de login o script não esta mandando o usuario para a área administrativa e sim , deixando ele na mesma pagina de login. Mas quando voce coloca o nome da pagina na URL, dessa forma:

www.meusite.com.br/areaadministrativa/ADMINISTRACAO.PHP

ele vai para a página administrativa, então isso quer dizer que esta tendo acesso ao banco, so que o redirecionamento não esta fazendo isso automaticamente. E quando não é efetuado o login ou com nome e senha errados, pode tentar colocar a pagina ADMINISTRACAO.PHP na URL que não loga, por causa do script SECURITY.PHP.

Então provavelmente o problema esta no script que esta checando o login , o VERIFICA_LOGIN que coloquei acima, logo o primeiro.

Se puder me ajudar novamente, agradeceria.

Ahhh e sobre o codigo é que não estava habilitando, estava dando erro quando tentava colocar na tag code, por isso enviei assim, me desculpe

Share this post


Link to post
Share on other sites
  • 0

quando você loga ele redireciona para algum lugar?

se sim como fica a URL ?

talvez voce precise colocar assim no Location

header("Location:areaadministrativa/administracao.php");

Share this post


Link to post
Share on other sites
  • 0

Bom dia JaguA,

Quando testo em localhost na minha máquina ele redireciona normalmente, loga normal para a devida página. Mas quando coloquei na Web, não redireciona.

Quando eu tento o login, ele fica na mesma página do login, não redireciona para devida página. Mas eu sei que esta comunicando com o banco de dados, porque ao fazer isso, basta eu mudar a URL para a página administrativa que ele loga, então quer dizer que o script de configuração do banco esta correto, somente o redirecionamento que está sendo o fator do erro. Mas o estranho é que localmente ele funciona e na Web não, sendo que é o mesmo script.

O arquivo de login esta no mesmo diretório da área administrativa, junto dos outros arquivos que eu quero acessar

Aguardo novamente uma resposta, abraços e agradeço novamente o empenho em me ajudar!

Share this post


Link to post
Share on other sites
  • 0

Oi JaguA,

na index, tem um action para esta pagina:

VERIFICA LOGIN

<?php

include("security.php");

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';

$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';

if (validaUsuario($usuario, $senha) == true) {

header("Location:administracao.php");

} else {

expulsaVisitante();

}

}

?>

E este script ele faz um include com o codigo de segurança, que faz a verificação de login e senha do usuario, tem a configuração do banco de dados e etc... esta até no inicio deste tópico, mais em cima já postado.

Sim, se voce logar ele não redireciona e fica na mesma index, mas o estranho é que localmente ele funciona :(

Ahh, não coloquei entre a tag CODE , porque não esta habilitando pra mim :(

Share this post


Link to post
Share on other sites
  • 0

Tenta com o código assim e me diz qual erro retorna.

<?php

include("security.php");

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';


if (validaUsuario($usuario, $senha) == true) {

header("Location:areaadministrativa/administracao.php");
} else {

expulsaVisitante();
}
}

?>



AGORA O CODIGO DE SEGURANÇA

<?php

// Configurações do Script
// ==============================
$_SG['conectaServidor'] = true; // Abre uma conexão com o servidor MySQL?
$_SG['abreSessao'] = true; // Inicia a sessão com um session_start()?

$_SG['caseSensitive'] = true; // Usar case-sensitive? Onde 'casa' é diferente de 'CASA'

$_SG['validaSempre'] = true; // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.

$_SG['servidor'] = 'localhost'; // Servidor MySQL
$_SG['usuario'] = 'NOMEUSUARIO'; // Usuário MySQL
$_SG['senha'] = 'SENHAUSUARIO'; // Senha MySQL
$_SG['banco'] = 'DATABASE'; // Banco de dados MySQL

$_SG['paginaLogin'] = 'index.html'; // Página de login

$_SG['tabela'] = 'usuarios'; // Nome da tabela onde os usuários são salvos
// ==============================

// ======================================
// ~ Não edite a partir deste ponto ~
// ======================================

// Verifica se precisa fazer a conexão com o MySQL
if ($_SG['conectaServidor'] == true) {
$_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");
}

// Verifica se precisa iniciar a sessão
if ($_SG['abreSessao'] == true) {
session_start();
}

/**
* Função que valida um usuário e senha
*
* @param string $usuario - O usuário a ser validado
* @param string $senha - A senha a ser validada
*
* @return bool - Se o usuário foi validado ou não (true/false)
*/
function validaUsuario($usuario, $senha) {
global $_SG;

$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';

// Usa a função addslashes para escapar as aspas
$nusuario = addslashes($usuario);
$nsenha = addslashes($senha);

// Monta uma consulta SQL (query) para procurar um usuário
$sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";
$query = mysql_query($sql);
$resultado = mysql_fetch_assoc($query);

// Verifica se encontrou algum registro
if (empty($resultado)) {
// Nenhum registro foi encontrado => o usuário é inválido
return false;

} else {
// O registro foi encontrado => o usuário é valido

// Definimos dois valores na sessão com os dados do usuário
$_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL
$_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL

// Verifica a opção se sempre validar o login
if ($_SG['validaSempre'] == true) {
// Definimos dois valores na sessão com os dados do login
$_SESSION['usuarioLogin'] = $usuario;
$_SESSION['usuarioSenha'] = $senha;
}

return true;
}
}

/**
* Função que protege uma página
*/
function protegePagina() {
global $_SG;

if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
// Não há usuário logado, manda pra página de login
expulsaVisitante();
} else if (isset($_SESSION['usuarioID']) OR isset($_SESSION['usuarioNome'])) {
// Há usuário logado, verifica se precisa validar o login novamente
if ($_SG['validaSempre'] == true) {
// Verifica se os dados salvos na sessão batem com os dados do banco de dados
if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
// Os dados não batem, manda pra tela de login
expulsaVisitante();
}
}
}
}

/**
* Função para expulsar um visitante
*/
function expulsaVisitante() {
global $_SG;

// Remove as variáveis da sessão (caso elas existam)
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);

// Manda pra tela de login
header("Location: ".$_SG['paginaLogin']);
}
?>

Para posta com o CODE é facil so clicar no script como na imagem.

scripty.jpg

Share this post


Link to post
Share on other sites
  • 0

A minha index esta no mesmo diretorio que a pagina na qual quero acessar, então não preciso esta correto a maneira que estava antes, se eu colocar areaadministrativa/adminitracao.php vai dar erro.

Por causa disso, exemplo:

www.meusiste.com.br/areaadministrativa ( aqui estão todos os arquivos, login.html, administracao.php, security.php, verificalogin.php, etc....

Então o header("administracao.php") está correto, porque a pagina esta no mesmo diretorio corrente

Share this post


Link to post
Share on other sites
  • 0

então coloque o nome da pasta que deve acessar e uma /

Location("pasta/");

ve se da certo...

Share this post


Link to post
Share on other sites
  • 0

Já havia tentado dessa forma e nada também. Não da pra entender, localmente funciona perfeitamente e na web não! Já não sei mais o que pode ser feito

Share this post


Link to post
Share on other sites
  • 0
Já havia tentado dessa forma e nada também. Não da pra entender, localmente funciona perfeitamente e na web não! Já não sei mais o que pode ser feito

Caro guiri, tive o mesmo problema. Inclusive estou usando o mesmo sistema de segurança que você. A solução é bem simples, acesse o seu CPanel e clique na opção php.ini EZConfig.

Abrirá uma tela para que você altere algumas configurações, agora basta alterar o output_buffering para ON.

Abraços!

Share this post


Link to post
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.

Sign in to follow this