Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos.
Sou novo no PHP e estou tentando pegar dados de um formulário PHP para quando enviar as informações ele salve no servidor como uma página.html.
Já consegui fazer o formulário (index.html), já criei o formail.php que recebe as variáveis e até aí tudo está funcionando.
O que preciso é que quando pegar os dados através desse formail.php ele pega os dados, mescla com os dados do formulário e gera uma página.html e salva no servidor. Informo que tudo isso já estou conseguindo fazer. O formail.php já está pegando os dados e já cria esse arquivo no servidor por fclose.
Minha dificuldade é que não está está enviando as variáveis para dentro desse arquivo. Gostaria também de criar um campo no formulário para que quando digitar o nome ele salva no servidor com o nome que digitei no campo. Ex: nome-que-digitei.html
ESPERO QUE TENHA ME EXPRESSADO BEM. Vou colocar o formail.php abaixo e vou marcar em vermelho a minha dúvida no código e comentar.
Na sequência vou colocar o formulário HTML, pois gostaria de colocar o campo do formulário para eu poder digitar o nome da página.html que vai gerar no servidor.
LÁ VAI:
<?php require "config.ini"; ?>
<?php
ini_set ("SMTP","smtp.eb.mil.br");
$nome=$_POST["nome"];
$title=$_POST["title"];
$mensagemHTML = "<html>
<head>
</head> <title> **Quero pegar váriáveis do formulário mas no arquivo que salva no servidor não chega a variável. Já tentei colocar de tudo aqui..rs** </title>
<body>
Quero pegar váriáveis do formulário mas no arquivo que salva no servidor não chega a variável. Já tentei colocar de tudo aqui..rs
</body>
<html>
";
// Verifica se O Campo nome tá preenchido
if (empty($nome)){
// HTML que aparecera o ERRO
echo "<html><head><title>Ocorreu Um ERRO !!!</title></head>";
echo "<body bgcolor=\"#ffffff\">
</body></html>";
}
else{
// Comfirma o Envio Do E-mail
if ($certo== "1")
{
// Função de envio Do E-mail
//mail ("suporte@powerwebsolution.com.br ","nome","string message", "string additional_headers");
mail ("$emaildest","$assunto","Nome:$nome\n Email:$email\n Mensagem:$mensagem\n IP:$REMOTE_ADDR\n\n ...::: Coloque seu nome aqui ou o nome da empresa ® :::...","From:$nome<$email>");
}
// HTML do redirecionameto e se não redirecionar aparece um link
echo "<html><head>";
}
?>
</div>
<script language="JavaScript" type="text/JavaScript">function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);</script>
<p>
<?
$txt_nome = $_POST['txt_nome']; //'txt_nome'$conteudo = "$mensagemHTML";
fwrite($handle, $mensagemHTML); // aqui são as variáveis que gostaria de enviar para o arquivo que já chega no servidor, mas não consigo enviar as variáveis. Essa variável está lá em cima no código - "SmensagemHTML" Se conseguir funfar as variáveis lá em cima, acredito que aqui já vai funcionar, pois o arquivo já chega no servidor certinho.
{
echo "Arquivo Salvo corretamente. <br/>";
echo "<br/>Clique <a href='index.php'>aqui</a> e volte a pagina de edição<p></p>";
}
fclose($handle);
?>
VOU COLOCAR O FORMULÁRIO ABAIXO AGORA (index.html)
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<form action="formail.php">
<p align="center"><font face="Arial Narrow">
<input type="hidden" name="emaildest" value="meuemail@servidor.com.br">
<font size="+3">FORMULÁRIO</font></font></p>
<p align="center"> </p>
<center><table width="635" bgcolor="#000000" border="0" align="center" cellspacing="0" cellpadding="1" height="270">
<tr>
<td width="633" height="268">
<div align="center">
<center>
<table width="344" bgcolor="#C4C4AA" border="1" cellspacing="0" cellpadding="3" style="border-collapse: collapse" bordercolor="#111111" height="271">
<tr>
<td width="93" height="22"><div align="left"><font face="Tahoma" size="2">Nome</font></div></td>
<td width="239" height="22"> <div align="left"><font face="Arial Narrow">
<input type="text" size="70" name="nome" value="">
</font></div></td>
</tr>
<tr>
<td width="93" height="22"><div align="left"><font face="Tahoma" size="2">Titulo</font></div></td>
<td width="239" height="22"> <div align="left">
<p><font face="Arial Narrow">
<input type="text" size="70" name="title" value="">
</font></p>
</div></td>
</tr>
<tr>
<td colspan="2" align="center" width="331" height="71">
<div align="left"><font face="Arial Narrow">
<input type="submit" value=" Enviar " style="float: left; font-family: Tahoma">
</font><font face="Tahoma">
<input type="reset" value=" Limpar " style="float: left">
</font><font face="Arial Narrow">
</font></div></td>
</tr>
</table>
</center>
</div>
</td>
</tr>
</table>
</center>
</form>
<p align="center">
</body>
</html>
Caso alguém possa me dar uma ajuda fico muito grato. Aguardo um retorno. Muito Obrigado antecipadamente.
Att.
Marco Alves
Então, já coloquei o:
<form action="formail.php" method="post"> A parte :
<?php require "config.ini"; ?>
<?php
ini_set ("SMTP","smtp.eb.mil.br");
$nome=$_POST["nome"];
$title=$_POST["title"];
Já tenho declarado no script.
De qualquer forma coloquei de novo e não funcionou. Deu erro :( .
Onde será que estou errando?
obrigado pela ajuda.
Att.
Ah detalhe essa parte que você passou eu já tenho colocado no formail.php (código acima). Sempre que coloco uma tag PHP dá erro. :(
$mensagemHTML = "<html>
<head>
</head> <title> ".$title." </title>
<body> ".$nome."
</body>
<html>";Legal agora funfou essa primeira parte. Mas como faço para na segunda parte eu escolher o nome do arquivo pelo formulário em vez de vir "teste.html" como está lá no código do formail.php?
$handle = fopen ( $_POST['nome'], "w");
ai vc digita do jeito que vc quer: "arquivo2.html"
Cara. Muito Obrigado mesmo. Willian Bruno.
Só que agora tenho outro problema :( .
Na seguinte parte do formail.php, quando coloco uma meta tag está dando erro.
Vou mostrar abaixo e comentar a parte:
$mensagemHTML = " <html>
<head> <meta name="resource-type" content="document"/> **// se inserir essa linha dá erro. Porque?**
<title>".$nome.",: ".$title.",".$nome."</title><br>
</head>
<body>".$nome."</body>
<html>";qndo "der erro", vc tem q dizer QUAL ERRO. :lol:
Esse ai foi fácil de ver, é o problema das aspas:
$mensagemHTML = ' <html>
<head> <meta name="resource-type" content="document"/>
<title>'.$nome.',: '.$title.','.$nome.'</title><br>
</head>
<body>'.$nome.'</body>
<html>';entendeu ?Aêeeeeeeee!!!! Valeu mesmo Willian Bruno!! Funcionou!! Agora se possível só mais uma informação..rs Na parte:
<?
$txt_nome = $_POST['txt_nome']; //'txt_nome'
$handle = fopen ( $_POST['pagina'], "w");
$conteudo = "$mensagemHTML";
fwrite($handle, $mensagemHTML);echo "Arquivo Salvo corretamente. <br/>";
echo "<br/>Clique <a href='index.php'>aqui</a> e volte a pagina de edição<p></p>";
}
fclose($handle);
?>
Consigo definir um local onde será salvo no servidor? Atualmente está na pasta raiz onde coloco o arquivo. Obrigado, por enquanto :)
$handle = fopen ( 'pasta/'.$_POST['pagina'], "w");
Legal...e se eu quiser definir no campo do formulário o nome da pasta eu consigo?
Poxa amigo..
ai vc já tá ficando preguiçoso hein?!
Essa vc conseguiria fazer se tentasse..
$handle = fopen ( $_POST['pasta'].'/'.$_POST['pagina'], "w");
Desculpe amigo William Bruno. É que estou começando a programar e para mim é tudo muito novo. Vou tentar antes de enviar as perguntas.
Agradeço muito a ajuda.
Esse formulário está gerando 1 página.
Eu conseguiria fazer gerar mais de 1 página e definir o conteúdo dessa nova página pelo formulário?
Obrigado, mais uma vez :) .
Vou reformular minha pergunta acima.
Agora consigo gerar o conteúdo no servidor com as pasta desejada e nome desejado.
É possível fazer um campo de "chek box" no formulário onde haverá opções de nomes para a página que vai para o servidor e no formail.php eu definir quais as variáveis e conteúdo que vai em cada página para cada check box (página) escolhido?
Isto é, criar mais de uma página eu escolhendo o nome e podendo definir o que vai conter dentro de cada página.
Como poderia definir isso no código abaixo?
<?
$txt_nome = $_POST['txt_nome']; //'txt_nome'
$handle = fopen ( $_POST['pagina'], "w");
$conteudo = "$mensagemHTML";
fwrite($handle, $mensagemHTML);echo "Arquivo Salvo corretamente. <br/>";
echo "<br/>Clique <a href='index.php'>aqui</a> e volte a pagina de edição<p></p>";
}
fclose($handle);
?>
Obrigado pela ajuda até agora pessoal....Agradeço mesmo. Se puderem me ajudar mais nessa fico grato :) .
Tentei fazer de um jeito aqui mas não deu certo :( . Fiz da seguinte forma:
<p>
<?
$txt_nome = $_POST['txt_nome']; //'txt_nome'
$handle = fopen ( $_POST['pagina'], "w");
$conteudo = "$mensagemHTML";
fwrite($handle, $mensagemHTML);
{
echo "Arquivo Salvo corretamente. <br/>";
echo "<br/>Clique <a href='index.php'>aqui</a> e volte a pagina de edição<p></p>";
}
fclose($handle);
?>
</p>
<?
$txt_nome = $_POST['txt_nome']; //'txt_nome'
$handle = fopen ( $_POST['pagina'], "w");
$conteudo = "$mensagemHTML2";
fwrite($handle, $mensagemHTML2);echo "Arquivo Salvo corretamente. <br/>";
echo "<br/>Clique <a href='index.php'>aqui</a> e volte a pagina de edição<p></p>";
}
fclose($handle);
?>
</p>
Dessa forma não deu erro, porém só recebi uma página. Alguém poderia me ajudar a solucionar isso, por favor? Obrigado. :)
Primeiramente coloca no seu form o método de envio dos dados...
<form action="formail.php" method="post">
Na sua página onde vc cria o html basta apenas vc escrever as variaveis.