Ir para conteúdo

POWERED BY:

Arquivado

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

MarcosMattos

[Resolvido] Erro de linha

Recommended Posts

Pessoal to com erro nessa na linha 4 não sei o que há

ps: preciso que exlique a correção pois estou a aprender php + mysql

 

 

 

<?php
//esse codigo deve ser incluido em todas as páginas de administração apra maior segurança
Session_Start();
if(!Isset($_SESSION['AdmId']){

Header("Location: index.php");

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falta fechar o parênteses do IF, você só fechou o do isset().

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe postei errado essa é a linha que ta dando o erro.

Notice: Undefined index: aSubmit in C:\wamp\www\wizards\site\adm\index.php on line 4

 

if($_POST['aSubmit'] == "Logar"){

 

E esse é o pagina completa.é pagina para so adm acessar um contro painel ...

 

 

?php

//aqui validamos o login do form abaixo
if($_POST['aSubmit'] == "Logar"){
//aqui faz conexao com o banco
$user = $_POST['aLogin'];
$pass = $_POST['aPass'];

$sql = "SELECT Id, IsAdm FROM Usuarios WHERE Login = '$user' and Senha = '$pass'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
if($row['IsAdm'] == "N"){

echo("Você não tem permissão para acessar essa página<br>");


}else{

Session_Start();
$_SESSION['AdmId'] = $row['Id'];
header("Location: administracao.php");

}


}

?>
<form method="POST" action="index.php">
Login:<input type="text" name="aLogin" value="" />
<br>
Senha: <input type="password" name="aPass" value=""/>
<br>
<input type="submit" name="aSubmit" value="Logar" />
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cole sempre as mensagens de erro aqui. Muitas vezes elas ajudam mais que o código.

 

O único problema que eu vejo que pode dar nessa linha é a falta do índice 'aSubmit' em $_POST.

Se ele não existir, será emitido um Notice.

 

O que você pode fazer é verificar antes se ele está definido:

if (isset($_POST['aSubmit']) && $_POST['aSubmit'] == 'Logar') {

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui resolver

coloquei esse codigo

if( $_SERVER['REQUEST_METHOD'] == 'POST' ){

ai a msg de warnning saio ai quando eu logo era para aparecer as coisas de administração com os links....

 

mas aparece apenas isso

Parse error: parse error in C:\wamp\www\wizards\site\adm\administracao.php on line 4

 

aqui vai a pagina de adm

 

<?php
//esse codigo deve ser incluido em todas as páginas de administração apra maior segurança
Session_Start();
if(!IsSet($_SESSION['AdmId']){

Header("Location: index.php");

}

?>
<a href="racas.php">Cadastro de Raças</a><br>
<a href="magias.php">Cadastro de Magias</a><br>
<a href="armas.php">Cadastro de Armas</a><br>
<a href="armaduras.php">Cadastro de Armaduras</a><br>
<a href="cidades.php">Cadastro de Cidades</a><br>
<a href="locais.php">Cadastro de Locais</a><br>
<a href="monstros.php">Cadastro de Monstros</a><br>
<a href="locmons.php">Colocar Monstro em Determinado Local</a><br>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o código completo, como tá agora, depois das alterações.

 

<?php
//esse codigo deve ser incluido em todas as páginas de administração apra maior segurança
Session_Start();
if (!isset($_SESSION['AdmId'])) {

Header("Location: index.php");

}

?>
<a href="racas.php">Cadastro de Raças</a><br>
<a href="magias.php">Cadastro de Magias</a><br>
<a href="armas.php">Cadastro de Armas</a><br>
<a href="armaduras.php">Cadastro de Armaduras</a><br>
<a href="cidades.php">Cadastro de Cidades</a><br>
<a href="locais.php">Cadastro de Locais</a><br>
<a href="monstros.php">Cadastro de Monstros</a><br>
<a href="locmons.php">Colocar Monstro em Determinado Local</a><br>

 

 

 

index

 

<?php

//aqui validamos o login do form abaixo
if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
//aqui faz conexao com o banco
$user = $_POST['aLogin'];
$pass = $_POST['aPass'];

$sql = "SELECT Id, IsAdm FROM Usuarios WHERE Login = '$user' and Senha = '$pass'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
if($row['IsAdm'] == "N"){

echo("Você não tem permissão para acessar essa página<br>");


}else{

Session_Start();
$_SESSION['IsAdm'] = $row['Id'];
header("Location: administracao.php");

}


}

?>
<form method="POST" action="index.php">
Login:<input type="text" name="aLogin" value="" />
<br>
Senha: <input type="password" name="aPass" value=""/>
<br>
<input type="submit" name="aSubmit" value="Logar" />
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era só editar o post de cima... mas, enfim...

 

Faça o seguinte, troque o mysql_fetch_array() por mysql_fetch_assoc(), o primeiro sem segundo parâmetro somente te dá acesso aos campos dessa forma: $row[0] para o primeiro campo, $row[1] para o segundo e assim por diante. O mysql_fetch_assoc() resulta em $row['nome_do_campo'], que pelo jeito é o que você quer.

 

Se ainda assim não funcionar, mantenha o mysql_fetch_assoc() e inclua algumas linhas de debug nos arquivos.

Exemplos:

linha 4

if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
echo 'O formulário foi recebido<br />';

linha 9

$query = mysql_query($sql) or die(mysql_error());

linha 15

}else{

Session_Start();
$_SESSION['IsAdm'] = $row['Id'];
echo 'Isso deveria redirecionar para administracao.php, mas comentamos o header()<br />';
var_dump($_SESSION);
//header("Location: administracao.php");

}

Faça de forma semelhante no administracao.php e depois poste todas as mensagens que foram exibidas aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o index

 

<?php

//aqui validamos o login do form abaixo
if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
//aqui faz conexao com o banco
$user = $_POST['aLogin'];
$pass = $_POST['aPass'];

$sql = "SELECT Id, IsAdm FROM Usuarios WHERE Login = '$user' and Senha = '$pass'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
if($row['IsAdm'] == "N"){

echo("Você não tem permissão para acessar essa página<br>");


}else{

Session_Start();
$_SESSION['IsAdm'] = $row['Id'];
header("Location: administracao.php");

}


}

?>
<form method="POST" action="index.php">
Login:<input type="text" name="aLogin" value="" />
<br>
Senha: <input type="password" name="aPass" value=""/>
<br>
<input type="submit" name="aSubmit" value="Logar" />
</form>

 

E esse é administração

<?php
//esse codigo deve ser incluido em todas as páginas de administração apra maior segurança
Session_Start();
if (!isset($_SESSION['AdmId'])) {

Header("Location: index.php");

}

?>
<a href="racas.php">Cadastro de Raças</a><br>
<a href="magias.php">Cadastro de Magias</a><br>
<a href="armas.php">Cadastro de Armas</a><br>
<a href="armaduras.php">Cadastro de Armaduras</a><br>
<a href="cidades.php">Cadastro de Cidades</a><br>
<a href="locais.php">Cadastro de Locais</a><br>
<a href="monstros.php">Cadastro de Monstros</a><br>
<a href="locmons.php">Colocar Monstro em Determinado Local</a><br>

 

Fiz add as coisas eu apareceu os links mas

aparece esse erro

Notice: Undefined variable: sql in C:\wamp\www\wizards\site\adm\index.php on line 10

 

e precisa add neles agora a conexao com mysql pq ele disse que não está conectando e pedi senha e tals haha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, isso tá confuso.

 

Deveria aparecer 'O formulário foi recebido' se você adicionou o 'echo' abaixo de 'if( $_SERVER['REQUEST_METHOD'] == 'POST' ){', na linha 4.

 

Esse Notice: Undefined variable: sql in C:\wamp\www\wizards\site\adm\index.php on line 10 não deveria aparecer se você simplesmente acrescentou 'or die(mysql_error());' à linha 9, depois de '$query = mysql_query($sql)'.

 

E não deveria aparecer link nenhum, afinal comentamos o 'header("Location: administracao.php");', portanto ele não deveria redirecionar... só exibir 'Isso deveria redirecionar para administracao.php, mas comentamos o header()' e o conteúdo de $_SESSION.

 

Como eu disse: cara, isso tá confuso.

 

Um sábio um dia me falou: "Joga tudo fora e faz denovo!"

Compartilhar este post


Link para o post
Compartilhar em outros sites

adicionei as oicas no lugar errado então tem como você por ai como tem que add?? pq n sei entao

 

Era só editar o post de cima... mas, enfim...

 

Faça o seguinte, troque o mysql_fetch_array() por mysql_fetch_assoc(), o primeiro sem segundo parâmetro somente te dá acesso aos campos dessa forma: $row[0] para o primeiro campo, $row[1] para o segundo e assim por diante. O mysql_fetch_assoc() resulta em $row['nome_do_campo'], que pelo jeito é o que você quer.

 

Se ainda assim não funcionar, mantenha o mysql_fetch_assoc() e inclua algumas linhas de debug nos arquivos.

Exemplos:

linha 4

if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
echo 'O formulário foi recebido<br />';

linha 9

$query = mysql_query($sql) or die(mysql_error());

linha 15

}else{

Session_Start();
$_SESSION['IsAdm'] = $row['Id'];
echo 'Isso deveria redirecionar para administracao.php, mas comentamos o header()<br />';
var_dump($_SESSION);
//header("Location: administracao.php");

}

Faça de forma semelhante no administracao.php e depois poste todas as mensagens que foram exibidas aqui.

 

 

 

 

 

da esse erro

 

 

O formulário foi recebido

 

Warning: mysql_query() [function.mysql-query]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\wizards\site\adm\index.php on line 11

 

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\wizards\site\adm\index.php on line 11

Access denied for user 'SYSTEM'@'localhost' (using password: NO)

 

agora aprece isso

 

 

O formulário foi recebido

Isso deveria redirecionar para administracao.php, mas comentamos o header()

array(2) { ["AdmId"]=> NULL ["IsAdm"]=> NULL }

Compartilhar este post


Link para o post
Compartilhar em outros sites

da esse erro

 

 

O formulário foi recebido

 

Warning: mysql_query() [function.mysql-query]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\wizards\site\adm\index.php on line 11

 

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\wizards\site\adm\index.php on line 11

Access denied for user 'SYSTEM'@'localhost' (using password: NO)

Beleza. Ai tá faltando conectar o banco de dados...

 

agora aprece isso

 

 

O formulário foi recebido

Isso deveria redirecionar para administracao.php, mas comentamos o header()

array(2) { ["AdmId"]=> NULL ["IsAdm"]=> NULL }

Já fez a conexão ao banco? Se sim, pode ser que os nomes dos campos não estejam correspondendo.

De qualquer forma, retira o que foi inserido antes:

echo 'O formulário foi recebido<br />';

$query = mysql_query($sql) or die(mysql_error()); // Tira só o 'or die(mysql_error())' e mantém o ponto-e-vírgula

echo 'Isso deveria redirecionar para administracao.php, mas comentamos o header()<br />';
var_dump($_SESSION);

 

Descomenta o header() e substitui o '$_SESSION['IsAdm'] = $row['Id'];' por '$_SESSION['AdmId'] = true;':

Session_Start();
$_SESSION['AdmId'] = true;
header("Location: administracao.php");

 

Deve funcionar... mal, mas deve... há algumas coisas estranhas e qualquer um pode acessar a administração.

Volto a dizer: "Joga tudo fora e faz denovo!"

Compartilhar este post


Link para o post
Compartilhar em outros sites

HAZ vlw zão mas comesei fiz de novo ai funcionou hahahaha

trokei o isset elo que você passou

if (isset($_POST['aSubmit']) && $_POST['aSubmit'] == 'Logar') {

 

ai deu certo.. obrigado cara!

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.