Jump to content
Nioshi

[Resolvido] $_post recebe variável nula do c#

Recommended Posts

Boa tarde, estou enfrentando um problema em meu código, eu tenho um código em c# que fica ouvindo a porta 12934, quando recebe requisição ele envia um post ao meu arquivo php, o problema está que o $_POST recebe valor nulo por algum motivo que ainda não descobri.

 

código no c#:

string URLreceber = "http://localhost/pweb/modulose";
string URLRetornoimg = "http://localhost/pweb/modulos";
string URLRetornocam = "http://localhost/pweb/moduloscaminho";

using (var cliente = new WebClient())
                {
                    NameValueCollection modulose = new NameValueCollection();
                    modulose["folha"] = folha;
                    modulose["informe"] = informe;
                    modulose["cartao"] = cartao;
                    Console.WriteLine(modulose["folha"]);
                    Console.ReadKey();

                    resultimg = cliente.UploadValues(URLRetornoimg, modulose);
                    retorno = Encoding.UTF8.GetString(resultimg);
                    Console.WriteLine(retorno);
                    Console.ReadKey();
                }

código em php:

$app->post('/modulos', function (Request $request) use ($app) {
	$modFolha = '';
	$modInforme = '';
	$modCartao = '';
		if(isset($_POST['folha'])){
			$modFolha = $_POST['folha'];	
		}
		if(isset($_POST['informe'])){
			$modFolha = $_POST['informe'];	
		}
		if(isset($_POST['cartao'])){
			$modFolha = $_POST['cartao'];	
		}

		if($modFolha == 'sim'){
			$modFolha = 'sim';
		}else{
			 $modFolha = 'nao';
		}
		if($modInforme == 'sim'){
			$modInforme = 'sim';
		}else{
			 $modInforme = 'nao';
		}
		if($modCartao == 'sim'){
			$modCartao = 'sim';
		}else{
			$modCartao = 'nao';
		}

	if($modFolha == 'sim'){
		$modulosImagem['folha'] = './images/holerite.png';
	}else{
		$modulosImagem['folha'] = './images/holeriteDesabilitado.png';
	}
	if($modInforme == 'sim'){
		$modulosImagem['informe'] = './images/informeVerde.png';
	}else{
		$modulosImagem['informe'] = './images/informeDesabilitado.png';
	}
	if($modCartao == 'sim'){
		$modulosImagem['cartao'] = './images/cartao.png';
	}else{
		$modulosImagem['cartao'] = './images/cartaoDesabilitado.png';
	}
	if(file_exists("../app/config/global.php")){
		return new Response(json_encode($modulosImagem), 201);
	}
	else{
		return new Response("Arquivo global não existe", 500);
	}
});

Código em .js

  // post para a rota que retorna os dados
  $http.post('./modulos', data, setting)
  .success(function (data, status, headers, setting){
    $scope.folha = angular.fromJson(data).folha;
	  $scope.informe = angular.fromJson(data).informe;
	  $scope.cartao = angular.fromJson(data).cartao;
  })
  .error(function (data, status, header, setting){
    $scope.ResponseDetails = "Erro: " + data ;
  });
  
  var setting = {
    headers : {
      'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
    }
  }

com as linhas:

ini_set('display_errors', true);
error_reporting(E_ALL);

ele retorna:

http://prntscr.com/lhhpdu

 

e sem as linhas ele retorna NULL, alguém sabe dizer no que estou errando?

 

retorno no c#:

http://prntscr.com/lhhqba

 

variáveis pegas:

http://prntscr.com/lhhqr6

Share this post


Link to post
Share on other sites

Acredito que o dado esteja sendo recebido de forma bruta pelo APACHE/PHP, mas a variável $_POST não é populada.

 

Veja se com o seguinte código você não recupera o valor enviado:

$postdata = file_get_contents("php://input");
var_dump($postdata);

De qualquer forma, $_POST somente será populada se os dados forem:

  • application/x-www-form-urlencoded;
  • multipart/form-data-encoded.

No mais, ficam no input stream acima mencionado.

http://php.net/manual/en/wrappers.php.php#wrappers.php.input

Share this post


Link to post
Share on other sites

opa Gabriel, obrigado pelo retorno, eu coloquei o código que você sugeriu e retornou isso no navegador.

http://prntscr.com/lhi2nc

 

o que eu estou achando estranho, é que eu já fiz um código parecido e o $_POST pegou a variável vinda do c# normalmente:

 

código em c#: 

http://prntscr.com/lhi39n

código em php:

http://prntscr.com/lhi3wa

 

por isso não estou achando o motivo dele receber null

Share this post


Link to post
Share on other sites

Evite trazer os prints, traga os códigos/textos mesmo. Tem as opções de adicionar código e citações aqui no editor.

 

Como é possível visualizar no primeiro link, ele está no input stream.

Share this post


Link to post
Share on other sites
3 minutos atrás, Gabriel Heming disse:

Evite trazer os prints, traga os códigos/textos mesmo. Tem as opções de adicionar código e citações aqui no editor.

 

Como é possível visualizar no primeiro link, ele está no input stream.

ok, desculpe pelos prints.

 

isso quer dizer que a variável não está nula, e meu problema é outro?

Share this post


Link to post
Share on other sites
14 minutos atrás, Nioshi disse:

ok, desculpe pelos prints.

 

isso quer dizer que a variável não está nula, e meu problema é outro?

Ela está nula. Isso apenas quer dizer que os dados estão chegando no PHP.

 

É bem provável que o seu problema esteja aqui:

$http.post('./modulos', data, setting)

Deve validar se a variável data está no formato adequado para enviar ao PHP.

Share this post


Link to post
Share on other sites

descobri que seu setar manualmente desta forma a variável antes do if:

$modFolha = 'sim';

 

ele entra no if normalmente e envia a imagem correta ao .js.

Share this post


Link to post
Share on other sites
16 minutos atrás, Nioshi disse:

descobri que seu setar manualmente desta forma a variável antes do if

Sabe que isso não faz o menor sentido?

 

Se for analisar melhor seu código, o código abaixo não faz praticamente nenhum sentido:

$modFolha = '';
$modInforme = '';
$modCartao = '';
    if(isset($_POST['folha'])){
        $modFolha = $_POST['folha'];	
    }
    if(isset($_POST['informe'])){
        $modFolha = $_POST['informe'];	
    }
    if(isset($_POST['cartao'])){
        $modFolha = $_POST['cartao'];	
    }

    if($modFolha == 'sim'){
        $modFolha = 'sim';
    }else{
         $modFolha = 'nao';
    }
    if($modInforme == 'sim'){
        $modInforme = 'sim';
    }else{
         $modInforme = 'nao';
    }
    if($modCartao == 'sim'){
        $modCartao = 'sim';
    }else{
        $modCartao = 'nao';
    }

if($modFolha == 'sim'){
    $modulosImagem['folha'] = './images/holerite.png';
}else{
    $modulosImagem['folha'] = './images/holeriteDesabilitado.png';
}
if($modInforme == 'sim'){
    $modulosImagem['informe'] = './images/informeVerde.png';
}else{
    $modulosImagem['informe'] = './images/informeDesabilitado.png';
}
if($modCartao == 'sim'){
    $modulosImagem['cartao'] = './images/cartao.png';
}else{
    $modulosImagem['cartao'] = './images/cartaoDesabilitado.png';
}

Algumas variáveis (modInforme e $modCartao) nunca serão preenchidas. Uma delas ($modFolha) é preenchida para depois ser validada e preenchida com o mesmo valor.

 

Sobre o seu problema original, o que você deve fazer é validar a entrada dos dados no javascript, verificar se estão sendo enviados corretamente. Caso não resolver, pegue diretamente os valores do input stream php://input.

Share this post


Link to post
Share on other sites

boa tarde, apesar de eu ter começado meu programa c# do zero, eu só queria deixar registrado aqui que eu resolvi o meu problema com webserver no c#, e cURL no lado do PHP, no qual o c# envia minha informação para minha url "http://localhost:12934/mod/" e o cURL pega a informação dessa URL.

Abraço e obrigado pela ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By michael450
      Senhores, boa tarde.
       
      Estou com um probleminha... rss', preciso fazer a listagem de uma função da biblioteca "SPED-NFe"   na qual consulto quais as NFe que emitiram contra meu CNPJ, porém o ele executa toda a função e depois me trás o resultado, eu gostaria de trazer o resultado instantaneamente, como se fosse uma atualização segundo a segundo.
       
       
      Essas informações não são salvas em DB, é apenas para consulta.
      Se alguém puder ajudar serei muito grato,
       
      Abraço.
       
      Michael Douglas
    • By D2th3
      Pessoal,

      Sou intermediário em PHP e estou estudando OO. Vi exemplos de do MVC Pattern usando template view contudo de simples substituição do marcador pelos dados. Eu gostaria que você me pudessem indicar um material de estudo, exemplos de código de um Model, Controller e View que carregasse a template e exibisse, contudo dentro dessa template existisse condicionais e loops como marcadores a serem processados pelo PHP.
       
      Agradeço a ajuda aos meus estudos.
    • By Leon Martin
      Boa tarde pessoal, preciso de uma ajuda urgente. Vcs tem alguma ideia de como eu faço esse programa? 
       
      Enunciado:
      Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o maior elemento da linha onde se encontra o menor elemento da matriz. Faça um programa que carregue uma matriz 4 x 7 com números reais, calcule e mostre seu MINMAX e sua posição (linha e coluna).
       
      Exemplo: int MAT[4][7]
      Min elemento da matriz esta na MAT[1][3] = -19 (Linha Posição 1; Coluna Posição 3)
      Max elemento da linha onde esta o min elemento da matriz esta na MAT[1][5] = 101 (Linha Posição 1; Coluna Posição 5)
       
        0
      1
      2
      3
      4
      5
      6
      0
      3
      33
      9
      2
      15
      3
      22
      1
      5
      4
      76
      -19
      93
      101
      32
      2
      3
      -1
      43
      1
      554
      21
      53
      3
      55
      34
      1231
      212
      664
      234
      13413
       
    • By perfectraider99
      Galera bom dia, recentemente me pediram pra fazer um sistema de postagem para um site de carros . 
      pesquisei formas de fazer e encontrei um projeto de upload de imagens 
      fiz tudo certinho no local host e funcionou perfeitamente mas quando fui colocar no servidor nada funcionou, nem enviava o formulario nem amostrava os produtos.
      por favor galerinha estou a muito tempo tentando resolver esse problema . 
      aqui tá o meu codigo 
       
      index : 
       
       
      <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> body{ font-family: arial; } section{ background-color: rgb(123,104,238,.4); width: 70%; margin: auto; } input, label, textarea{ display: block; width: 100%; height: 30px; } label{ line-height: 30px; margin-top: 10px; } textarea{ height: 150px; } form{ width: 60%; margin: auto; box-sizing: border-box; padding: 20px; } #botao{ margin-bottom: 10px; width: 50%; background-color: rgba(0,0,0,.8); color: white; height: 40px; cursor: pointer; border: none; font-size: 15pt; } h1{ text-align: center; } #foto{ margin-top: 20px; margin-bottom: 20px; } a{ background-color: rgb(0,255,127); display: block; width: 220px; height: 50px; color: black; text-decoration: none; float: right; text-align: center; line-height: 50px; margin: 20px; border: 1px solid rgba(0,0,0,.2); } </style> </head> <body> <section> <a href="produtos.php">Ver todos os produtos</a> <form method="POST" enctype="multipart/form-data"> <h1>ENVIO DE IMGS</h1> <label for="nome">Nome do Produto</label> <input type="text" name="nome" id="nome"> <label for="des">Descrição</label> <textarea name="desc" id="desc"></textarea><br> <input type="file" name="foto[]" multiple id="foto"> <input type="submit" id="botao"> </form> </section> </body> </html> produtos : <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> section{ width: 70%; margin: auto; font-family: arial; } div{ width: 15%; float: left; padding: 1%; background-color: rgb(123,104,238,.4); margin: 10px; } img{ width: 100%; height: 150px; } h2{ font-size: 12pt; color: white; text-align: center; background-color: rgba(0,0,0,.5); padding: 10px 0px; font-weight: normal; } p{ font-size: 10pt; } </style> </head> <body> <section> <?php require 'classes/Produto_class.php'; $p = new Produto_class('formulario_produtos','infinityfree.net','root', '99583460'); <- aqui ta a parte do banco de dados $dadosProduto = $p->buscarProdutos(); if (empty($dadosProduto)) { echo 'Ainda não há produtos aqui'; }else { foreach ($dadosProduto as $value) { ?> <a href="exibir_produto.php"> <div> <img src="imagens/<?php echo $value['foto_capa'] ?>"> <h2><?php echo $value['nome_produto'] ?></h2> </div> </a> <?php } } ?> </section> </body> </html> e aqui tá a parte do banco de dados : <?php class Produto_class{ private $pdo; public function __construct($dbname, $host, $user, $senha) { try { $this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host,$user, $senha); } catch (PDOException $e) { echo 'erro com banco de dados :'.$e->getMessage(); } catch (Exception $e) { echo 'erro Generico :'.$e->getMessage(); } } public function enviarProduto($nome, $descricao, $fotos = array()) { //INSERIR PRODUTO ( TABELA DO PRODUTO ) $cmd = $this->pdo->prepare('INSERT INTO produtos(nome_produto, descricao) values (:n, :d)'); $cmd->bindValue(':n', $nome); $cmd->bindValue(':d', $descricao); $cmd->execute(); $id_produto = $this->pdo->LastInsertId(); //INSERIR AS IMAGENS DO PRODUTO (TABELA DE IMAGENS) if(count($fotos) > 0 )// Se veio imagens { for ($i=0; $i < count($fotos); $i++) { $nome_foto = $fotos[$i]; $cmd = $this->pdo->prepare('INSERT INTO imagens (nome_imagem, fk_id_produto) values (:n, :fk)'); $cmd->bindValue(':n', $nome_foto ); $cmd->bindValue(':fk', $id_produto); $cmd->execute(); } } } public function buscarProdutos()//TODOS { $cmd = $this->pdo->query('SELECT *, (SELECT nome_imagem from imagens where fk_id_produto = produtos.id_produto LIMIT 1) as foto_capa FROM produtos'); if($cmd->rowCount() > 0) { $dados = $cmd->fetchAll(PDO::FETCH_ASSOC); }else { $dados = array(); } return $dados; } public function buscarPrdutoPorId($id) { } public function buscarImagensPorId($id) { } }
       
      Já troquei a variavel $p = new Produto_class no arquivo que eu mandei pro servidor ..
    • By Sapinn
      Tô fazendo esse forum pq não achei nada que me ajudasse. Tenho um site em que os professores dão temas para as usuarios produzirem textos, basicamente um site de historias. Preciso que o aluno saiba se ja fez um texto sobre aquele determinado tema. Sendo assim tenho duas tabelas no meu banco usuario que cadastra todos os usarios e historia que tem o tema. Quando o aluno vai enviar a historia automaticamente envia seu email. O que eu realmente quero é comparar se o email existe nas duas tabelas se sim ele retorna já foi feito se não ele retorna Nada feito ainda.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.