Jump to content

HELP ME WITH CALLREMOTE AND PHP


AirNew

Recommended Posts

 

I need help to send an email to the player using callRemote, my site is bvbserver.com I already have some more php files I do not know where it is wrong!

 

RESOURCE ( X )

V - client.lua - V

to = "playermail@gmail.com"
from = "nao-responder@bvbserver.com"
title = "TEST"
body = "TESTMESSAGE"
triggerServerEvent("sendMessage", getLocalPlayer(), to, from, title, body )

V - server.lua - V

addEvent("sendMessage", true)
addEventHandler("sendMessage", getRootElement(),
function ( to, from, title, body )

  local function callbackfnc(result, msg)
    outputDebugString("callbackfnc: " .. result .. " (" .. msg .. ")")
  end
  
  outputChatBox ( ""..to.." : "..from.." : "..title.." : "..body.."!", root )
  callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body)
end)

 

--------------------------------- // --------------------------------- --------------------------------- // --------------------------------- --------------------------------- // --------------------------------- --------------------------------- // ---------------------------------

 

V - file.php - V (bvbserver.com/MTA/file.php)

<?php
  include("mta_sdk.php");

  if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']) {
    mta::doReturn(-1, "Remote access not allowed");
    exit;
  }

  $input = mta::getInput();
  if ( isset($input[0]) &&
       isset($input[1]) &&
       isset($input[2]) &&
       isset($input[3])    )
  {
    $to = $input[0];
    $from = $input[1];
    $subject = $input[2];
    $message = $input[3];
    $headers = "From: " . $input[1];
    mail($to, $subject, $message, $headers);
    mta::doReturn(0, "Success");
  }
  else
  {
    mta::doReturn(-1, "Invalid input");
  }
?>

 

V - mta_sdk.php - V (bvbserver.com/MTA/mta_sdk.php)

<?php
/**
************************************
* MTA PHP SDK
************************************
*
* @copyright	Copyright (C) 2010, Multi Theft Auto
* @author		JackC, eAi, Sebas
* @link			http://www.mtasa.com
* @version		0.4
*/

class mta
{
	private $useCurl = false;
	private $sockTimeout = 6; // seconds
	
	public $http_username = '';
	public $http_password = '';
	
	public $host = '';
	public $port = '';
	
	private $resources = array();
	
	public function __construct( $host, $port, $username = "", $pass = "" )
	{
		$this->host = $host;
		$this->port = $port;
		$this->http_username = $username;
		$this->http_password = $pass;
	}
	
	public function getResource ( $resourceName )
	{
		foreach ( $this->resources as $resource )
		{
			if ( $resource->getName == $resourceName )
				return $resource;
		}
		
		$res = new Resource ( $resourceName, $this );
		$this->resources[] = $res;
		return $res;
	}
	
	public static function getInput()
	{
		$out = mta::convertToObjects( json_decode( file_get_contents('php://input'), true ) );
		return (is_array($out)) ? $out : false;
	}
	
	public static function doReturn()
	{
		$val = array();
		
		for ( $i = 0; $i < func_num_args(); $i++ )
		{
			$val[$i] = func_get_arg($i);
	    }
		
		$val = mta::convertFromObjects($val);
		$json_output = json_encode($val);
		echo $json_output;
	}
	
	public function callFunction( $resourceName, $function, $args )
	{
		if ( $args != null )
		{
			$args = mta::convertFromObjects($args);
			$json_output = json_encode($args);
		}
		else
		{
			$json_output = "";
		}
		$path = "/" . $resourceName . "/call/" . $function;
		$result = $this->do_post_request( $this->host, $this->port, $path, $json_output );
		echo $json_output;
		$out = mta::convertToObjects( json_decode( $result, true ) );
		
		return (is_array($out)) ? $out : false;
	}
	
	public static function convertToObjects( $item )
	{
		if ( is_array($item) )
		{
			foreach ( $item as &$value ) 
			{
				$value = mta::convertToObjects( $value );
			}
		}
		else if ( is_string($item) )
		{	
			if ( substr( $item, 0, 3 ) == "^E^" )
			{
				$item = new Element( substr( $item, 3 ) );
			}
			elseif ( substr( $item, 0, 3 ) == "^R^" )
			{
				$item = $this->getResource( substr( $item, 3 ) );
			}
		}
		
		return $item;
	}
	
	public static function convertFromObjects( $item )
	{
		if ( is_array($item) )
		{
			foreach ( $item as &$value ) 
			{
				$value = mta::convertFromObjects($value);
			}
		}
		elseif ( is_object($item) )
		{	
			if ( get_class($item) == "Element" || get_class($item) == "Resource" )
			{
				$item = $item->toString();
			}
		}
		
		return $item;
	}
	
	function do_post_request( $host, $port, $path, $json_data )
	{
		if ( $this->useCurl )
		{
			$ch = curl_init();   
			curl_setopt( $ch, CURLOPT_URL, "http://{$host}:{$port}{$path}" ); 
			curl_setopt( $ch, CURLOPT_POST, 1 );
			curl_setopt( $ch, CURLOPT_POSTFIELDS, $json_data );
			$result = curl_exec($ch);    
			curl_close($ch); 
			return $result;
		}
		else
		{
			if ( !$fp = @fsockopen( $host, $port, $errno, $errstr, $this->sockTimeout ) )
			{
				throw new Exception( "Could not connect to {$host}:{$port}" );
			}

			$out = "POST {$path} HTTP/1.0\r\n";
			$out .= "Host: {$host}:{$port}\r\n";
			
			if ( $this->http_username && $this->http_password )
			{
				$out .= "Authorization: Basic " . base64_encode( "{$this->http_username}:{$this->http_password}" ) . "\r\n";
			}
			
			$out .= "Content-Length: " . strlen($json_data) . "\r\n";
			$out .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
			//$out .= "Connection: close\r\n\r\n";
			$out .= $json_data . "\r\n\r\n";
			
			if ( !fputs( $fp, $out ) )
			{
				throw new Exception( "Unable to send request to {$host}:{$port}" );
			}
			
			@stream_set_timeout( $fp, $this->sockTimeout );
			$status = @socket_get_status($fp);
			
			$response = '';
			
			while ( !feof($fp) && !$status['timed_out'] )
			{
				$response .= fgets( $fp, 128 );
				$status = socket_get_status($fp);
			}
			
			fclose( $fp );
			
			$tmp = explode( "\r\n\r\n", $response, 2 );
			$headers = $tmp[0];
       		$response = trim($tmp[1]);
       		
       		preg_match( "/HTTP\/1.(?:0|1)\s*([0-9]{3})/", $headers, $matches );
       		$statusCode = intval($matches[1]);
       		
       		if ( $statusCode != 200 )
       		{
       			switch( $statusCode )
       			{
       				case 401:
       					throw new Exception( "Access Denied. This server requires authentication. Please ensure that a valid username and password combination is provided." );
       				break;
       				
       				case 404:
       					throw new Exception( "There was a problem with the request. Ensure that the resource exists and that the name is spelled correctly." );
       				break;
       			}
       		}
       		
       		if ( preg_match( "/^error/i", $response ) )
       		{
       			throw new Exception( ucwords( preg_replace("/^error:?\s*/i", "", $response ) ) );
       		}
			
			return $response;
		}
	}
}

class Element
{
	var $id;

	function Element($id)
	{
		$this->id = $id;
	}

	function toString()
	{
		return "^E^" . $this->id;
	}
}


class Resource
{
	var $name;
	private $server;

	function Resource($name, $server)
	{
		$this->name = $name;
		$this->server = $server;
	}

	function toString()
	{
		return "^R^" . $this->name;
	}
	
	public function getName()
	{
		return $this->name;
	}
	
	function call ( $function )
	{
		
		$val = array();
		
		for ( $i = 1; $i < func_num_args(); $i++ )
		{
			$val[$i-1] = func_get_arg($i);
	    }
		return $this->server->callFunction ( $this->name, $function, $val );
	}
}
?>

 

HELP ME PLEASE, I NEED SEND A MESSAGE TO PLAYER MAIL

Link to post
4 minutes ago, AirNew said:

 

Я посмотрел везде в электронном письме, даже в сеансе «Все электронные письма», но ничего не нашел!

check if the php function is called - email

  • Like 1
Link to post
Just now, AirNew said:

Я из Бразилии, и не говорю по-английски :( (просто напишите)

what letter do you need to send? It is possible that your Hosting is blocking outgoing fetchRemote, or you forgot to issue admin rights to the resource to call fetchRemote

  • Like 1
Link to post
39 minutes ago, XaskeL said:

what letter do you need to send? It is possible that your Hosting is blocking outgoing fetchRemote, or you forgot to issue admin rights to the resource to call fetchRemote

Solved! thanks @XaskeL

Link to post

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
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...