Ir para conteúdo

POWERED BY:

Arquivado

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

Love

erro em sistema de login com àrea pessoal

Recommended Posts

oi pessoal

postei isso aqui há bem pouco tempo, mas apesar da valiosa ajuda de alguns de vcs eu continuo sem perceber onde está o erro.

Eis a ideia:

tem um sistema de login que, conforme o username e password vai ter à area pessoal de cada um, com dados relativos a seu proprio projecto. tipo se o id_projTIT' fôr 1 ele vai para à area do projecto 1, se for 2 etc etc

Quando escrevo o url manualmente ele lê bem os dados respectivos. mas é essa passagem da variavel que faz depois o display dos dados que ele dá o errol

 

Este código é criado automaticamente pelo Dreamweaver, eu percebo muito pouco do assunto, embora tenha feito algo com um raciocínio semelhante, mas com um Jump Menu e ele não deu problemas.

Aparentemente ele não está lendo o $row_titulos['id_projTIT']

 

 

o erro que dá é o seguinte:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/clepsidr/public_html/admin.php on line 37

 

Aqui:

 

$MM_redirectLoginSuccess = "projectos.php?pvar=$row_titulos['id_projTIT']";

 

Mas começo a desconfiar que embora ele acuse o erro nessa linha ele já vem de outra coisa qualquer.

 

 

<?php require_once('Connections/dbConnection.php'); ?>
<?php
$colname_titulos = "-1";
if (isset($_GET['pvar'])) {
  $colname_titulos = (get_magic_quotes_gpc()) ? $_GET['pvar'] : addslashes($_GET['pvar']);
}
mysql_select_db($database_dbConnection, $dbConnection);
$query_titulos = sprintf("SELECT * FROM t_projtitulos WHERE id_projTIT = %s", $colname_titulos);
$titulos = mysql_query($query_titulos, $dbConnection) or die(mysql_error());
$row_titulos = mysql_fetch_assoc($titulos);
$totalRows_titulos = mysql_num_rows($titulos);

$colname_QProj = "-1";
if (isset($_GET['pvar'])) {
  $colname_QProj = (get_magic_quotes_gpc()) ? $_GET['pvar'] : addslashes($_GET['pvar']);
}
mysql_select_db($database_dbConnection, $dbConnection);
$query_QProj = sprintf("SELECT * FROM t_projecto WHERE id_projTIT = '%s'", $colname_QProj);
$QProj = mysql_query($query_QProj, $dbConnection) or die(mysql_error());
$row_QProj = mysql_fetch_assoc($QProj);
$totalRows_QProj = mysql_num_rows($QProj);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['username'])) {
  $loginUsername=$_POST['username'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "level";
  $MM_redirectLoginSuccess = "projectos.php?pvar=$row_titulos['id_projTIT']";
  $MM_redirectLoginFailed = "reserved.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_dbConnection, $dbConnection);
	  
  $LoginRS__query=sprintf("SELECT username, pwd, level FROM t_login WHERE username='%s' AND pwd='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); 
   
  $LoginRS = mysql_query($LoginRS__query, $dbConnection) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
	
	$loginStrGroup  = mysql_result($LoginRS,0,'level');
	
	//declare two session variables and assign them
	$_SESSION['MM_Username'] = $loginUsername;
	$_SESSION['MM_UserGroup'] = $loginStrGroup;		  

	if (isset($_SESSION['PrevUrl']) && false) {
	  $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
	}
	header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
	header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

ALGUEM ME AJUDA POR FAVORRR?

:)

Boas festas para todos e muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um debug..

 

sugestão

 

nesse trecho

 

if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "level";
$MM_redirectLoginSuccess = "projectos.php?pvar=$row_titulos['id_projTIT']";

faça isso:

 

 

 

if (isset($_POST['username'])) {

	// for debug purposes only
	echo '<hr>DEBUG<br>'; print_r( $row_titulos ); exit;

$loginUsername=$_POST['username'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "level";
$MM_redirectLoginSuccess = "projectos.php?pvar=$row_titulos['id_projTIT']";

 

veja o que aparece na tela e verifique os dados são consistentes conforme o resultado que deveria resgatar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que continua algo errado

olha só:

 

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/clepsidr/public_html/admin.php on line 41

 

Exactamente na mesma linha que antes. Que estranho

so tela branca com isso , tal como antes.

 

Fiz tudo exactamente como você disse e nada, continua a achar que o erro vem de outro lugar, talvez na função que faz o login?

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a lógica e procure o erro

 

agora está mais claro

 

pois o erro anterior apontava falha na linha 37

 

o codigo que sugeri para que você debugasse possui 4 linhas

 

após executá-lo, o mesmo erro persistiu e o erro foi encontrado na linha 41.

 

37 + 4 = 41

 

 

ou seja,

 

o script não está entrando nesse bloco:

 

if (isset($_POST['username'])) {

 

 

 

na linha 40 escreva:

echo time() . '<hr>';

 

você verá que o erro cairá pra linha 42.

 

verifique se as variáveis ou chamadas de métodos na linha onde ocorre o erro são consistentes

 

 

dica: não confie somente na saída mostrada na tela do browser.

mesmo se estiver em branco, clique com o botão direito do mouse e selecione "exibir código fonte", para ver o conteúdo que foi gerado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso supostamente deveria resolver o problema né?

 

$MM_redirectLoginSuccess = "projectos.php?pvar=".$row_titulos['id_projTIT'];

Continua sem ler os dados de $row_titulos['id_projTIT'];

 

embora essa variável(pvar) seja passada noutras páginas exactamente da mesma maneira e sem problemas.

As tabelas estão ligadas por esse id_projTIT, logo n vejo razão para isso acontecer apenas aqui.

 

Desde que corrigi essa linha onde o erro que estava aparecendo, desapareceu, mas qd faço o login ele

mostra o seguinte:

 

no browser fica apenas - /projectos.php?pvar=

e na tela

 

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

 

Embora ,se eu colocar manualmente no url projectos.php?pvar=variavel aqui, ele lê td sem problemas.

Porque será que ele não está lendo esses dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já tentou substituir o resultado do mysql de assoc para array?

 

Troque esta linha:

$row_titulos = mysql_fetch_assoc($titulos);

 

Por:

 

$row_titulos = mysql_fetch_array($titulos);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já testei

Também n deu...

 

que coisa.

 

estou desmoralizando :(

 

Testei tanto na página de login como na outra onde faz o display!

 

Depois em todo o resto do processo corre tudo bem, porque será que aqui esta dando erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, eu já tentei nessa linha:

 

$query_titulos = sprintf("SELECT * FROM t_projtitulos WHERE id_projTIT = %s", $colname_titulos);

alterar para

 

$query_titulos = sprintf("SELECT * FROM t_projtitulos WHERE id_projTIT = '%s'", $colname_titulos);

tanto na pag do login como na do display(projectos.php), mas continua dando erro. Parece que cada vez que corrijo algo surge um novo...

 

Aliás,desde que corrigi isso em projectos.php

aparece um novo erro

 

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 'LIMIT 0, 3' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu experimentei isso dai:

como disse eu conheço muito pouco ainda de php/mysql, por isso se fiz algo absurdo, por favor compreenda :)

 

aqui vai

 

// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}
echo $query_titulos;

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['username'])) {
  $loginUsername=$_POST['username'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "level";
  $MM_redirectLoginSuccess = "projectos.php?pvar=".$row_titulos['id_projTIT'];
  $MM_redirectLoginFailed = "reserved.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_dbConnection, $dbConnection);

e aparece na tela

SELECT * FROM t_projtitulos WHERE id_projTIT = -1

 

mas tudo o resto parece também, não como se fosse erro.

 

testei também do seguinte modo:

<?php require_once('Connections/dbConnection.php'); ?>
<?php
$colname_titulos = "-1";
if (isset($_GET['pvar'])) {
  $colname_titulos = (get_magic_quotes_gpc()) ? $_GET['pvar'] : addslashes($_GET['pvar']);
}
mysql_select_db($database_dbConnection, $dbConnection);
$query_titulos = sprintf("SELECT * FROM t_projtitulos WHERE id_projTIT = %s", $colname_titulos);
$titulos = mysql_query($query_titulos, $dbConnection) or die(mysql_error());
$row_titulos = mysql_fetch_assoc($titulos);
$totalRows_titulos = mysql_num_rows($titulos);

echo $query_titulos;
?>

(ou seja antes de iniciar a sessão, né?)

e o resultado foi:

 

SELECT * FROM t_projtitulos WHERE id_projTIT = -1
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/clepsidr/public_html/admin.php:13) in /home/clepsidr/public_html/admin.php on line 18

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.