Snoopy::submit()publicWP 1.0

Method of the class: Snoopy{}

No Hooks.

Return

null. Nothing (null).

Usage

$Snoopy = new Snoopy();
$Snoopy->submit( $URI, $formvars, $formfiles );
$URI (required)
-
$formvars **
-
Default: ""
$formfiles **
-
Default: ""

Snoopy::submit() code WP 6.4.3

function submit($URI, $formvars="", $formfiles="")
{
	unset($postdata);

	$postdata = $this->_prepare_post_body($formvars, $formfiles);

	$URI_PARTS = parse_url($URI);
	if (!empty($URI_PARTS["user"]))
		$this->user = $URI_PARTS["user"];
	if (!empty($URI_PARTS["pass"]))
		$this->pass = $URI_PARTS["pass"];
	if (empty($URI_PARTS["query"]))
		$URI_PARTS["query"] = '';
	if (empty($URI_PARTS["path"]))
		$URI_PARTS["path"] = '';

	switch(strtolower($URI_PARTS["scheme"]))
	{
		case "http":
			$this->host = $URI_PARTS["host"];
			if(!empty($URI_PARTS["port"]))
				$this->port = $URI_PARTS["port"];
			if($this->_connect($fp))
			{
				if($this->_isproxy)
				{
					// using proxy, send entire URI
					$this->_httprequest($URI,$fp,$URI,$this->_submit_method,$this->_submit_type,$postdata);
				}
				else
				{
					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
					// no proxy, send only the path
					$this->_httprequest($path, $fp, $URI, $this->_submit_method, $this->_submit_type, $postdata);
				}

				$this->_disconnect($fp);

				if($this->_redirectaddr)
				{
					/* url was redirected, check if we've hit the max depth */
					if($this->maxredirs > $this->_redirectdepth)
					{
						if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
							$this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);

						// only follow redirect if it's on this site, or offsiteok is true
						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
						{
							/* follow the redirect */
							$this->_redirectdepth++;
							$this->lastredirectaddr=$this->_redirectaddr;
							if( strpos( $this->_redirectaddr, "?" ) > 0 )
								$this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
							else
								$this->submit($this->_redirectaddr,$formvars, $formfiles);
						}
					}
				}

				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
				{
					$frameurls = $this->_frameurls;
					$this->_frameurls = array();

					foreach ( $frameurls as $frameurl )
					{
						if($this->_framedepth < $this->maxframes)
						{
							$this->fetch($frameurl);
							$this->_framedepth++;
						}
						else
							break;
					}
				}

			}
			else
			{
				return false;
			}
			return true;
			break;
		case "https":
			if(!$this->curl_path)
				return false;
			if(function_exists("is_executable"))
			    if (!is_executable($this->curl_path))
			        return false;
			$this->host = $URI_PARTS["host"];
			if(!empty($URI_PARTS["port"]))
				$this->port = $URI_PARTS["port"];
			if($this->_isproxy)
			{
				// using proxy, send entire URI
				$this->_httpsrequest($URI, $URI, $this->_submit_method, $this->_submit_type, $postdata);
			}
			else
			{
				$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
				// no proxy, send only the path
				$this->_httpsrequest($path, $URI, $this->_submit_method, $this->_submit_type, $postdata);
			}

			if($this->_redirectaddr)
			{
				/* url was redirected, check if we've hit the max depth */
				if($this->maxredirs > $this->_redirectdepth)
				{
					if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
						$this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);

					// only follow redirect if it's on this site, or offsiteok is true
					if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
					{
						/* follow the redirect */
						$this->_redirectdepth++;
						$this->lastredirectaddr=$this->_redirectaddr;
						if( strpos( $this->_redirectaddr, "?" ) > 0 )
							$this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
						else
							$this->submit($this->_redirectaddr,$formvars, $formfiles);
					}
				}
			}

			if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
			{
				$frameurls = $this->_frameurls;
				$this->_frameurls = array();

				foreach ( $frameurls as $frameurl )
				{
					if($this->_framedepth < $this->maxframes)
					{
						$this->fetch($frameurl);
						$this->_framedepth++;
					}
					else
						break;
				}
			}
			return true;
			break;

		default:
			// not a valid protocol
			$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
			return false;
			break;
	}
	return true;
}