formulário em php dizem eles num livro de php5.3 que é simples...

Iniciado por ismaelbonifacio, 19 de Abril de 2018, 14:43

tópico anterior - próximo tópico

ismaelbonifacio

Viva! È simples mas não corre. Neste formulário abre para responder às perguntas, mas quando submeto o formulário ele não processa no servidor e dá um erro www.meu site.com/<?php echo $PHP_SELF; ?>

outra coisa coloquei o formulario php numa página gravada em htm será que é disso? tenho de criar 2 páginas htm? Uma de mostrar formulário e outra página htm distinta com a function processa_furmulario?

Quem me souber ajudar agradecia

fica aqui o que fiz

<?php
function mostrar_formulario()
{
global $PHP_SELF;
?>
<form action="<?php echo $PHP_SELF; ?>" method=POST>
Nome:<input type=text name="nome"><br>
Email:<input type=text name=email"><br>
Como conheceu esta morada?<br>
<input type=radio name="procura" value="Busca por acaso">Busca por acaso<br>
<input type=radio name="procura" value="Contacto de amigo">Contacto de amigo<br>
<input type=radio name="procura" value="Procura orientada">Procura orientada<br>
<input type=radio name="procura" value="Conheço há muito tempo">Conheço há muito tempo<br>
<br>
Quantas vezes visita o Servidor profismael?
<input type=radio name="linguagem" value="1ª vez por semana">1ª vez por semana<br>
<input type=radio name="linguagem" value="2 vezes por semana">2 vezes por semana<br>
<input type=radio name="linguagem" value="1 vez por mês">1 vez por mês<br>
<br>
Gosta de ver o seu filho nos sites da nossa escola?
<input type=radio name="filho" value="Sim">Sim<br>
<input type=radio name="filho" value="Não">Não<br>
<br>
<input type=submit value="Submeter Dados">
</form>
<?php
}
?>
<?php
function processa_formulario () {
global $nome;
global $email;
global $procura;
global $linguagem;
global $filho;
printf(" O utilizador %s cujo o endereço de email é %s, procura a internet %s e em relação ao filho %s para fotos na net", $_POST [`name´], $_POST [`email´], $_POST[`procura´], $_POST [`filho´]);
}
?>
<?php
if (empty ($_POST [nome])) }
mostrar_formulario ();
} else{
processa_formulario
}
?>

zekkerj

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

agente100gelo

Página em PHP devem ter extensão .php mesmo que uma parte seja em HTML.

No caso, acredito que é uma página PHP só que ao mesmo tempo exige o formulário ou processa, dependendo dos dados.
Advogado e analista de sistema cearense.
Twitter: @glaydson

ismaelbonifacio

Conforme menciono em cima dá um erro ao carregar no "enviar"...abre o browser com esta linha de comandos  dá um erro www.meu site.com/<?php echo $PHP_SELF; ?>
ficando uma página em branco.

agente100gelo

O arquivo é .php ou .html?

O PHP está configurado no servidor?
Advogado e analista de sistema cearense.
Twitter: @glaydson

ismaelbonifacio

Pois eu também acho que o problema está no formulário e no processa.  Vamos lá haver o formulário do php, numa página em html ficaria assim:
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>

<body>

<p><!--webbot bot="HTMLMarkup" startspan --><?php
function mostrar_formulario()
{
global $PHP_SELF;
?>
<form action="<?php echo $PHP_SELF; ?>" method=POST>
Nome:<input type=text name="nome"><br>
Email:<input type=text name=email"><br>
Como conheceu esta morada?<br>
<input type=radio name="procura" value="Busca por acaso">Busca por acaso<br>
<input type=radio name="procura" value="Contacto de amigo">Contacto de amigo<br>
<input type=radio name="procura" value="Procura orientada">Procura orientada<br>
<input type=radio name="procura" value="Conheço há muito tempo">Conheço há muito tempo<br>
<br>
Quantas vezes visita o Servidor profismael?
<input type=radio name="linguagem" value="1ª vez por semana">1ª vez por semana<br>
<input type=radio name="linguagem" value="2 vezes por semana">2 vezes por semana<br>
<input type=radio name="linguagem" value="1 vez por mês">1 vez por mês<br>
<br>
Gosta de ver o seu filho nos sites da nossa escola?
<input type=radio name="filho" value="Sim">Sim<br>
<input type=radio name="filho" value="Não">Não<br>
<br>
<input type=submit value="Submeter Dados">
</form>
<?php
}
?><!--webbot bot="HTMLMarkup" endspan --></p>

</body>

</html>

E agora meto o processa em extensão php no diretório do site? Mas não tenho de lhe dar um encaminhameneto? uma ligação de ação? Isto é do género, colocar no inicio do formulário anterior em html isto: <form method="post" action="processa.php" enctype="multipart/form-data"> e então dar o nome ao ficheiro em baixo de "processa.php". Peço desculpa, mas estou a dar os primeiros passos nesta área e gostaria de perceber um pouco como este tipo de formulários funciona.

<?php
function processa_formulario () {
global $nome;
global $email;
global $linguagem
global $filho
printf(" O utilizador %s cujo o endereço de email é %s, procura a internet %s e em relação ao filho %s para fotos na net", $_POST [`name´], $_POST [`email´], $_POST[`procura´], $_POST [`filho´]);
}
?>
<?php
if (empty ($_POST [nome])) }
mostrar_formulario ();
} else{
processa_formulario
}
?>




ismaelbonifacio

Sim tenho o lamp instalado e a versão  PHP Version 5.6.35-1+ubuntu14.04.1+deb.sury.org+1  e está a rolar.

ismaelbonifacio

Com as experiências que fiz o que direciona o formulário para o processa é a linha :


global $PHP_SELF;
?>
<form action="<?php echo $PHP_SELF; ?>" method=POST>

é uma variavel que processa no próprio documento não abre outro. Se eu no "form action" colocar um ficheiro com extensão php ou htm, html ele vai abrir no browser, mas fica em branco.
Eu quero que seja seja no mesmo documento. Neste momento ele abre um doc no browser com a linha de comando  http://omeusite/<?php echo $PHP_SELF; ?>
ou seja ,não processa.

Eu já tentei no form action colocar a segunda parte o processa ficheiro php, exemplo : <form action= " processa.php" Nao resulta . Abre no browser o ficheiro processa .php, mas aparece página branco e por aquilo que li na net esta variavel  "global $PHP_SELF" é para processar no próprio  formulário lá dentro.

ismaelbonifacio

como coloco um jpg aqui no forum? Posso colocar um link do meu site não, pois não?  Onde posso colocar uma foto e copiar o link para aqui para verem um texto sobre  esta variável?

ismaelbonifacio

O meu ficheiro em etc/php5.6/php.in não tem o register_globals On. Estive a ler paar este tipo de scrits  devia aparecere ou on ou off e nem sequer aparece!? Como instalo?


ismaelbonifacio

#11
<form action= "" . Por aquilo que estou a ler é este problema...se eu inserir um ponto dentro "." vai para a página central do servidor se inserir um "#" abre a mesma página mas o formulário continua a não processar um imprimir na mesma página.  Se inserir só <form> como refere este artigo que li ao submeter fica em branco e aparece "mehtod post "visivel em cima na abertura da página e o formulário em banco para preencher de novo. Como faço para a parte de baixo ser processa e mostrar no mesma página do formulário?

o atributo action

Este atributo define para onde os dados são enviados. Seu valor deve ser um URL válido. Se esse atributo não for fornecido, os dados serão enviados para o URL da página que contém o formulário.
Exemplos

Neste exemplo, os dados são enviados para http://foo.com:

<form action="http://foo.com">

Aqui, os dados são enviados para o mesmo servidor que hospeda a página do formulário, mas para um URL diferente no servidor:

<form action="/somewhere_else">

Quando especificado sem atributos, como abaixo, o atributo <form>   faz com que os dados sejam enviados para a página que inclui o formulário:

<form>

Muitas páginas mais antigas usam a seguinte notação para indicar que os dados devem ser enviados para a mesma página que contém o formulário; Isso era necessário porque até HTML5, o atributo action era obrigatório. Isso não é mais necessário.

<form action="#">

Nota: É possível especificar um URL que use o protocolo HTTPS (HTTP seguro). Quando você fizer isso, os dados são criptografados junto com o resto da solicitação, mesmo se o formulário em si é hospedado em uma página insegura acessada usando HTTP. Por outro lado, se o formulário estiver hospedado na página segura, mas você especificar um URL HTTP inseguro com o atributo action, todos os navegadores exibirão um aviso de segurança para o usuário cada vez que Tente enviar dados porque os dados não serão criptografados.

ismaelbonifacio

Começo a pensar que o  amigo agente 100 tem razão o meu php deve estar a funcionar errado, pois neste formuláro não funcionou e no php.ini mudei  smtp, sendmail_from e sendmail_path...configurei reiniciei o php e ele não envia o email. è o script que se encontra em baixo.

<html>
<title>PHP-MySQL</title></head>
<body> <b>Envio de email</b>
<?php
print "para".$_REQUEST('email']." ---  em";
$dat=date("d :m :y");
print " $dat";
print "<form method=post action=".$_SERVER[`PATHINFO´]. ">";
?>
De:<input type=text name=remete size=30 value="<?php echo $_REQUEST ['nome']; ?>"><p>
Assunto:<input type=text name=assunto size=30><p>
Meu e-mail:<input type=text name=emailx size=30><p>
Mensagem<textarea name=mensagem cols=30 rows=3></textarea><palign=center>
<input type=submit value="-  enviar   -" name=enviar><p>
</form>
<?php
if ($_REQUEST['enviar']]){
mail ($_REQUEST['email'], $_REQUEST['assunto'],$_REQUEST['mensagem']."\n Saudações cordiais de ".$_REQUEST['remete'],"From:
".$_REQUEST['emailx']);
$dat1=date ("H : m: s");
print "Obrigado este e-mail foi enviado para ".$_REQUEST['email']." ás $dat1 do dia $dat";
}
//include ('menu1A.inc');
include  ('menu1.inc');
?>
</body>
</html>

agente100gelo

Faça um arquivo com o seguinte conteúdo como info.php:

<?phpphpinfo();?>


Tente acessar em http://seusite/info.php

Veja se funciona.
Advogado e analista de sistema cearense.
Twitter: @glaydson

ismaelbonifacio

Já sei qual é o problema. Na versão do php5.6 a variavel "register_globals não existe, deixou de ser usada. Na net dão uma solução que é inserir no ficheiro .htaccess que está no diretório etc o seguinte:
php_flag register_globals on
php_flag magic_quotes_gpc on

Mas o ficheiro .htaccess não aparece. Não sei o que aconteceu já fiz buscas de procura e para ver ficheiros ocultos e este ficheiro não existe.