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 =”DILWIKI “;
$vazio = ” “;
$porta = “211 “;
$oper_name = ‘canais.contec’;
$pass = ‘teste’;
$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.