Ir para conteúdo

POWERED BY:

Arquivado

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

brendo

Variáveis, funções e includes

Recommended Posts

É possível exibir variáveis e funções dentro das includes?

Exemplo:

 

index.php

include "tool_n.php"

 

tool_n.php

<?
if($_SESSION['nivel_usuario'] == '2'){
echo "A";
}

B<br>C

<? if(empty($_SESSION['nome'])) { echo $_SESSION['usuario']; } else { echo $_SESSION['nome']; } ?>

 

Ao visualizar o index.php aparece:

B

C

 

o "A" e nenhum nome e ou usuário não aparece, independentemente, se eu entrar com qualquer nível de usuário.


Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tentou e não viu aquele "A" sendo mostrado, então a condição não foi satisfeita.

 

Você está trabalhado com sessões, não está? Lembrou do session_start()?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, o session_start() está na página e nos includes, mas para:

<? if(empty($_SESSION['nome'])) { echo $_SESSION['usuario']; } else { echo $_SESSION['nome']; } ?>

e mais

<? echo "<img border='0' src='mini.php?gd=3&src=configs/photo/fotos/{$_SESSION['photo']}&maxw=35'>"; ?>

 

não há condição definida de nível de usuário e eles também não aparecem... resumindo, nada que tenha algum tipo de "condição" é mostrado.

 

------ No index.php ------

<?
if($_SESSION['nivel_usuario'] == ''){
echo file_get_contents ("tooloff.php");
} else {
echo file_get_contents ("toolon.php");
}
?>

-------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está ciente que usar file_get_contents() não vai trazer PHP e sim texto plano, né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é...

Eu usava include, mas aparece na tela o #1

<?
if($_SESSION['nivel_usuario'] == ''){
echo include ("tooloff.php");
} else {
echo include ("toolon.php");
}
?>

 

Então passei a usar o file_get_contents()... Nossa esqueci disso: "texto pleno"...

Obrigado Bruno!

 

Você sabe o que usar para o resultado da variável não aparecer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu não tenho idéia do que você tá falando. Faz o seguinte, reformula o seu problema, descreve o que você realmente precisa fazer e como você tentou porque do jeito que está a gente pode varar o ano debatendo mil e uma soluções e nenhuma delas pode dar certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função "include 'toolon.php'" retorna um valor booleano verdadeiro 1 (true), parece que a string está vazia, por isso tentei usar file_get_contents(), mas já vimos que vai faltar retornos nas próximas páginas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arquivos PHP podem retornar valores:

 

a_nice_file.php

<?php

return 'Hey!';

 

another_awesome_file.php

<?php

$value = require __DIR__ . '/a_nice_file.php';

echo $value; // Hey!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não uso drogas!

Só estou dizendo que aparece o número 1 na página incluída!

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO!

 

Em vez disso:

 

<?
if($_SESSION['nivel_usuario'] == ''){
echo include 'tooloff.php';
} else {
echo include 'toolon.php';
}
?>

Usar isso:

 

<?
if($_SESSION['nivel_usuario'] == ''){
include 'tooloff.php';
} else {
include 'toolon.php';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, que bom que resolveu. Mas pare, releia todo o tópico e tente se colocar em nosso lugar

Em momento algum você disse que estava aparecendo o número 1 na tela. Agora olha para a sua própria solução e veja o que foi feito.

Toda função que não trabalhe com referências e nem ecoe nada ao longo de sua declaração possui um retorno. O mesmo não é diferente para os construtores de linguagem.

Veja o que o manual diz sobre include:

Handling Returns: include returns FALSE on failure and raises a warning. Successful includes, unless overridden by the included file, return 1

 

Ou seja, todo include de sucesso retorna 1 e todo include falho, retorna FALSE, além de gerar um Warning.

 

E para o contexto do "problema" (que não é um problema e sim falta de leitura do manual), 1 antes mesmo de ser um inteiro é um caractere imprimível. E o que acontece ao preceder um caractere imprimível com echo/print? Ele é enviado à saída do browser.

 

O que explica perfeitamente o comportamento que só agora, aos 45 do segundo tempo, você soube se explicar ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Justamente...

Por isso o #1 estava sendo impresso...

Em meio aos vários códigos e CTRL+C's - CTRL+V's, o script estava com a função "echo", por isso o #1 imprimia junto.

 

Grato pelo retorno!

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.