Carregar uma página asp dentro do PHP

//Carregar uma página asp dentro do PHP

Carregar uma página asp dentro do PHP

Logar em uma página .asp dentro do PHP

Hoje me deparei com uma missão super difícil, precisava criar um plugin para o wordpress que faria a seguinte função:

Uma empresa tem 1 site em wordpress e um outro site em .ASP; Mas este .ASP é muito complexo e guarda dados super importantes. Então eu precisava colocar uma das páginas do .ASP aparecer dentro de uma página do wordpress. Só que, quando a pessoa fizesse o login no wordpress a página do .ASP teria que estar liberada sem precisar logar.

Procurei por vários lugares e não achei nada. Então resolvi fazer a minha própria integração.

Usei a função SOAPCLIENT do PHP, mas para que funcione precisa editar o php.ini, temos que descementar a função que permite iniciar o SOAP e que possibilita o uso de include de um arquivo .ASP .

Integrar o .ASP em PHP não foi uma tarefa muito fácil.

Primeiro criei o arquivo para transformar isto em um plugin wordpress, e dei a ele um shortcode.

Não se esqueça de abrir as teg php no inicio dos arquivos.

arquivo: index.php

/*
Plugin Name: LoginComissao
Plugin URI: https://www.diletec.com.br
Description: Plugin para mostrar Rank de seus parceiros conectando php no asp
Author: Daniel W P Souza
Version: 0.1
Author URI: https://www.diletec.com.br
*/

function comissao(){
require_once(“sooap_server.php”);
$conectar = new conectar;
$user = ‘usuario-vai-aqui’;
$pass = ‘aqui-e-a-senha’;
$conectar->exLogin($user, $pass);
}

add_shortcode(‘parceiro’, comissao);

Arquivo que faz o PHP se comunicar com o .ASP

arquivo: sooap_server.php

class conectar {
const SENHA_INVALIDA = ‘SenhaInv’;
const OPERADOR_NAO_CADASTRADO = ‘OperNCad’;

function exLogin($user, $pass){
$url = ‘https://link-de-login’;
$options = array(
‘encoding’ => ‘ISO-8859-1’,
‘trace’ => true,
‘exceptions’ => true,
‘compression’ => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP
);
//http://php.net/manual/pt_BR/book.soap.php
//Aqui está um exemplo de um cliente php falando com um servidor asmx:
$soapClient = new SoapClient($url, $options);

// Prepare SoapHeader parameters
$sh_param = array(

‘rdm’ => ‘Bib_Html.rdmDBGeralHtm’,
‘method’ => ‘ValidaConexaoHTM’,
‘args’ => ‘1,2,3’,);

$headers = new SoapHeader(‘https://link-de-login’, ‘UserCredentials’, $sh_param);

// Prepare Soap Client
$soapClient->__setSoapHeaders(array($headers));

// Configurar os parâmetros RemoteFunction
$ap_param = array(‘amount’ => $irow[‘total_price’]);

// Call RemoteFunction ()
$error = 0;
try {
$info = $soapClient->__call(“RemoteFunction”, array($ap_param));
} catch (SoapFault $fault) {
$error = 1;
//print(“Desculpe mas a pagina não tem a função: “.$fault->faultcode.”-“.$fault->faultstring.”.”);
}

if ($error == 0) {
$auth_num = $info->RemoteFunctionResult;

if ($auth_num < 0) { // Setup the OtherRemoteFunction() parameters $at_param = array( ‘amount’ => $irow[‘total_price’],
‘description’ => $description);

// Call OtherRemoteFunction()
$trans = $soapClient->__call(“OtherRemoteFunction”, array($at_param));
$trans_result = $trans->OtherRemoteFunctionResult;

}else {
// Registrar o erro de transação no banco de dados

// Mate o link para Soap
// unset($soapClient);
}
}else{
$ini=null;
$ini = chr(171).’$’.chr(187);
$ip=null;
$maquina =”TEKWIKI “;
$vazio = ” “;
$porta = “211 “;
$oper_name = ‘canais.contec’;
$pass = ‘teknisa’;
$operador = str_pad($oper_name,12,’ ‘,STR_PAD_RIGHT);
$strPortaSocket = $ini.$ip.$maquina.$vazio.$operador.$porta;

$args = array(
new SoapVar($strPortaSocket,XSD_STRING,’string’,”http://www.w3.org/2001/XMLSchema”),
new SoapVar($operador,XSD_STRING,’string’,”http://www.w3.org/2001/XMLSchema”),
new SoapVar(MD5($pass),XSD_STRING,’string’,”http://www.w3.org/2001/XMLSchema”)
);

$params = array(
‘rdm’ => ‘Bib_Html.rdmDBGeralHtm’,
‘method’ => ‘ValidaConexaoHTM’,
‘args’ => $args,
);

try{
$ret = $soapClient->executeCOMMethod($params);

if($ret->executeCOMMethodResult === self::SENHA_INVALIDA)
throw new Exception(“Senha Inválida.”, 1);

if($ret->executeCOMMethodResult === self::OPERADOR_NAO_CADASTRADO)
throw new Exception(“Operador não cadastrado.”, 1);
stream_context_set_default( [
‘ssl’ => [
‘verify_peer’ => false,
‘verify_peer_name’ => false,
],
]);
print_r(get_headers(“https:https://link-de-login”));
$response = file_get_contents(“https://link-de-login”);

echo $response;
//require(“https://link-de-login”);
}catch(SoapFault $e) {
throw new Exception($e->getMessage(),$e->getCode());
}
}
}
}

Sei que é tudo meio difícil de se intender, este arquivo faz 2 funções diferentes para o uso de ASP, caso vocês tenham dificuldade deixe nos comentários que eu irei fazer um vídeo explicando melhor.
Esta foi a função mais fácil que encontrei de se fazer login no .ASP usando o PHP, e você pode usa-la para ajudar de varias maneiras, tipo:
Fazer cadastro no .ASP + SQL usando o PHP.
Retornar dados do .ASP usando o PHP.
Editar dados do .ASP + SQL usando o PHP.
e até mesmo Deletar dados do .ASP + SQL usando o PHP.
Também é uma forma de carregar uma página .ASP dentro do PHP.

Não deixe de assinar a nossa Newsletter, e deixar o seu comentário.

By |2017-08-27T13:35:30+00:00janeiro 24th, 2017|php|3 Comentários

Sobre o Autor:

3 Comments

  1. Davis 23 de março de 2017 em 15:02 - Responder

    Greate pieces. Keep posting such kind of info on your blog.
    Im really impressed by it.
    Hi there, You have done an excellent job.
    I will definitely digg it and personally recommend to my friends.
    I am sure they’ll be benefited from this web site.

  2. Luciano 10 de março de 2018 em 19:46 - Responder

    Olá Daniel, estou passando pelo mesmo problema, tenho um site em asp e preciso rodar ele dentro de um post no wordpress, porém tentei com iframe e não deu, pois ao chamar o post ele não abre dentro, ele pula direto para o site em asp e eu precisava abrir o conteúdo dentro do post mesmo. Você teria uma solução para isso?

  3. Daniel Souza 12 de março de 2018 em 07:55 - Responder

    Bom dia, Luciano, tudo bem?
    Você pode usar o código que vou deixar abaixo, porém pegue o mesmo e faça um shotcode para que você possa usar em uma post wordpress.

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000);
    curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36”);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/x-www-form-urlencoded’));
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, ‘https://asp.reflexion.net/login’); //coloque a url que deseja
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($errno = curl_errno($ch))
    {
    $error_message = curl_strerror($errno);
    echo “cURL error ({$errno}):\n {$error_message}”;
    }
    echo “
    “;
    echo “http code: ” . $httpCode . “
    “;
    echo “content: ” . $content;

Deixar Um Comentário