Jump to content
Fórum Script Brasil
  • 0

Trabalhando Com Include.


fsphp

Question

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 to comment
Share on other sites

24 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

Cara esse include_path pelo que eu entendo é onde você registra de onde vem seus includes...ela é usada na hora de identificar como diretiva de segurança seu código.

Veja:

Aqui!!!

[]`s e posta ahe suas dúvidas!

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...