Jump to content


Photo

Página Em Php Que Gera Uma Outra Página Html No Servidor


  • Faça o login para participar
17 replies to this topic

#1 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 12/08/2009, 20:06

Olá pessoal...
Preciso de uma página em php com um código para gerar uma outra página em html.
Seria assim:

Qualquer usuário que acessa-se essa página php pelo seu navegador, teria a sua disposição dois campos (tipo um formulário). O primeiro campo seria para o usuário digitar o nome do arquivo html (ex: o usuário define o nome como testenome e no servidor será criado um arquivo testenome.html, no mesmo diretório onde está localizado a página php geradora.
O segundo campo seria uma caixa para o usuário colar o código fonte que aparecerá nesse html criado.

Não entendo nada de php (somente o que a lógica permite), e creio que não seja tão complicado fazer isso.

Se alguem puder ajudar, dar uma dica ou sugestão, serei grato.

Edição feita por: Cajado, 12/08/2009, 20:07.


#2 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 12/08/2009, 22:56

Boa noite amigo.
Tudo bom?

O que você precisa é bem simples!
De uma lida nas funções fopen e fwrite no site www.php.net

Caso não entenda alguma coisa é só postar aqui!

Abraços e até a próxima!
Mateus
Mateus Antunes
MBASistemas

#3 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 13/08/2009, 08:17

Bem Mateus...
Eu realmente não entendo nada de php, como disse anteriormente. A única coisa que sei fazer é editar o código para alterar algo que necessite. Alías, utilizando um pouco de lógica, pode-se editar qualquer código (não necessariamente em php hehe).

Mas enfim... preciso de um help... não sei como utilizar as funções em php... se puder fazer o source e deixa-lo aki para teste melhor ainda...

#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 13/08/2009, 08:37

Bom, vou te dar a faca e o queijo, cortar é com você. ;)

1. Crie o formulário e defina os nomes dos campos (propriedade name), o action do formulário (acao.php, por exemplo) e o método POST, na propriedade method.

2. Em acao.php você basicamente fará duas ações: a ) criar arquivo; b ) definir seu conteúdo
  • Crie o arquivo com a função fopen(), passando para o primeiro campo o nome do arquivo, no caso seria o campo $_POST['nome_arquivo'] por exemplo, o qual foi preenchido pelo usuário e no segundo parâmetro o modo de escrita ("r").
  • Então coloque o conteúdo dentro deste arquivo utilizando a função fwrite(), passando no primeiro parâmetro a referência da função fopen() e no segundo o conteúdo deste arquivo.
Enfim, basicamente é isto que você precisa. Lógico, há alguns incrementos e dicas de segurança como por exemplo restrição de códigos, formato dos arquivos a serem criados, um conteúdo padrão, ou seja, o básico do HTML como as tags html, head, body e etc.

Qualquer e se ainda tiver dúvida eu te ajudo a cortar. (y)

[]'s (ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 13/08/2009, 09:12

Cara... vou precisar de uma ajuda no corte mesmo...
bem a 1ª parte foi tranquilo:

[codebox]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Adicionar p&aacute;gina no servidor</title>
</head>

<body>
<form name="generator" method="post" action="acao.php">
<label>Defina o nome do arquivo html:
<input name="nome_arquivo" type="text" id="nome_arquivo" />
</label>
<br />
<label>Insira o código fonte:
<textarea name="codigo_do_arquivo" id="codigo_do_arquivo"></textarea>
</label>
<br /><input name="criar" type="button" value="Criar P&aacute;gina" />
</form>
</body>
</html>
[/codebox]

Agora o resto em diante complicou, pois não sei inserir as funções que vc falou (como disse não entendo de php).

Sobre as suas observações, estou a par disto. Aliás, quando o usuário for inserir o código fonte do arquivo html criado, ele terá que inserir as tags padrões (html, head, body e etc), se não a página que ele criou não funcionará. O usuário téra consciencia disso.

Um detalhe que esqueci... teria como inserir um alerta para quando o usuário definir o nome do arquivo html, de um arquivo que já exista no servidor? Afinal, não tem como o usuario ter dois arquivos de mesmo nome no mesmo diretório...

A faca tá na sua mão... :D

#6 Tonini

Tonini

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino

Posted 13/08/2009, 10:21

Olá amigo!

Código do formulário:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Adicionar p&aacute;gina no servidor</title></head><body><form name="generator" method="post" action="acao.php">  <label>Defina o nome do arquivo html:  <input name="nome_arquivo" type="text" id="nome_arquivo" />  </label>  <br />  <label>Insira o código fonte:  <textarea name="codigo_do_arquivo" id="codigo_do_arquivo"></textarea>  </label>  <br /><input name="criar" type="submit" value="Criar P&aacute;gina" /></form></body></html>
Eu só modifiquei o type do seu botão.

Código do acao.php:
<?PHP	//recebe variaveis	$nome = $_POST["nome_arquivo"];	$codigo = $_POST["codigo_do_arquivo"];		//monta diretorio, nome e extensao do arquivo	$dir_arq = $nome.'.html';	//verifica se o arquivo já existe!	if (file_exists($dir_arq)) {	    echo "O arquivo \"$nome.html\" já existe.";	} else {		// cria o arquivo		$arq = fopen("$dir_arq", "x+");		//escreve no arquivo		if(fwrite($arq,$codigo)){			echo "Arquivo criado com sucesso!";		} else {			echo "erro ao criar o arquivo";		}	}	?>
Deixei ele comentado para você entender.

Bem, basicamente é isso!
Mas e acho interessante, seguindo a dica do Paulo André de já montar o código html e inserir somente o conteúdo. Acho mais seguro.

Qualquer dúvida é só perguntar, que todo mundo ajuda ;-)

Edição feita por: Tonini, 13/08/2009, 10:22.

CalvinBall.
Any player may declare a new rule at any point in the game.
The player may do this audibly or silently...

#7 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 13/08/2009, 10:39

Funcionou perfeitamente!

Muito bom, valeu mesmo a todos!

Mas só para evitar futuros problemas, como seria então se eu definisse o código html, e o usuário inserisse somente o conteúdo?

#8 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 13/08/2009, 10:48

Algo mais ou menos assim:

<?php

$codigo = $_POST['codigo_do_arquivo'];

$arquivo = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>Untitled Document</title>
</head>

<body>
<!-- Conteúdo do usuário -->
$codigo
</body>
</html>";

?>

Ou seja, a variável $arquivo é um modelo da página, e $codigo é o que o usuário vai inserir neste modelo.

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#9 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 13/08/2009, 10:54

Humm... mas como eu colocaria para ele escrever isso no novo html criado?

#10 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 13/08/2009, 11:01

É a mesma coisa, só utilizar a variável $arquivo para escrever.

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#11 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 13/08/2009, 11:08

OK... valeu mesmo gente...

#12 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 15/08/2009, 14:29

Olá de novo pessoal...
hehe passado alguns dias, somente hj fui perceber. Apesar de ter dito que o arquivo php funcionava perfeitamente, na verdade me enganei. Vejam só.
Na parte de criar o arquivo html no servidor, não tem erro. Agora coloquei esse codigo fonte na segunda caixa de texto:

[codebox]<html>

<head>
<meta http-equiv="Content-Language" content="pt-br">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>PÁGINA EM CONSTRUÇÃO</title>
</head>

<body>

<p align="center"><b><font size="6" color="#FF0000">PÁGINA EM CONSTRUÇÃO </font></b></p>
<p align="center"><img border="0" src="const15.gif" width="100" height="113"></p>

</body>

</html>[/codebox]

e esse código sai assim no novo html criado:

[codebox]<html>

<head>
<meta http-equiv=\"Content-Language\" content=\"pt-br\">
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">
<title>PÁGINA EM CONSTRUÇÃO</title>
</head>

<body>

<p align=\"center\"><b><font size=\"6\" color=\"#FF0000\">PÁGINA EM CONSTRUÇÃO </font></b></p>
<p align=\"center\"><img border=\"0\" src=\"const15.gif\" width=\"100\" height=\"113\"></p>

</body>

</html>[/codebox]

A diferença é que o arquivo php está colocando barras entre os termos que estão em aspas.

[codebox]<p align="center">[/codebox]
[codebox]<p align=\"center\">[/codebox]

Assim, o código é exibido incorretamente no novo html criado.
Vcs poderiam verificar como corrigir isso?

#13 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 17/08/2009, 09:23

Ao escrever, utilize na string a função stripslashes().

[]'s (y)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#14 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 17/08/2009, 09:33

blz cara, mas lembrando que não sei como se usa as funções em php :(
ainda necessito de ajuda...

#15 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 17/08/2009, 09:40

É só ler na página do manual. ;)

Esta sua string que possui os escapes nas aspas, utilize-a assim:

$nova_string = stripslashes($string);

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq