Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Déby Thomaz

[Resolvido] Erro na session?

Recommended Posts

Olá amigos!

Sou novata em php e estou com um problema em meu sistema, que não consigo arrumar de forma alguma...

É o seguinte: Eu tenho 3 páginas (empresa.php, empresa_os.php, empresa_laudo.php). Todas as empresas que

tenho cadastradas irão logar nessas páginas que tenho, porém uma não poderá ver os dados das outras, somente

oque for respectivo da sua própria empresa.

 

Eu coloquei o seguinte código para que isso possa ocorrer

$y = mysql_query("SELECT * FROM ordem_servico WHERE id_cliente= $_SESSION['cod_cliente']");
Porém está dando o seguinte erro

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

in C:\xampp\htdocs\eu salvei\ex_empresa_os.php on line 102

Se eu substituo o " $_SESSION['cod_cliente'][/b] " pelo id do cliente (por exemplo: $y = mysql_query("SELECT * FROM ordem_servico WHERE id_cliente= 6"); ), pega somente as coisas

do cliente de id = 6, mas eu gostaria que ele selecionasse os dados de quem está logado sem eu precisar indicar o ali o id de quem ele deve pegar os dados.

 

No topo da minha página eu coloquei a session_start direitinho >>>>

<?php
if (!isset($_SESSION)) {
  session_start();
}
?>
E na página logar os códigos estão assim >>>>

<?php
/* logar.php */
session_start();

include("config.php");
unset($_SESSION['MeuLogin']);
// pegando dados do formulário
$login = $_REQUEST["login"];
$senha = $_REQUEST["senha"];

$consulta = "select * from cliente where login='$login' and senha='$senha'";

$query = mysql_query($consulta);

if (!$query) {
die("Erro ao select da tabela login. Técnico:" . mysql_error());
}

		if($login == "admin" and $_REQUEST['senha'] == "admin") {
			$_SESSION['MeuLogin'] = array("login" => $login, "senha" => $senha, "logado" => "S"); 
			$_SESSION['nivel'] =  "9";
			header("location: admin.php?status=1"); }
		else {
		
// verificando se encontrou registros do login e senha no banco de dados.
 if (mysql_num_rows($query) > 0) {
	$x = mysql_fetch_array($query);
	// registrando a session com um array com o login e a senha.
	$_SESSION['MeuLogin'] = array("login" => $login, "senha" => $senha, "logado" => "S");
	$_SESSION['nivel'] = $x['nivel'];
	$_SESSION['login'] = $x['login'];	
	$_SESSION['cod_cliente'] = $x['cod_cliente'];
	// redirecionando para a pagina registrada.
	header("location: ex_empresa.php?status=1");
} else {

		// redirecionando para o formulario de login com o erro.
		header("location: index.php?erro=Login incorreto");
	}
}

?>
Creio que o erro possa estar na página logar.php, porém eu não consegui descobri qual é ele... :(/>

Por favor, preciso muito da ajuda de vcs!

Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está na construção da string, nos arrays, veja:

"SELECT * FROM ordem_servico WHERE id_cliente= $_SESSION['cod_cliente']"
Uma das formas corretas seria:

"SELECT * FROM ordem_servico WHERE id_cliente= {$_SESSION['cod_cliente']}"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Devem existir diversos erros no seu script. O que eu postei o problema do "unexpected T_ENCAPSED_AND_WHITESPACE".

Qual erro está dando agora ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu fizer assim, dá este erro aqui: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\eu salvei\ex_empresa_os.php on line 103

 

No caso, nessa linha: while($x = mysql_fetch_array($y)){

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.

 

$y = mysql_query("SELECT * FROM ordem_servico WHERE id_cliente= ". $_SESSION['cod_cliente'] ."");

while($x = mysql_fetch_array($y)){

Compartilhar este post


Link para o post
Compartilhar em outros sites

É porque mysql_fetch_array espera como argumento um recurso MySQL (MySQL Resource). Como houve um erro na query, foi passado um FALSE (booleano).

 

Lá no mysql_query ($y) acrescenta um 'die' para pegar o erro.

 

$y = mysql_query( ) or die ( mysql_error( ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é esse: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

 

 

<?php // >>> O php está na linha 1

if (!isset($_SESSION['cod_cliente'])) {

session_start();

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há um erro na query. Imprima ela e veja o que está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo '$y'; >>> certo??

 

Se for, imprime a mesma mensagem anterior (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe assim:

 

$y = mysql_query("SELECT * FROM ordem_servico WHERE id_cliente='{$_SESSION['cod_cliente']}'")or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. A query é o SQL, que é a string que é executada pelo mysql_query. No caso:

 

echo "SELECT * FROM ordem_servico WHERE id_cliente= ". $_SESSION['cod_cliente'] ."";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe assim:

 

$y = mysql_query("SELECT * FROM ordem_servico WHERE id_cliente='{$_SESSION['cod_cliente']}'")or die(mysql_error());

Ficou vazio...

 

Eu já falei que ele só está pegando as id's vazias??? Antes quando eu eu estava fazendo assim:

$cli = $_session['cod_cliente']

$y = mysql_query("SELECT * FROM ordem_servico WHERE id_cliente= '$cli' ");

 

Ele só estava imprimindo os arquivos cuja as id's eram igual à zero, e quem estava logado (id_cliente = 6), não pegava, (ou qualquer outra id_cliente que tivesse com algum valor atribuído).

 

Também tem essa questão:

 

Na página ex_empresa eu coloco a session no topo dessa forma: <?php

if (!isset($_SESSION)) {

session_start();

}

?>

 

E depois dou um echo para aparecer o login de quem está logado, assim: Seja Bem-Vinda <?= "$_SESSION[login]"; ?>!

 

Dá certo, porém com o cod_cliente não dá.... (funfa até se eu dar um echo na senha).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. A query é o SQL, que é a string que é executada pelo mysql_query. No caso:

 

echo "SELECT * FROM ordem_servico WHERE id_cliente= ". $_SESSION['cod_cliente'] ."";

Acontece isso: SELECT * FROM ordem_servico WHERE id_cliente=

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\eu salvei\ex_empresa_os.php on line 103

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica o que está em sessão, assim:

echo '<pre>';
print_r($_session);
echo '</pre>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas, eu tenho que escrever assim:

 

"SELECT * FROM ordem_servico WHERE id_cliente= ". $_SESSION['cod_cliente'] ."";

 

Ou assim:

 

"SELECT * FROM ordem_servico WHERE id_cliente='{$_SESSION['cod_cliente']}'")or die(mysql_error()

 

???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica o que está em sessão, assim:

echo '<pre>';
print_r($_session);
echo '</pre>';

Ponho este embaixo da consulta do msql? Ou onde estão as session's na página logar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.