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?
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
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
a tua ajuda ajudoume a corrigir o tal erro do header. agora la vou eu voltar a martelar com as sessoes 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']; ?>
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