Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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?
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.
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?
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);
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?
T_ENCAPSED_AND_WHITESPACE
Suponho que você esqueceu um apóstrofo ou uma chave.. de uma olhada no seu código novamente.
É, 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
da um echo no $query_titulos antes da execução do SQL
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);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
faça um debug..
sugestão
nesse trecho
faça isso:veja o que aparece na tela e verifique os dados são consistentes conforme o resultado que deveria resgatar