PHP: passagem de variável

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: passagem de variável

Mensagem por cjp »

Pessoal, estou com problema em um PHP, ao tentar passar uma variável, com método POST, o segundo PHP não está recebendo a variável.

Já fiz isso em vários outros PHPs, funcionando. Só neste que não está funcionando.

Alguém poderia, por favor, me dizer o que estou fazendo de errado.

O primeiro PHP está assim:

Código: Selecionar todos

 echo '<form action="pontos.php"';
 echo "width='69%' style='height:240px;'>";
 echo "<br>";
 echo "<br>";
 echo "<br>";
 echo "<input type='hidden' name='nome' value=".$us.">";
 echo "<input size='45' style='font-size:180px' type='submit' id='Voltar' value='Voltar'>";
 echo "</form>";
 echo "<br>";
 echo "<br>";

Já verifiquei a variável $us está com o valor correto antes desse trecho.

O segundo PHP está assim:

Código: Selecionar todos

$us= $_POST['nome'];

echo "<br>";
echo $us;
echo "<br>";

Estranhamente, $us aqui está em branco.

Alguém pode me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

PHP: passagem de variável

Mensagem por ANDRIL »

Já tentou especificar o método do form.

Código: Selecionar todos

<form action="pontos.php" method="post" ';
Att.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: passagem de variável

Mensagem por cjp »

De fato, o problema era esse. Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: passagem de variável

Mensagem por cjp »

Pessoal,
Estou tendo novo problema com passagem de variável em PHP (este parece ser meu eterno problema em PHP). Podem me ajudar?
O problema é o seguinte:
Nesta página eu passo uma variável $qtd com o valor texto "+1":

Código: Selecionar todos

$qtd="+1";

$cod="xxx";

 
 echo "<table width='10%' border='1' cellpadding='1' cellspacing='1'>";
 
 echo "<tr>";
 
 echo "<td>";
 echo "<form action='prior8.php' method='post'>";
 echo "<width:30%>";
 echo "<height:100vh>";
 echo "<input type='hidden' name='cod' value=".$cod.">";
 echo "<input type='hidden' name='qtd' value=".$qtd.">";
 echo "<font size='11'>";
 echo "<input style='font-size:80px' name='submit' value='Xx +1' type='submit'>";
 echo "</form>";
 echo "</td>";
Na prior8.php, recebo assim:

Código: Selecionar todos

	$qtd= $_POST['qtd'];
	$qual= $_POST['cod'];
Até aqui tudo funcionando normalmente.

Agora surgiu a necessidade de refazer esta página, passando a variável de forma diferente:

Código: Selecionar todos

$qtd="+1";
$cod="xxx";
echo '<a href="priornovo2.php?&qtd='.$qtd.'&cod='.$cod.'" class="btn btn-primary btn-lg col-5 col-xs-5 col-sm-5 col-md-5 col-lg-5 col-xl-5 align-self-center d-flex flex-column justify-content-center align-items-center line-6">XX</a>';
Na priornovo2.php, recebo assim:

Código: Selecionar todos

	$qtd= $_GET['qtd'];
	$qual= $_GET['cod'];
Estranhamente, ao invés de $qtd aqui ser "+1", está apenas como "1".

Preciso do "+" aí, pois em outros pontos vou passar outros valores (ex: -1, -5, -10 etc).

Alguém poderia me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

PHP: passagem de variável

Mensagem por ANDRIL »

Olá, isso acontece por que o + é um caracter reservado do navegador veja: ! * ' ( ) ; : @ & = + $ , / ? % # [ ]
Para utilizá-lo terá que escapar ele
pagina.php?qtd='+'1 &cod=152 &produto=BOLA
Mais informações
https://developers.google.com/maps/url- ... g?hl=pt-br
Até+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: passagem de variável

Mensagem por cjp »

Entendi o que vc disse, mas ainda não consegui fazer correto.
Acresci aspas simples (') antes e depois do +. Ficou assim:

Código: Selecionar todos

$qtd="'+'1";
	$cod="xxx";
	echo '<a href="priornovo2.php?&qtd='.$qtd.'&cod='.$cod.'" class="btn btn-primary btn-lg col-5 col-xs-5 col-sm-5 col-md-5 col-lg-5 col-xl-5 align-self-center d-flex flex-column justify-content-center align-items-center line-6">XX</a>';
Mas o priornovo2.php está recebendo a variável como ' 1'; não como +1 como esperado.

Imagino que o problema ocorra porque o echo já use aspas simples e aspas duplas.

Mas não sei como resolver isto.

Pode me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

PHP: passagem de variável

Mensagem por ANDRIL »

Pela url não pode passar o sinal de adição como voce quer. Para que seja possível voce deve transformá-lo em HEXADECIMAL. Se voce utilizasse um form poderia usar o +1.

Na url a opção é
$qtd="%2B1";
$cod="xxx";
echo '<a href="priornovo2.php?&qtd='.$qtd.'&cod='.$cod.'" class="btn btn-primary btn-lg col-5 col-xs-5 col-sm-5 col-md-5 col-lg-5 col-xl-5 align-self-center d-flex flex-column justify-content-center align-items-center line-6">XX</a>';
Se fosse um form seria:
<form method="get" enctype="application/x-www-form-urlencoded">
<input name="qtd" id="qtd" value="+1"/>
...
<button type="submit">Enviar</button>
</form>
De qualquer forma, para usar de forma literal, seria mais fácil analisar o conteúdo da var no php para saber a operação que deseja fazer.

Código: Selecionar todos

if ($_GET['qtd']>0){
$qtd='+'.$_GET['qtd'];
}
Até+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: passagem de variável

Mensagem por cjp »

Ótima ideia.
Muito obrigado.
Inacio de Carvalho Neto
Responder