Corrir código PHP

Topics Programming. Not necessarily about the BrazilFW!

Corrir código PHP

Mensagempor apoliano » Qua Fev 27, 2013 5:39 pm

Boa tade galera!

To tentando desenvolver um sistema de gerenciamento com PHP+ MYSQL, o que to construindo no momento
é a parte referente a segurança, a página de login.
Já fiz grande parte dela, e já fiz alguns testes, e tá funcionando.

Só que aparece um aviso, e eu não entendie ainda porque.
Acho que tem haver com o limite de sessão, cache...
Veja p aviso na imagem:
Imagem
Ja apareceu mais avisos semelhantes a esse e eu conseguie resolver, mais esse ainda não conseguie.
Ta aqui o código de onde vem o aviso:
Código: Selecionar todos
<html>
<head>
   <title></title>
   <script type="text/javascript">
      function loginfailed(){
         setTimeout("window.location='index.php'", 3000);
      }
   </script>
</head>
<body>
<?php
//Restringir páginas
session_start();
include "config/conectar.php";
//A session_start deve estar antes de qualquer codigo senao dará erro!
if(!isset($_SESSION["usuario"]) || !isset($_SESSION["senha"])){
   /*redirecionando o usuario para a página de login
     caso não tenha logado no sistema
   */
   //echo ("location: index.php");
   echo "<center><strong>Fça login para visualizar essa página...</strong></center>";
   echo "<script>loginfailed()</script>";
   exit;
}else{
   echo "<center></center>";
}
?>
</body>
</html>

Esse código é para impedir que um usuário acesse tal página sem ter se logado no sistema, redirecionando
ele para a página de login.
Eu tinha tentado fazer o redirecionamento com php mais não funcionou, aí fiz com javascript e funcionou
apresentando esse aviso aí.

Esse é o código que usei para redireciona a página
Código: Selecionar todos
echo ("location: index.php");

Só que não funciona.
Para redirecionar páginas com php é esse código que deve ser usado?

Algum especialista em php e javascript pode explicar essa mensagem.

OSB: Ainda to estudando essas linguagems, e o que eu aprendo hoje coloco em prática amanhã. :mrgreen:
Apoliano Sousa "técnico em Informática" aprendendo linux...
A cada dia meu conhecimento aumenta um pouco mais.
Avatar do usuário
apoliano
BFW Experienced
 
Mensagens: 798
Registrado em: Ter Dez 13, 2011 4:40 pm
Localização: Ubajara-CE
BrazilFW Box: Intel(R) Celeron(R) CPU 420 @ (1x) 1.608 GHz
946.96 MB DDR2 HD 80 Gb SATA
BFW 3.0.260 32 bits - squid - mac x ip - Mysql - phpmyadmin

Re: Corrir código PHP

Mensagempor baiev » Qua Fev 27, 2013 6:01 pm

A imagem não aprece...
baiev
 

Re: Corrir código PHP

Mensagempor gerardonoh » Qua Fev 27, 2013 6:51 pm

Solo debe ponerlo e asi
Código: Selecionar todos
<?php
header("Location: index.php");
exit();
?>


Saludos.
Avatar do usuário
gerardonoh
BFW Beneméritos
 
Mensagens: 162
Registrado em: Qui Set 22, 2011 2:35 am
BrazilFW Box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: Corrir código PHP

Mensagempor tecjair » Qua Fev 27, 2013 10:52 pm

BrazilFW 3.0 64bits O Imbatível!
Linux User: #431158
BrazilFW User: #2624
Contribua com o Projeto, Doe Click aqui
Contribua com o Woshman, Doe Click aqui
Avatar do usuário
tecjair
BFW Add-on Developer
BFW Beneméritos
BFW Team
BFW Expert
BFW 3.x Update
 
Mensagens: 1091
Registrado em: Dom Nov 12, 2006 7:44 pm
Localização: Camaçari - Bahia - Brasil
BrazilFW Box: BFW 3.0 64Bits
Intel(R) Core(TM)2 Duo CPU E7200
Memória: 4 GB
HD: 500GB

Re: Corrir código PHP

Mensagempor apoliano » Qui Fev 28, 2013 1:19 pm

Boa tarde!

Vou ver...

È o seguinte, tenho a index.php que é a página de login e, a index2.php que seria o painel página principal.
O que eu quero fazer é restringir a index2.php e outras páginas que seram criadas.

Exemplo: Se alguma pessoa digitar no navegador http://www.index2.php.com sem ter se logado antes, aparece uma mensagem
dizendo "Faça login para visualizar essa página.." e redirecionar ele para a index.php página de login.

Os redirecionamentos quandos digitar o nome de usuarios ou senha incorretos ou corretos tá funcionando, fiz com javascripit.
Vou tentar fazer esse outro redirecionamento com javascript também.

Ta aqui o código de restrinção de páginas e redirecionamento:
Código: Selecionar todos
<?php
//Restringir páginas
session_start();
include "config/conectar.php";
//A session_start deve estar antes de qualquer codigo senao dará erro!
if(!isset($_SESSION["usuario"]) || !isset($_SESSION["senha"])){
   /*redirecionando o usuario para a página de login
     caso não tenha logado no sistema
   */
   header ("location: index.php");
        exit();
}else{
   echo "<center></center>";
}
?>

Aparece essa mensagem aqui se eu redirecionar com php:
Código: Selecionar todos
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\saat\config\conectar.php:1) in C:\wamp\www\saat\config\restringir.php on line 10

Se eu redirecionar com javascript arece essa:
Código: Selecionar todos
Warning session_start() [function session-start()]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\saat\autenticar.php:4) in C:\wamp\www\saat\autenticar.php on line 24

Warning session_start() [function session-start()]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\saat\autenticar.php:4) in C:\wamp\www\saat\autenticar.php on line 24

Outro teste que fiz agora foi, colocando de pois do nome de usuário ou da senha vários espaços em branco, ele loga normalmente, esse problema terá que ser reparado
e corrgido.
Apoliano Sousa "técnico em Informática" aprendendo linux...
A cada dia meu conhecimento aumenta um pouco mais.
Avatar do usuário
apoliano
BFW Experienced
 
Mensagens: 798
Registrado em: Ter Dez 13, 2011 4:40 pm
Localização: Ubajara-CE
BrazilFW Box: Intel(R) Celeron(R) CPU 420 @ (1x) 1.608 GHz
946.96 MB DDR2 HD 80 Gb SATA
BFW 3.0.260 32 bits - squid - mac x ip - Mysql - phpmyadmin

Re: Corrir código PHP -session_start()

Mensagempor gerardonoh » Sex Mar 01, 2013 10:30 am

cuando utilizes sesiones la primera linea debe de ser asi
<?php
session_start(); y no asi <?php
//Restringir páginas
session_start();, no debe haber nada antes del comando


para evitar ese error.

voy a ver si puedo poner el codigo de login con ajax php y mysql redireccionado segun la seguridad de usuario.

saludos.
Avatar do usuário
gerardonoh
BFW Beneméritos
 
Mensagens: 162
Registrado em: Qui Set 22, 2011 2:35 am
BrazilFW Box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

código login PHP con permisos

Mensagempor gerardonoh » Sex Mar 01, 2013 11:06 am

index.php:
Código: Selecionar todos
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login </title>
<link rel="shortcut icon" href="favicon.ico">
<link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
<script src="js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function() {
$('#wrap').load('login.php');
});
</script>
<body>
<div id="wrap">
<!-- aqui carga el login con ajax!-->
</div>
<div id="footer"><center>Sistema login - Mysql - PHP -  Tec.Gerardo </center></div>
</body>
</html>


login.php
Código: Selecionar todos
<?php
session_start();
if (isset( $_SESSION['seguridad_usuario'])){
if($_SESSION['seguridad_usuario']=='administrador' or $_SESSION['seguridad_usuario']=='sistemas'){
header('location: indexadmin.php');
exit();
}
if($_SESSION['seguridad_usuario']=='invitado'){
header('location: index1.php');
exit();
}

}
header('Content-Type: text/html; charset=UTF-8');
?>
<script language="JavaScript" type="text/javascript">
$(document).ready(function() {
$("#password").keypress(function(event){
 
   var keycode = (event.keyCode ? event.keyCode : event.which);
   if(keycode == '13'){
      //alert('tu has presionado "enter" key ');   
      $("#btlogin").click();
   }
 
});
//Enviar tab si se precina enter key
$("input").not( $(":button") ).keypress(function (evt) {
   if (evt.keyCode == 13) {
   iname = $(this).val();
   if (iname !== 'Submit'){
   var fields = $(this).parents('form:eq(0),body').find('button, input, textarea, select');
   var index = fields.index( this );
   if ( index > -1 && ( index + 1 ) < fields.length ) {
   fields.eq( index + 1 ).focus();
   }
   return false;
   }
   }
});
// fin enviar tab
      $("div.info").html("Usuario sin acceso . Espere...por favor").fadeIn(900).delay(900).fadeOut(500);
    setTimeout("try{document.getElementById( 'usuario' ).focus();}catch(error){}",100);
    $(".error-input").remove();
   $(".alerta-input").remove();
   
 $("#btlogin").click(function(event) {

            if( $.trim($("#usuario").val()) == "" ){
                    $("#usuario").focus().after("<span class='error-input' style='display:inline'>Nombre de usuario?</span>");
                    $(".error-input").delay(990).fadeOut(900);
                   //se pone return false para que no se envie la pagina ( o a un no la procese)
                   return false;
            }
             //validamos campo password que no este vacio
          //  alert('La solicitud ha sido procesada');
            if( $.trim($("#password").val()) == "" ){
                    $("#password").focus().after("<span class='error-input' style='display:inline'>Ponga su clave</span>");
                    $(".error-input").delay(990).fadeOut(900);
                   //se pone return false para que no se envie la pagina ( o a un no la procese)
                   return false;
            }
           
             var dataString = $('#form_login').serialize();
             $("#usuario").select();
         $("div.load").html('Validando inf. espere...por favor').fadeIn(900);
             $.ajax({ 
         type: "POST", 
         url: "verifica_login.php",
         cache: false,
         data: dataString, 
              success: function(data){
          $('div.load').hide();
                //Validamos el resultado devuelto por verifica login
                   if(data==='ok'){
                   $('div.exito').html('Accesando').fadeIn(800).delay(1900).fadeOut(600);
                    $("#wrap").load('indexadmin.php').hide().fadeIn('slow');
                   
                     }else if(data==='invitado'){
                        $("#wrap").load('index1.php').hide().fadeIn('slow');
                  
                     }
                else if(data==='error'){
                        $("div.error").html("Datos Incorrectos. Verifique sus datos").fadeIn(900).delay(900).fadeOut(500);
                     }else{
                $("div.error").html(data).fadeIn(900).delay(900).fadeOut(500);
                }
               // fin de validacion del resultado devuelto por verifica_login
                                                        }
                });

            });//fin del btlogin click
});//fin del document ready
</script>

<body Onload="SetFocus('usuario')";>

 
 <form style="width: 50%; margin-top:50px;" id="form_login" class="form_login">
  <p>
  <label>Usuario </label>
  <input name="usuario" type="text" id="usuario" class="usuario" value="" maxlength="20" placeholder="Usuario" onload= "setFocus()"; /></p>
  <p>
  <br><label>Contrase&ntilde;a:</label>
  <input name="password" type="password" id="password" value="" maxlength="20" placeholder="Contrase&ntilde;a"/></p>
  <br>
  <center><p><input name="btlogin" type="button" value="Entrar" title="Acessar" id="btlogin" class="boton"/></p></center>
</form >
<div class="info">Mensaje de información que deseamos mostrar al usuario</div>
<div class="buscar">Mensaje de busqueda</div>
<div class="exito ">Mensaje de éxito de la operación realizada</div>
<div class="alerta">Mensaje de alerta que deseamos mostrar al usuario</div>
<div class="error">Mensaje que informa al usuario sobre el error que se ha producido</div>
<div class="load">Mensaje loadig</div>
</body>


verifica_login.php
Código: Selecionar todos
<?php
session_start();
$login="error";
//validamos tambien de este lado del servidor
if(!isset($_POST['usuario'])||!isset($_POST['password'])){
    $login="error";
    echo "faltan datos";
    echo $login;
    exit;
}
$usuario= htmlentities($_POST['usuario']);
$password=htmlentities($_POST['password']);
//aqui leemos bases de datos de usuarios
include "conexion.php";
$sql="SELECT * FROM usuarios where usuario='".$usuario."'";
$result=mysql_query($sql,$dbconexion);
//Validamos si hubo registros
if(mysql_num_rows($result) !==0){
    while($datos = mysql_fetch_array($result)){
   $dbid_usuario=$datos['id_usuario'];
    $dbusuario=$datos['usuario'];
    $dbpassword=$datos['password_usuario'];
   $dbseguridad_usuario=$datos['seguridad_usuario'];
    }
}
// fin de lectura
//validamos usuario password y seguridad de administradores
if($usuario==$dbusuario and $password==$dbpassword and $dbseguridad_usuario=='administrador') {
    $_SESSION['login']=$_POST['usuario'];
   $_SESSION['seguridad_usuario']=$dbseguridad_usuario;
   
$login="ok";
}
//validamos usuario password y seguridad de sistemas
if($usuario==$dbusuario and $password==$dbpassword and $dbseguridad_usuario=='sistemas') {
    $_SESSION['login']=$_POST['usuario'];
   $_SESSION['seguridad_usuario']=$dbseguridad_usuario;
   
$login="ok";
}

//validamos usuario password y seguridad de director
if($usuario==$dbusuario and $password==$dbpassword and $dbseguridad_usuario=='director') {
    $_SESSION['login']=$_POST['usuario'];
     $_SESSION['seguridad_usuario']=$dbseguridad_usuario;
   
$login="ok";
}

//validamos usuario password y seguridad deinvitado
if($usuario==$dbusuario and $password==$dbpassword and $dbseguridad_usuario=='invitado') {
    $_SESSION['login']=$_POST['usuario'];
    $_SESSION['usuario']=$_POST['usuario'];
   $_SESSION['id_usuario']=$dbid_usuario;
   $_SESSION['seguridad_usuario']=$dbseguridad_usuario;
   
$login="invitado";
}
echo $login;
?>


dancing :o!
Avatar do usuário
gerardonoh
BFW Beneméritos
 
Mensagens: 162
Registrado em: Qui Set 22, 2011 2:35 am
BrazilFW Box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: Corrir código PHP

Mensagempor apoliano » Sex Mar 01, 2013 3:01 pm

Boa tarde galera!

gerardonoh, vou dá uma olhada no que você postou.

Conseguie restringir a index.php, agora funcionou certinho, se o usuario digitar o caminho da página no navegador www.index2.php...
sem ter se logado antes, ele é imediatamente redirecionando para a index.php página de login.
restringir.php, configurações usada para restringir as páginas.
Código: Selecionar todos
<?php
//Restringir páginas
session_start();
//A session_start deve estar antes de qualquer codigo senao dará erro!
if(!isset($_SESSION["usuario"]) || !isset($_SESSION["senha"])){
   header("location: index.php");
   exit();
}else{
   echo "<center>Você está logado...</center>";
}
?>

Eu retirei do código a linha que fazia a conexão com o banco de dados.
include "config/conectar.php"; aí funcionou.

Aí passei para outro teste de restrinção, a index2.php tá na pasta principal, tenho uma pasta chamada cliente, coloquei um arquivo
dentro dela e mandei restringir o acesso, esse não funcionou, aparece essa mensagem de aviso:
File: 
Warning: include(config/restringir.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\saat\clientes\cadastro.php on line 2
Warning: include() [function.include]: Failed opening 'config/restringir.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\saat\clientes\cadastro.php on line 2


Eu to usando o Wampserver, dentro do diretório www, criei a pasta saat, tudo que tiver na pasta saat é bloqueado normalmente, aí criei dentro da pasta saat a pasta clientes, os arquivos que tão dentro da pasta clientes ou outra pasta que tiver dentro da dpasta saat não tá bloqueando o acesso.
Apoliano Sousa "técnico em Informática" aprendendo linux...
A cada dia meu conhecimento aumenta um pouco mais.
Avatar do usuário
apoliano
BFW Experienced
 
Mensagens: 798
Registrado em: Ter Dez 13, 2011 4:40 pm
Localização: Ubajara-CE
BrazilFW Box: Intel(R) Celeron(R) CPU 420 @ (1x) 1.608 GHz
946.96 MB DDR2 HD 80 Gb SATA
BFW 3.0.260 32 bits - squid - mac x ip - Mysql - phpmyadmin

Re: Corrir código PHP

Mensagempor apoliano » Sex Mar 01, 2013 3:31 pm

Galera conseguie resolver assim:
Código: Selecionar todos
<?php
//Restringir páginas
session_start();
//A session_start deve estar antes de qualquer codigo senao dará erro!
if(!isset($_SESSION["usuario"]) || !isset($_SESSION["senha"])){
   header("location: ../index.php");
   exit();
}else{
   echo "<center>Você está logado...</center>";
}
?>
<html>
<header>
   <title>Cadastrar Clientes</title>
</header>
<body>
<table width="41%" align="center">
   <tr>
   <td>
      <form name="form_cadastrar" method="post" action="">
      <div align="center">
      <strong>Nome:</strong>
      <input type="text" name="nome" id="nome" size="50">
      </div>
      <div align="center">
      <strong>Endereço:</strong>
      <input type="text" name="nome" id="nome" size="50">
      </div>
      </form>
   </td>
   </tr>
</table>
</body>
</html>

Colocando o código que vai deixar a página restrita dentro do mesmo arquivo.
Apoliano Sousa "técnico em Informática" aprendendo linux...
A cada dia meu conhecimento aumenta um pouco mais.
Avatar do usuário
apoliano
BFW Experienced
 
Mensagens: 798
Registrado em: Ter Dez 13, 2011 4:40 pm
Localização: Ubajara-CE
BrazilFW Box: Intel(R) Celeron(R) CPU 420 @ (1x) 1.608 GHz
946.96 MB DDR2 HD 80 Gb SATA
BFW 3.0.260 32 bits - squid - mac x ip - Mysql - phpmyadmin

Re: Corrir código PHP

Mensagempor baiev » Sáb Mar 02, 2013 11:35 am

Bom, traduzindo literalmente o erro da imagem dá pra se ter um ideia
senssion_start() não foi possível enviar a limitador de cache do session
baiev
 

Re: Corrir código PHP

Mensagempor apoliano » Sáb Mar 02, 2013 3:08 pm

Boa tarde galera!
baiev escreveu:Bom, traduzindo literalmente o erro da imagem dá pra se ter um ideia
senssion_start() não foi possível enviar a limitador de cache do session

Eu aindei pesquisando sobre esse assunto, mais ainda não conseguie resolver ele.
O que tem que ser inserido no código?

Mais a questão da segurança to avançando, conseguie restringir as páginas.
O que não conseguie resolver ainda é a questão do usuário e senha, se inseridos corretamente, mas com espaços em branco a autenticação é relizada normalmente.
Apoliano Sousa "técnico em Informática" aprendendo linux...
A cada dia meu conhecimento aumenta um pouco mais.
Avatar do usuário
apoliano
BFW Experienced
 
Mensagens: 798
Registrado em: Ter Dez 13, 2011 4:40 pm
Localização: Ubajara-CE
BrazilFW Box: Intel(R) Celeron(R) CPU 420 @ (1x) 1.608 GHz
946.96 MB DDR2 HD 80 Gb SATA
BFW 3.0.260 32 bits - squid - mac x ip - Mysql - phpmyadmin


Voltar para Programming

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes

cron