• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

InfernalStorm

Redireccionamento de páginas

24 mensagens neste tópico

Boas.

Tenho uma entrada Login em que o administrador é redireccionado para um página. Enquanto que os restantes users são redireccionados para outra. Help me please!  :P

Por enquanto o unico código que tenho é este:

<?

//mysqlconnection

mysql_connect ("localhost", "root", "") or die(mysql_error());

//Execução do codigo sql

$user = $_POST["username"];

$pass = $_POST["password"];

$sql = "SELECT * FROM USER WHERE username='$user' and password='$pass'";

$verificacao = mysql_db_query("iop musica",$sql) or die(mysql_error());

//Verifica se os dados estao correctos

$rows = mysql_num_rows($verificacao);

if ($rows == 1)

  $_SESSION['username']=$user;

  echo "Login correcto";

if($user == "Admin")

else

}

else

{

echo "Login Incorrecto";

}

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para redireccionares o pessoal para outra página fazes:

header("Location: pagina.php");

Nota apenas que o header tem de ser o primeiro output da página, mas não deverás ter problemas com isso.

Cumps :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Será que poderias ser um pouco mais especifico se faz favor? É que eu tenho de fazer a tal cena do if e do else certo? Não me sinto muito à vontade com o PHP

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É que eu quero fazer do género, o administrador é redireccionado para um página, enquanto que os restantes utilizadores para outra página...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este é o código que tenho...

login.html


<html>
<head></head>
<body>
<form method = "Post"
action = "login.php">
Faça o seu Login:<br>
Username: <input type = "Text" name = "username">
<br>
Password: <input type = "Text" name = "password"
<br>
Nome: <input type = "Text" name = "nome"
<br>
<input type = "Submit" name = "Submit"
value = Login"> <br>
</form>
</body>
</html>

login.php


<?

	//mysqlconnection
	mysql_connect ("localhost", "root", "") or die(mysql_error());

	//Execução do codigo sql

	$user = $_POST["username"];
	$pass = $_POST["password"];


	$sql = "SELECT * FROM USER WHERE username='$user' and password='$pass'";
	$verificacao = mysql_db_query("iop musica",$sql) or die(mysql_error());
	//Verifica se os dados estao correctos

	$rows = mysql_num_rows($verificacao);	

	if ($rows == 1)	
	{  	
   		$_SESSION['username']="$user";
   		echo "Login correcto";


		//if($user == ['admin']){
		//if ($user == $row_rsLogin['pass'])

		//header("Location: index_admin.html");
		//}


		else
		header("Location: registo_prod_admin.php");	


	}		
	else 
	{	
		echo "Login Incorrecto"; 
	}
?>

Se me podesses ajudar, agradecia-te imenso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao é muito complicado

qualquer coisa como

$user=$_SESSION["username"];
if($user=="admin"){
     header("location:script1.php");
}
else{
    header("location:script2.php");
}

experimenta tu mesmo o funcionamento do if. E lembra-te que a documentacao é uma camarada sempre pronta a ajudar ;)

http://www.php.net/manual/pt_BR/language.control-structures.php#control-structures.if

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, eu é que não tenho muitas bases de PHP... :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está aqui um problema. É que quando faço o login, ele em vez de redireccionar para a página "index_admin.html" (que é a página do administrador), vai para a página "login.php". A página inicial é a página "login.html" e era suposto ir para a página "index.html".

login.html


<html>
<head></head>
<body>
<form method = "Post"
action = "login.php">
Faça o seu Login:<br>
Username: <input type = "Text" name = "username">
<br>
Password: <input type = "Text" name = "password"
<br>
Nome: <
input type = "Text" name = "nome"
<br>
<input type = "Submit" name = "Submit"
value = Login"> <br>
</form>
</body>
</html>

Que terei aqui mal? :S Às tantas é dos outros ficheiros... Perceberam o que eu quero fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao estou a perceber muito bem confesso. Mas este formulario tem definido com endereco de chegada o ficheiro login.php

Um formulario, quando premido um elemento do tipo submit envia outro pedido para o servidor pedindo, passo a redundancia, o ficheiro definido no atrubuto action.

no teu caso o ficheiro login.php guardaria na sessao o que fosse necessario e depois conforme se tratasse de um utilizador ou do administrador redirecionarias para o devido script onde poderas ir buscar os dados necessarios a sessao.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no ficheiro login.php tens de verificar se o username e a password estão correctos e, em caso afirmativo, fazes o respectivo redireccionamento...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pegando no teu html

<html>

<head></head>

<body>

<?php if (!isset($_POST['Submit'])):

/*
alterei o teu form action="login.php" para ="" ou seja, assim fica tudo na mesma pagina
este if verifica se carregaram no botao submit

o '!' altera a ordem do if

if (empty($var)):

   echo 'sim está vazia';

else:

   echo 'nao está vazia';

endif;

repara 

if (!empty($var)):

   echo 'nao está vazia';

else:

   echo 'sim está vazia';

endif;

*/
?>

<form method = "Post" action = "">

Faça o seu Login:<br>

Username: <input type = "Text" name = "username">

<br>

Password: <input type = "Text" name = "password"

<br>

Nome: <

input type = "Text" name = "nome"

<br>

<input type = "Submit" name = "Submit"

value = Login"> <br>

</form>

</body>

</html>

<?php
else:

// se o botao foi carregado


//blblablab ligar à base de dados escolher a bd


$qualquercoisa = mysql_query("SELECT username, password, nivel FROM tabela WHERE 
username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".mysql_real_escape_string($_POST['password'])."'");

if (mysql_num_rows($qualquercoisa) == 1):

   echo 'sucesso blablalbalb';

   $i = mysql_fetch_array($qualquercoisa);

   if ($i['nivel'] == 'admin'):

      header('Location: pagina_admin.php');
   
   else:

      header('Location: pagina_user.php');
   endif;

endif;


endif;

?>

É normal que haja algum erro pois escrevi sem nada testar.

Cumprimentos!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenta isto:

<body>
<form id="form1" name="form1" method="post" action="login.php">
  user
  <input type="text" name="user" value="insira seu user name"/><br />
  pass
  <input type="password" name="pass" value=""/><br />
  <input type="submit" name="Submit" value="login" />
</form>
</body>

$user=$_POST['user'];
$pass=$_POST['pass'];

/*pressuponho que sabes fazer uma ligação a base de dados*/

$busca='SELECT * FROM tabela_que_tas_a_usar WHERE campo_do_utilizador_na_tabela LIKE "'.$user.'" AND campo_da_pass LIKE "'.$pass.'"';
$query_busca=mysql_query($busca,$ligacao); /*onde ligacao é a tua ligação a php*/

if (mysql_num_rows($query_busca)==0)
  {
   header("location:a_pagina_de_erro.html_ou_.php");
  }
else
  {
   header("location:a_pagina_certa.html_ou_.php");
  }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

usa esse codigo usa, depois queixa-te que entram no sistema ou  apagam coisas.

outra coisa, LIKE para comparar login??? isso é mais para sistemas de 'procura'

e ainda mais uma coisa, isso responde à pergunta inicial? para onde mandas o administrador?

tudo bem que queres ajudar e tal, mas assim acho que só atrapalhas.

O importante não é só ajudar mas sim, saber ajudar.

e porque nao poupas linhas para ter uma melhor performance?

Espero que não leves a mal os meus comentários.

Cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pegando no código do infopc:

<body>
<form id="form1" name="form1" method="post" action="login.php">
  user
  <input type="text" name="user" value="insira seu user name"/><br />
  pass
  <input type="password" name="pass" value=""/><br />
  <input type="submit" name="Submit" value="login" />
</form>
</body>

$user=mysql_real_escape_string($_POST['user']);// proteger contra ataques de SQL Injection
$pass=mysql_real_escape_string($_POST['pass']); // proteger contra ataques de SQL Injection

/*pressuponho que sabes fazer uma ligação a base de dados*/

$busca='SELECT * FROM tabela WHERE utilizador="'.$user.'" AND pass="'.$pass.'"';
$query_busca=mysql_query($busca,$ligacao); /*onde ligacao é a tua ligação a php*/

if (mysql_num_rows($query_busca)>0)
  {
   header("Location: LoginComSucesso.php");
  }
else
  {
   header("Location: LoginFalhado.php");
  }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mais uma resposta desnecessária (ao menos já está melhor em segurança), contudo não responde à pergunta inicial.

Cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como é obvio n levo a mal tamos aki todos para aprender.

no k diz respeito a protecção obrigadao pela info ja sei mais uma coisa.

bom em relação ao problema, agora k tou um cadinho mais sobrio k kuando li o post (note-se que no k diz respeito a segurança tanto fazia tar sobrio como n lol simplesmente n sabia lol)

ja pensaste em adicionar mais um campo na tabela de utilizadores? por exemplo um campo de hierarquias, assim podes dizer a base de dados que um determinado user é ou não admin.

supoem que o teu campo de hierarquia se chama 'hierrarquia' o codigo seria:

<body>
<form id="form1" name="form1" method="post" action="login.php">
  user
  <input type="text" name="user" value="insira seu user name"/><br />
  pass
  <input type="password" name="pass" value=""/><br />
  <input type="submit" name="Submit" value="login" />
</form>
</body>

$user=mysql_real_escape_string($_POST['user']);// proteger contra ataques de SQL Injection
$pass=mysql_real_escape_string($_POST['pass']); // proteger contra ataques de SQL Injection

/*pressuponho que sabes fazer uma ligação a base de dados*/

$busca='SELECT * FROM tabela WHERE utilizador="'.$user.'" AND pass="'.$pass.'"';
$query_busca=mysql_query($busca,$ligacao); /*onde ligacao é a tua ligação a php*/

if (mysql_num_rows($query_busca)>0)
  {
   if (mysql_result($query_busca,'hierarquia')=='admin')
      {
       iniciar_sessao(); /*uma função que inicia a sessao*/
        header("Location: administrador.php");
      }
   else
     {
      iniciar_sessao();
      header("location:outro_user.php");
      }
  }
else
  {
   header("Location: LoginFalhado.php");
  }

espero ter ajudado pelo menos com a ideia

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mais uma resposta desnecessária (ao menos já está melhor em segurança), contudo não responde à pergunta inicial.

Cumps!

Caso não tenhas reparado, eu apenas aumentei a segurança no código do infopc, não estava a responder ao post inicial. Mas também, estás aí a falar mas não postaste o código para aquilo que ele queria. ;)

Já agora, adaptando o código do infopc para vários níveis de utilizadores:

<body>
<form id="form1" name="form1" method="post" action="login.php">
  user
  <input type="text" name="user" value="insira seu user name"/><br />
  pass
  <input type="password" name="pass" value=""/><br />
  <input type="submit" name="Submit" value="login" />
</form>
</body>

$user = mysql_real_escape_string($_POST['user']); // proteger contra ataques de SQL Injection
$pass = mysql_real_escape_string($_POST['pass']); // proteger contra ataques de SQL Injection

// pressuponho que sabes fazer uma ligação a base de dados

$busca = 'SELECT * FROM tabela WHERE utilizador="'.$user.'" AND pass="'.$pass.'"';
$query_busca = mysql_query($busca, $ligacao); // onde ligacao é a tua ligação ao mysql

if (mysql_num_rows($query_busca)>0) {
   switch(mysql_result($query_busca, 'posicao')) { // posicao é a coluna que contem a posicao do utilizador
      case 'admin':
         // mostrar a página do administrador
         break;
      case 'mod':
         // mostrar a página de um moderador (aka staff)
         break;
      case 'user':
         // mostrar a página de um user comum
         break;
      case default:
         // o utilizador não é nem administrador nem mod nem user. erro?
         break;
   }
} else {
   // login falhado
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Boas.

Tenho uma entrada Login em que o administrador é redireccionado para um página. Enquanto que os restantes users são redireccionados para outra. Help me please!  Wink

Por enquanto o unico código que tenho é este:

Caso não tenhas reparado, o codigo que postei, responde às necessidades do InfernalStorm

if ($i['nivel'] == 'admin'):

  header('Location: admin.php'); // se for administrador vai para aqui

else:

  header('Location: user.php'); // vai para aqui porque é user normal

endif;

Agora respondendo ao Sr. infopc

É assim, podes optimizar o teu código em alguns sítios isto para teres uma melhor performance ;)

repara:

$user = mysql_reall // a meu ver não é muito bom porque é mais uma linha que vais ocupar e mais espaço

$pw = a mesma coisa...

$busca = 'SELECT * FROM...."

$query_busca = mysql_query(...);

podes simplesmente fazer de uma forma directa e poupas umas linhas

$busca = mysql_query("SELECT * FROM .....");

juntando isto tudo ficaria algo deste género,

$busca = mysql_query("SELECT * FROM tabela WHERE utilizador = '".mysql_real_escape_string($_POST['user'])."' AND pass = '".mysql_real_espace_string($_POST['pass'])."'");

ora vê quantas linhas não poupaste.... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ei pessoal n vale a pena tar a atacar uns aos outros. vamos la ver, no fundo no fundo tamos aqui todos para aprender e longe de mim querer por o ppl a discutir. ok o meu codigo n resolveu o problema, mas eu tb n queria faze-lo so queria dar a minha ideia. agora cabe ao infernalstorm usar o que lhe mostraram. se ele achar que não serve para nada faz ele proprio. ppl somos uma comunidade é suposto ajudar uns ao s outros n atacar.

fikem bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if ($i['nivel'] == 'admin'):

  header('Location: admin.php'); // se for administrador vai para aqui

else:

  header('Location: user.php'); // vai para aqui porque é user normal

endif;

Epá, esse aspecto... :) Anyway, diversidade é o que se quer, lá porque a solução já tinha sido postada, porque não postar outras? Este código que eu e o infopc fomos aí postando pode já não ajudar o InfernalStorm mas pode ajudar outras pessoas, evitando novos tópicos na secção. ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

concordo :)

E não estamos aqui para atacar uns aos outros. Simplesmente estamos a debater opinioes ;)

mas uma coisa é certa, andamos praqui a trocar ideias e Sr. interessado não responde.

beijos à prima

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora como faço um código de pesquisa de produtos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

concordo :)

E não estamos aqui para atacar uns aos outros. Simplesmente estamos a debater opinioes :P

mas uma coisa é certa, andamos praqui a trocar ideias e Sr. interessado não responde.

beijos à prima

Peço imensas desculpas mas já consegui resolver o meu problema. E entretanto não me lembrei de vir aqui informar-vos. Agora só tenho a duvida de como faço o código para uma pesquisa de produtos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT * FROM produtos WHERE nome LIKE lolada

Mas não te fies mt, não sei SQL :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora