Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalhando Com Include.


fsphp

Pergunta

Estou tentando colocar as variáveis de meu banco de dado em um arquivo fora do diretório www do meu servidor, e incluir esse arquivo através de uma include, mas não estou conseguindo.

Primeiro estou trabalhando localmente. Está dando erro de include_path. Vejam os scripts abaixo:

=========

professor.php

=========

<html>

<head>

<title></title>

<body>

<?php

$hostname = "localhost";

$username = "root";

$password = "";

$database = "meubancodedados";

?>

</body>

</html>

==============

moldura_principal.php

==============

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Documento sem t&iacute;tulo</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<style type="text/css">

<!--

body

{

background-image: url(file:///C|/phpdev/www/background3_flatten.jpg);

background-repeat: no-repeat;

background-attachment: fixed;

}

-->

</style>

<body bgcolor="#FFFFFF">

html com informações do site

<?php

include("http://localhost/variaveis/professor.php");

$contador = RetornaProximoValor($digitos);

function RetornaProximoValor ($digitos)

{

$hostname = "localhost";

$username = "root";

$password = "";

$database = "meubancodedados";

$con = mysql_connect($hostname, $username, $password);

mysql_select_db($database);

$resultsql = mysql_query("SELECT * FROM contador");

$total = mysql_num_rows($resultsql);

// echo "Quantidade de linhas= $total";

if ($total>0)

{

$valor = mysql_result($resultsql,0);

echo "<font face='verdana' size='2' color='ff0000'><b>Número de acessos: $valor</b></font>";

$valor++;

$result = mysql_query("update contador set valor=$valor");

}

else

{

$valor=1;

$resultsql = mysql_query("insert into contador values (1)");

}

mysql_close($con);

while (strlen($valor) < $digitos)

$valor = "0".$valor;

return $valor;

}

?>

</body>

</html>

No caso, dentro da moldura principal, lá em baixo, coloquei um contador de acessos. Para melhorar a segurança não espondo os valores das variáveis de acesso ao banco de dados, estou querendo colocar essas variáveis em um arquivo e este coloca-lo atraés de uma include na página.

Onde está o erro? huh.gif

Link para o comentário
Compartilhar em outros sites

24 respostass a esta questão

Posts Recomendados

  • 0

Usa require() e ve no que da...

Só pra você conhecer tb...essa função usa include_path...

include_path string
Especifica a lista de diretórios onde as funções require(), include() and fopen_with_path() procurarão por arquivos. O formato é o mesmo que o da variável ambiente PATH: uma lista de diretórios, separador por vírgula no Unix ou ponto e vírgula no Windows. 

Exemplo 4-3. include_path Unix

include_path=".:/php/includes"




Exemplo 4-4. include_path Windows

include_path=".;c:\php\includes"




Colocar um . no include_path permite includes relativos a partir do diretório atual. 

Procura sobre isso no php.net que você aprende facil...

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tinha colocado do jeito que o Woody falou, mas também não funcionou.

Vou ver como é com esse tal de include_path do gross e depois volto aqui. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Não consegui.

Tentei colocar vários caminhos para a include e nenhum deles deu certo. Tanto http://localhost.... como também http://C:......

Coloquei o diretório fora da www, depois dentro da mesma, e não funcionou.

Ao invés de include coloquei require() e não deu certo.

Também tentei colocando apenas:

include_path = "tentei_varios_caminhos";

Mas também não funcionou.

E agora pessoal? blink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

TODOS OS ERROS ACUSAM A LINHA 48, QUE É A LINHA ONDE COLOCO A INCLUDE

===========================

Usei: include("/variaveis/professor.php"); e deu o seguinte erro:

===========================

Warning: Failed opening

'/variaveis/professor.php'

for inclusion

(include_path='') in

c:\phpdev\www............\contador/php

on line 48

Warning: Supplied argument is not a vlid

MySQL result resource in

c:\phpdev\www...........contador.php

on line 60

============

USANDO require("/variaveis/professor.php"); deu o erro abaixo:

===========

Fatal error: Failed opening required

'/variaveis/professor.php' (include_path='') in

c:\phpdev...................

on line 48

=======================

USANDO include_path = "/entrevistas_aikido/sensei.php";

=================================

Deu o erro:

Parse error: parse error in c:\phpdev\www................contador.php on line 48

Link para o comentário
Compartilhar em outros sites

  • 0

LOCALMENTE FUNCIONOU DA SEGUINTE FORMA:

No arquivo include eu declarei as variáveis hostname, username e password. QUANDO EU DECLARAVA "$DATABASE" É QUE DAVA O ERRO!!?!?!?!? sad.gif

Coloquei a include assim:

include ("C:\phpdev\variaveis\professor.php");

Porque será qque não aceitou com a variável $database fora? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Não está rodando na net. Alguém me dá uma força?

Criei um diretório fora da pasta raíz de meu site e coloquei ele no servidor com o arquivo a ser incluído.

Nome do diretório: "variaveis"

Nome do arquivo: "professor.php"

<?php

$hostname = "mysql.meudominio.com.br";

$username = "meunome";

$password = "minhasenha";

?>

Coloquei a include na página principal do site (frame_principal.php) e a seguinte inclusão:

include "/home/meudominio/variaveis/professor.php";

Mas deu os seguintes erros:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/muralcultural/www/frame_principal.php on line 856

Warning: mysql_select_db(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/muralcultural/www/frame_principal.php on line 857

Warning: mysql_select_db(): A link to the server could not be established in /home/muralcultural/www/frame_principal.php on line 857

Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/muralcultural/www/frame_principal.php on line 858

Warning: mysql_query(): A link to the server could not be established in /home/muralcultural/www/frame_principal.php on line 858

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/muralcultural/www/frame_principal.php on line 859

Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/muralcultural/www/frame_principal.php on line 870

Warning: mysql_query(): A link to the server could not be established in /home/muralcultural/www/frame_principal.php on line 870

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/muralcultural/www/frame_principal.php on line 872

Link para o comentário
Compartilhar em outros sites

  • 0

Olá..

veja direito os diretorios.. só pode ser isto..

por exemplo o erro que deu:

/home/muralcultural/www/ (esta é a pasta principal da area da Net.)

voce esta utilizando:

/home/muralcultural/variaveis/professor.php

tente assim:

/home/muralcultural/www/variaveis/professor.php

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda não foi dessa vez. huh.gif

Além do que vocês colocaram, eu tentei, sem sucesso, o seguinte:

Resolvi colocar o próprio arquivo a ser incluído, diretamente na raíz do site.

Daí que a include ficava assim:

include "professor.php";

Mas nem desse jeito funcionou! Deu a seguinte mensagem:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/muralcultural/www/frame_principal.php on line 859

Será que é algo no php.ini? Se não me engano eu uso o php 4.0.6. Sei lá, não tenho idéia do que possa ser. sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Mas agora não é o mesmo problema....

O problema mostrado agora é de conexão ao MySQL.... verifique se o MySQL foi startado....

Mas seu problema de include foi resolvido sim.....

Uma sugestão, faça o seguinte:

Tipo vai aumentando nível a nível dos dirtórios e vai mudando o arq PHP. Da pra ver até onde é possível deixar esses arquivos...

E assim você também já vai aprender como relacionar dir/caminho...

Até+

cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Woody,

Essa sua sugestão foi o que eu resolvi fazer...

Mas como assim de ver se o Mysql está estartado, se eu estou trabalhando com ele diretamente na net?

Quando eu tiro a include, o site acessa o banco de dados normalmente e opera a contagem de acessos.

Aí eu coloco a include, e retiro as variáveis da página (pois elas serão passadas pela include), e não dá certo, dá esse erro.

Porque será que está acontecendo isso? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Faça assim:

Coloque o include e de um echo em alguma variável que encontra-se no arquivo que você incluiu....

Aí você tira a prova se as variáveis estão chegando de acordo com o que você quer...

Eu disse do MySQL porque o erro q você postou é sobre o MySQL, mais precisamente o mysql_connect()....

Boa Sorte,

Até+

cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Coloquei a include "professor.php"; e logo a seguir echo "$servidor $usuario $senha";

Apareceram as variáveis e, abaixo delas, deu esse erro:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/muralcultural/www/frame_principal.php on line 859

Parece que estamos chegando perto da solução smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

include "professor.php";

// echo "$servidor $usuario $senha";

$contadormural = RetornaProximoValor($digitos);

function RetornaProximoValor ($digitos)

{

$banco = "muralcultural";

$con = mysql_connect($servidor, $usuario, $senha);

mysql_select_db($banco, $con);

$resultsql = mysql_query("SELECT * FROM contadormural");

$total = mysql_num_rows($resultsql);

if ($total>0)

Será que é porque a conexão está dentro, e não fora, da função? huh.gif

Eu teria que gerar essas variáveis com âmbito global ou algo do tipo? huh.gif

Estranho é que localmente eu consegui rodar!

Link para o comentário
Compartilhar em outros sites

  • 0

Tem sim. Meu servidor tem suporte a banco de dados e usa o Mysql, com acesso através do phpMyAdmin.

No entanto, vou entrar em contato com o suporte deles para ver se eles possuem alguma restrição a esse respeito. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz várias tentativas e acabei conseguindo da seguinte forma:

Declarei as variáveis como globais dentro da função:

<?php

include "professor.php";

$contadormural = RetornaProximoValor($digitos);

function RetornaProximoValor($digitos)

{

global $servidor;

global $usuario;

global $senha;

$con = mysql_connect($servidor, $usuario, $senha);

........

Aí funcionou. Alguém pode me explicar mais ou menos porque? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Agora que eu vi..... a função mysql_connect estava dentro da função....

Isso se chama escopo de variável.... as variáveis do include só tem valor fora da função....

Em todo caso, você poderia passar tb pela função....

Ficaria:

function NOMEDAFUNCAO($par1,$par2,$par3,$par4){
......
}

Eu nem prestei atenção na função.... e acho que isso pode ser configurado no PHP.ini

E muito provavel que seja o register_globals.

Até+

cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Aí Woody,

Fiz desse outro jeito que também deu certo:

include "professor.php";

$con = mysql_connect($servidor, $usuario, $senha);

mysql_select_db($banco, $con);

$contadormural = RetornaProximoValor($digitos);

function RetornaProximoValor($digitos);

{

..............

Ou seja, fiz a conexão fora da função, sem a declaração de variável global. O que acho muito estranho foi que localmente não tive problema nenhum, funcionou com a conexão sendo feita dentro da função!?!?!?!? sad.gif

Legal que foi um grande estudo para mim. Graças a força da galera que me ajudou a pensar tentar uma coisa e outra. Obrigado a todos!!!!!! smile.gif

Também consegui fazer o arquivo "professor.php" ficar fora da raíz do site, ou seja, fui colocando o arquivo em outros diretórios, até sair da raíz do site. Coloquei a include assim:

include "/home/meudominio/variaveis/professor.php";

Valeu por mais essa força pessoal!!! biggrin.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...