php algumas duvidas

Angelizer

Power Member
boas, tou a realizar um projecto em php/mysql e estou com algumas duvidas

na pag login faço a leitura do teclado td bem, dps faço um teste para verificar o tipo de user da seguinte forma:

...codigo...
$_SESSION['nome']=$registo['nome'];
$_SESSION['nivel']=$registo['nivel'];

if($_SESSION['nivel']=="gestor")
{
header ("location:administrador/gestor.php");
}

aki a minha duvida está.... fazer "header ("blah blah");" sera a melhor opçao para redireccionar para a pagina que quero??

outra coisa que nao consigo solucionar, é quando acedo a pagina gestor dps de fazer o login correcto, perco a info relativa a session...ou seja,

session_start();
$nome=$_SESSION['nome']; echo"$nome";

faço isto logo no inicio da pagina e nao faz print do nome do gestor na pagina.

any help?:wvsore::smilliex:
 
usaste session_destroy() em alguma parte do código?
antes de verificar se o $nome existe no ficheiro gestor.php, verifica também se ele está correcto na página anterior, o $registo['nome']. podes estar a escrever mal algum nome.


sobre o redireccionamento, acho que não há problema, desde que no ficheiro gestor.php esteja a devida validação, para que não possa ser acedido por alguém sem permissão
 
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\projecto\index.php:16) in C:\xampp\htdocs\projecto\index.php on line 200



alguem sabe o porque deste erro??? lol isto ta bonito!=P estoura por td o lado :003:
 
isso acontece porque já escreveste alguma coisa antes de usares o header.
o header tem que ser usado antes de qualquer output, a partir do momento que fazes algum echo, ou que escreves html, deixas de o poder usar

já agora posta ai o código da parte em que usas essa variavel que está a dar problemas, a ver se se resolve
 
Última edição:
a tua ajuda ajudoume a corrigir o tal erro do header. :)

agora la vou eu voltar a martelar com as sessoes :D

codigo que verifica o login e o redirecciona para outra pagina:
Código:
<?php
session_start();
$dbuser='matos';
$dbpass='matos';
$dbhost='localhost';
$dbname='engsof';

$conn = mysql_connect($dbhost,$dbuser,$dbpass) or die("erro ao ligar a BD");
mysql_select_db($dbname);
?>
<?php
$user=$_POST['username'];
$pass=$_POST['password'];

$sql= "select * from login where username='$user' and password='$pass'";
$resultado = mysql_query ($sql);
$numreg = mysql_num_rows ($resultado);
if ($numreg==1)
{
    
    while($registo=mysql_fetch_array($resultado))
    {
        $_SESSION['nome']=$registo['nome'];
        $_SESSION['nivel']=$registo['tipo'];
        $_SESSION['numero']=$registo['numero'];        

    }

    
    if($_SESSION['nivel']=="admin")
    {
        header ("location:administrador/RH.php");
    }
}
?>
aqui na pagina RH quero que escreva "Bem Vindo Admin" e nao escreve nada :X

Código:
<?php
session_start();
echo 'Bem Vindo';
echo $_SESSION['nome'];
?>
 
Última edição pelo moderador:
vai ao phpMyAdmin, executa essa mesma query do login, substituindo as variaveis, e ve se te dá o resultado pretendido

tu verificas se o mysql_num_rows é igual a 1, mas não cobres a possibilidade de não o ser, ou seja, de não ter encontrado registo, ou mesmo de ter encontrado vários. executando a query directamente vês logo se o resultado está correcto.

em alternativa também podes por, dentro do while, um var_dump($resultado) que te vai mostrar todo o conteudo da variavel.

já agora, não faz sentido esse while, visto que só entra nele se houver um registo. apaga o ciclo, mantendo o conteudo e o $row=mysql_fetch_array, que vai dar ao mesmo
 
Back
Topo