Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda com $_POST


Elvis Pereira

Pergunta

Olá pessoal, eu sou iniciante em PHP e estou com problemas para usar o $_POST em um código, o problema é o seguinte:

Eu fiz esse Gerador de assinaturas para a comunidade brasileira de um jogo, ele é uma alternativa para esse outro que é mantido por um americano (o design de ambos é meu, não "roubei" a imagem). Eu consegui fazer tudo menos uma coisa, usar múltiplas imagens como no segundo link, o desenvolvedor do primeiro me deu um "norte" mas não explicou exatamente como fazer, segundo ele eu crio um formulário mais ou menos assim:

<form method="GET" action = "gerarsign.php">
		Insira seu ID:<br>
		<input type="text" name="id"><br>
		<br>
		<button type="submit" name="submit" value="sing3.png">
        <img src="sign.php?id=4534756">
</button><br>
        <button type="submit" name="submit" value="sing4.png">
        <img src="sign.php?id=4534756">
</button>
	</form>

E depois no arquivo que eu uso para criar a assinatura eu carrego o valor selecionado, que vai carregar uma imagem de funco diferente. Só que:

1. Nunca usei $_POST e não sei como carregar o valor do formulário com ele;

2. Não tenho ideia de onde entraria o código, a parte responsável por carregar a imagem de fundo atualmente é essa:

$img = imagecreatefrompng("images/sign4.png");

Eu pensei em usar algo como:

if($_POST['sign'] == 1){
$img = imagecreatefrompng("images/sing3.png");
}elseif($_POST['sign'] == 2){
$img = imagecreatefrompng("images/sing4.png");
}

Mas não funcionou, pensei que talvez tenha algo haver com o arquivo gerarsing.php que atualmente esta assim:

<center><b>Insira o c&oacute;digo abaixo na sua assinatura do f&oacute;rum:</b><br>
<?php
ob_start();
$id=$_GET['id'];

require("eAPI.php");
$cid = get_info($_GET['id']);
if($cid['id'] != $id){
	header('Location: ./index.php?erro=1');
}


?>

<TEXTAREA COLS=40 ROWS=5 NAME="comentario">[url=http://partidomilitar.com/sing][img]http://partidomilitar.com/sing/sign.php?id=<?php echo $id; ?>[/img][/url]</TEXTAREA>


<br><br><img src="http://partidomilitar.com/sing/sign.php?id=<?php echo $id; ?>">
</center>

Mas já não sei mais qual a maneira correta de se fazer isso, alguém pode me dar uma luz por favor :) ?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Para o envio você pode usar esse código.

<!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=utf-8" />
    <title>Assinaturas</title>
</head>
<body>
    <center>
        <form method="post" action = "gerarsign.php">
            Insira seu ID:<br>
            <input type="text" name="id"><br>
            <br>
            <div align="center">
                <br>
                <button type="submit" name="imagem" value="base.png">
                    <img src="imagens/base.png">
                </button>
                <br>
                <button type="submit" name="imagem" value="sign4.png">
                    <img src="imagens/sign4.png">
                </button>
                <br>
            </div>
        </form>
    </center>
</body>
</html> 

Um formulário html que envia o campo id e o nome da imagem para ser gerada a assinatura, via POST. A própria imagem é o botão de enviar.

Na segunda parte não posso te dizer muito pois você não passou o código do arquivo eAPI.php, mas....

1º - Para usar qualquer comando header(); ele deve ser o primeiro comando a ESCREVER PARA O APACHE, trocando em miúdos, toda vez que você usa um comando que escreve na tela (echo, print, var_dump ....) ou escreve algum texto fora das tags HTML, que é o seu caso, o php envia esse texto para o Apache ou outro servidor http que esteja sendo usado, isso faz com que uma série de comandos não funcione, entre eles o header, logo o seu código deveria ser mais parecido com isso...

<?php
ob_start();
$id=$_GET['id'];
require("eAPI.php");
$cid = get_info($_GET['id']);
if($cid['id'] != $id){
    header('Location: ./index.php?erro=1');
}
?>
<!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=utf-8" />
    <title>Assinaturas</title>
</head>
<body>
    <center>
        <b>Insira o c&oacute;digo abaixo na sua assinatura do f&oacute;rum:</b><br>
        <TEXTAREA COLS=40 ROWS=5 NAME="comentario">
            [url=http://partidomilitar.com/sing][img]http://partidomilitar.com/sing/sign.php?id=<?php echo $id; ?>[/img][/url]
        </TEXTAREA>
        <br/>
        <img src="http://partidomilitar.com/sing/sign.php?id=<?php echo $id; ?>">
    </center>
</body>
</html>

Existem sim comandos antes do header();, mas o primeiro que ESCREVE para o Apache é ele, dessa forma funciona.

2º - Com relação à receber a informação do formulário você vai ter que usar duas variáveis $_POST['id'], $_POST['imagem'].

Espero ter ajudado.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
O usuário insere um número no campo id e escolhe a imagem, mas digamos que você quer saber primeiro se aquele id é de um usuário real e depois quais são so dados desse usuário, digamos também que você quer ter certeza se o nome da imagem enviada pelo formulário realmente existe.
Logo vamos ter que pegar o id digitado e fazer uma consulta no banco de dados.
Depois verificar a existência da imagem.
O arquivo gerarsign.php ficaria mais ou menos assim:
<?php
// função resumida da que eu uso para fazer consultas ela retorna false, caso não hajam registros para o select, ou uma matriz bidimensional dos resultados da consulta no seguinte formato
// EX. de SQL "SELECT id, nome, idade, sexo FROM alunos"
// EX de Retorno
// array(
//	0 => array(
//		'id' => 1,
//		'nome' => 'Leonardo',
//		'idade' => 22,
//		'sexo' => 'masculino'
//	),
//	1 => array(
//		'id' => 2,
//		'nome' => 'Ana Maria',
//		'idade' => 35,
//		'sexo' => 'feminino'
//	)
// );
function consulta($query){
	$nome_banco = 'banco';
	$senha_banco = 'senha';
	$usuario_banco = 'usuario';
	$local_banco = 'localhost';
	$conexao = mysql_connect($local_banco, $usuario_banco, $senha_banco);
	if(!$conexao){die('Não foi possível conectar: '.mysql_error());}
	$banco = mysql_select_db ($nome_banco, $conexao);
	if(!$banco){die('Não foi possível conectar no banco: '.mysql_error());}
	$resultado = mysql_query($query, $conexao);
	if(!$resultado){die('<br />Não foi possível fazer a consulta: '.mysql_error().'<br />'.$query);}
	if (mysql_num_rows($resultado)) {
		$i=0;
		while($result = mysql_fetch_assoc($resultado)) {
			foreach ($result as $key=>$valor){$var[$i][$key] = $valor;}
			$i++;
		}
		return $var;
	} else {
		return false;
	}
	return;
}
// Consulta se existe um registro com o id digitado
$productsSite = consulta("select * from usuarios where id = {$_POST['id']}");
if ($productsSite) {
	// Verifica se a imagem mandada existe dentro da pasta images
	if (is_file("images/{$_POST['imagem']}")) {
		//Se tudo estiver OK
		?>
		<center>
			<b>Insira o c&oacute;digo abaixo na sua assinatura do f&oacute;rum:</b>
			<br>
			<TEXTAREA COLS=40 ROWS=5 NAME="comentario">
				[url=http://partidomilitar.com/sing][img]http://partidomilitar.com/sing/sign.php?id=<?php echo $id; ?>[/img][/url]
			</TEXTAREA>
			<br>
			<img src="http://partidomilitar.com/sing/sign.php?id=<?php echo $id; ?>">
		</center>
		<?php
	} else {
		// A imagem não existe
		header('Location: ./index.php?erro=1');
	}
} else {
	// O id digitado não existe
	header('Location: ./index.php?erro=1');
}
?>
Link para o comentário
Compartilhar em outros sites

  • 0

O usuário insere um número no campo id e escolhe a imagem, mas digamos que você quer saber primeiro se aquele id é de um usuário real e depois quais são so dados desse usuário, digamos também que você quer ter certeza se o nome da imagem enviada pelo formulário realmente existe.

Logo vamos ter que pegar o id digitado e fazer uma consulta no banco de dados.

Depois verificar a existência da imagem.

Mas não tem banco de dados, o arquivo eAPI não interfere porque ele apenas pega os dados do jogador como nome, level, força... E o usuário não vai enviar nenhuma imagem, eu que quero carregar uma imagem de fundo diferente de acordo com o que o usuário selecionar, no caso as que constam aqui:

if($_POST['sign'] == 1){
$img = imagecreatefrompng("images/sing3.png");
}elseif($_POST['sign'] == 2){
$img = imagecreatefrompng("images/sing4.png");
} 
Editado por Elvis Pereira
Link para o comentário
Compartilhar em outros sites

  • 0

Entendi, como eu não sabia exatamente o que você queria tentei imaginar um supositório qualquer.

Bom, mas deu pra captar a ideia da coisa?

Se não posta ai o arquivo eAPI.php, pra poder te dar algo mais prático, porque ele só vai conseguir pegar os dados do jogador se o id dele for passado da forma correta.

E seria interessante também o código que o jogador deve colar no fórum para fazer a assinatura.

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi, como eu não sabia exatamente o que você queria tentei imaginar um supositório qualquer.

Bom, mas deu pra captar a ideia da coisa?

Se não posta ai o arquivo eAPI.php, pra poder te dar algo mais prático, porque ele só vai conseguir pegar os dados do jogador se o id dele for passado da forma correta.

E seria interessante também o código que o jogador deve colar no fórum para fazer a assinatura.

Mas não é necessário uma consulta, a assinatura não vai ser gerada se o ID do jogador não existir. A minha unica duvida é com relação ao $_POST, qual a maneira correta de usa-lo para capturar o valor inserido no formulário ? Porque da maneira que eu tentei ele não funcionou, o eAPI.php não interfere em nada nesses arquivos e o código que o jogador coloca no fórum esta na ultima box do meu primeiro post, lá no final.

Link para o comentário
Compartilhar em outros sites

  • 0

A variável $_POST é uma matriz, que pode ser multidimensional, que recebe todos os dados enviados via post, por exemplo um formulário ou enviados por funções JavaScripts, sendo que os seus índices são os valores das propriedades names de cada campo do formulário, exemplo.

<input type="text" name="nome" />

<textarea id="caixa" name="mensagem"></textarea>

<input type="radio" name="sexo" value="masculino">
<input type="radio" name="sexo" value="feminino">

<input type="checkbox" name="interesses[]" value="amizades">
<input type="checkbox" name="interesses[]" value="empregos">

Cada um desses campos se tornará

<?php
$_POST['nome']

$_POST['mensagem']

//Como só podemos escolher um radio button ele só gerará uma variável contendo um texto
$_POST['sexo']

//No caso de um checkbox como podemos escolher várias opções ele se torna uma matriz bidimensional
$_POST['interesses'] = array('amizades', 'empregos')
?>

Fora isso não consigo imaginar a sua dúvida por que essas são variáveis como qualquer outras, você pode fazer qualquer operação com elas como faria com qualquer outra variável.

Assim como eu fiz no exemplo que você me pediu, eu simplesmente as utilizei, concatenando em um sql ou um nome de arquivo, agora se você quer outros exemplos, de a situação que você precisa, por que se não eu vou ficar inventando um monte de possibilidades, nenhuma vai ser a que você precisa, por que você não explica o que quer.

O que você já fez?

O que falta fazer?

Qual é o resultado final?

É uma conta?

É uma string?

De um exemplo da string.

É uma imagem?

Coletar dados?

A onde estão estes dados?

Como acessa-los?

Não da pra adivinhar, você tem que dar informações.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...