Função [RESOLVIDO]

1. Função [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 14/11/2012 - 22:23h

Boa noite pessoal


Fiz uma função php, gostaria que se o conteudo do arquivo validar.txt for 0 essa função encaminha para a página index.php, se diferente de 0, não faça nada.

<?php
function validar(){
$caminho = "/var/www/php/script/validar.txt";
$arq=fopen($caminho, "r");
$valor=fread($arq, 1);
$voltar=0;
if ($valor==0) {
$voltar = "header('Locatin: /php/index.php')";
}
return $voltar;
}
?>




Quando eu utilizo o comando
<?php
echo validar();
?>


não redireciona para o index, e para o preenchimento pela metade.
a função está correto? Como utilizarei a função em minhas paginas php?


  


2. MELHOR RESPOSTA

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 15/11/2012 - 09:26h

tem que incluir o arquivo da que possui a função
<?php
include("arquivo_com_a_função.php");
validar();
?>


http://br1.php.net/manual/pt_BR/function.include.php

3. Re: Função [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 14/11/2012 - 23:04h

Tente a função include($voltar)


4. Re: Função [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 14/11/2012 - 23:10h

me desculpe, mas não entendi, poderia me dar mais detalhes?


5. Re: Função [RESOLVIDO]

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 14/11/2012 - 23:22h

é só disparar a função header direto,


<?php
function validar(){
$caminho = "/var/www/php/script/validar.txt";
$arq=fopen($caminho, "r");
$valor=fread($arq, 1);

$volor=0; //apenas para debug

if ($valor==0) {
header('location:/php/index.php');
}
return $voltar;
}
?>


a palavra location estava errada tambem, tem que ser assim, porque esse header() passa um parâmetro pelo protocolo http://


6. Re: Função [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 14/11/2012 - 23:29h

lanzao escreveu:

Boa noite pessoal


Fiz uma função php, gostaria que se o conteudo do arquivo validar.txt for 0 essa função encaminha para a página index.php, se diferente de 0, não faça nada.

<?php
function validar(){
$caminho = "/var/www/php/script/validar.txt";
$arq=fopen($caminho, "r");
$valor=fread($arq, 1);
$voltar=0;
if ($valor==0) {
$voltar = "header('Locatin: /php/index.php')";
}
return $voltar;
}
?>




Quando eu utilizo o comando
<?php
echo validar();
?>


não redireciona para o index, e para o preenchimento pela metade.
a função está correto? Como utilizarei a função em minhas paginas php?


Note o conteudo da variável $voltar... header('Locatin....') oooops, é Location.

Mas detalhe, sugiro que ao inves de vc retornar o header, retornar um true ou false, segundo o Livro Código limpo que estou lendo, cada função deve executar apenas uma unica coisa, no seu caso, está fazendo duas, lendo o arquivo e definindo o redirecionamento. O ideal seria em caso de satisfeito retornar um true e onde a função foi chamada, se houver este retorno aí sim redireciona....


function validar(){
$caminho = "/var/www/php/script/validar.txt";
$arq=fopen($caminho, "r");
$valor=fread($arq, 1);
if ( $valor == 0 ) {
return true;
} else {
return false;
}
}

if ( valida() ) {
header("Location: /php/index.php" );
}



7. Re: Função [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 14/11/2012 - 23:39h

Obrigado por estarem respondendo.

O Locatin realmente estava errado, eu pude ver quando adri3d me respondeu.

Fiz da forma que o adr3d disse e logo fiz da forma que o andrebian falou.
Tive os mesmos problemas.


Eu vou na pagina que está chamando essa função, ela executa os códigos da pagina até onde foi feito a chamada da função "validar", e mesmo no meu txt tando com 0, minha função não está surtindo efeito. Além de não abrir toda a página.


8. Re: Função [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 15/11/2012 - 00:19h

Vc está com os erros do PHP habilitados? Podem ajudar... geralmente o header() pode gerar um Cannot redeclare.... mas somente com os erros habilitados é possível ver este erro, aqui pra mim a função redirecionou beleza ... e oooops, tem um erro na minha resposta, vi agora aqui... troque


if ( valida() ) ...


por

if ( validar() ) ...



9. Re: Função [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 15/11/2012 - 01:03h

Eu habilitei os erros no php.

Fatal error: Call to undefined function validar() in /www/var/php/menuprincipal.php on line 10


linha 10 é onde estou chamando a função.
<?php
validar();
?>

<?php
function validar(){
$caminho = "/var/www/php/script/validar.txt";
$arq=fopen($caminho, "r");
$valor=fread($arq, 1);
$voltar=0;
if ($valor==0) {
header('Location: /php/index.php');
}
//return $voltar;
}
?>



10. Re: Função [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 15/11/2012 - 10:52h

adri3d escreveu:

tem que incluir o arquivo da que possui a função
<?php
include("arquivo_com_a_função.php");
validar();
?>


http://br1.php.net/manual/pt_BR/function.include.php


É isso aí.


11. Re: Função [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 15/11/2012 - 15:53h

rei_astro escreveu:

adri3d escreveu:

tem que incluir o arquivo da que possui a função
<?php
include("arquivo_com_a_função.php");
validar();
?>


http://br1.php.net/manual/pt_BR/function.include.php


É isso aí.


Uma ressalva somente... o include não é um redirect com isso você ainda estará no mesmo arquivo com todo seu conteúdo e processamento, se você der um refresh nesta "nova tela" (já que continua na tela inicial) a condição será verificada novamente e isso não é o correto. O correto é função com uma única finalidade, o que não está acontecendo com a sua função e conforme foi eleita a melhor resposta, além disso aqui estamos vendo um único exemplo se sobrecarregamento, mas se continuar a trabalhar desta forma seu sistema ficará muuuuuito lento. Dica: se for pra redirecionar, redirecione não inclua o novo arquivo fazendo assim seu sistema virar um monstro.


12. Re: Função [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 15/11/2012 - 16:11h

Eu não manjo nada de php, não sei qual é a melhor forma. Você ta dizendo que ele está sendo redirecionado e fica re chamando função?

mas no meu index não tem esse include.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts