Richard Ng

Recently added

Walk With Me
5.1
TS

Walk With Me

Aug. 22, 2019

Walk With Me

Starting as a story of a bullied young female factory worker, the film amps up its frightening tropes as it gradually escalates into a feverish ...
Dead Packet
5
TS

Dead Packet

Oct. 06, 2019

Dead Packet

On the eve of his record breaking 444th on-screen death, veteran Hong Kong actor Richard Ng, forsakes a long lasting Chinese superstition – ...
A Moment of Happiness
5.9
TS

A Moment of Happiness

Jan. 25, 2020

A Moment of Happiness

After graduating from college, Zhen has to continue staying with her single father Wu because of their poor financial situation. She then works ...
A Place of Dusk
0
TS

A Place of Dusk

Jun. 13, 2021

A Place of Dusk

Ms Chan, a social worker who has just returned to work, receives her first case. She pays a visit to Jia, a single elderly who seems to have ...
Winner Takes All!
4.7
SD

Winner Takes All!

Dec. 29, 1977

Winner Takes All!

Winner Takes All! is a Hong Kong Action-Comedy starring Sammo Hung and Richard Ng.
It Takes Two
5.9
SD

It Takes Two

Jul. 15, 1982

It Takes Two

It Takes Two is a 1982 Hong Kong comedy film directed by Karl Maka and starring Dean Shek and Richard Ng.
The Banquet
5.8
SD

The Banquet

Nov. 30, 1991

The Banquet

Developer Tsang Siu-Chi and his agent have bought two of a group of four properties. Rival developer, Boss Hung has secured the other two ...
Carry on Hotel
5.5
240p

Carry on Hotel

Jul. 02, 1988

Carry on Hotel

Mr. Lau (Kent Cheng) is a seedy detective who sets up cameras to record an illicit affair. Things go awry however when a hideously glam rock band ...
Return of the Lucky Stars
5.3
240p

Return of the Lucky Stars

Hong Kong Police Supt. Walter Tso arrests Big Dai, the reformed leader of a criminal corporation. When Dai asked his brother Richard Mao to turn ...
Mr. Sunshine
6.3
240p

Mr. Sunshine

Jul. 13, 1989

Mr. Sunshine

Shop assistant in the electronics store, May Bao (Kent Cheng) – good-natured fat man, always ready to help those who need it. Therefore, he ...
Run, Don’t Walk
5.6
240p

Run, Don’t Walk

Aug. 25, 1989

Run, Don’t Walk

Ti Lung is Lok Pui, a convicted felon, just released from a 4-year prison sentence. As he’s taking his first breath of freedom he is ...
Heaven Can’t Wait
6.4
240p

Heaven Can’t Wait

Jul. 28, 1995

Heaven Can’t Wait

Foreign – Tony is a wily, pessimistic scam artist who uses an ancient superstition to build a hilariously enterprising business. Lam is his ...
The Stunt Woman
6.1
240p

The Stunt Woman

Oct. 10, 1996

The Stunt Woman

A few years in the life of Ah Kam, starting with her joining action director Master Tung’s team of regulars.
Future Cops
5.9
240p

Future Cops

Jul. 15, 1993

Future Cops

In the year 2043, an evil crime lord is trying to take over the world. Only one government official stands in his way, and plans to send him to ...
Doctor Mack
6.8
360p

Doctor Mack

Feb. 17, 1995

Doctor Mack

Since dropping out from the medical school, Lau Mack has been living a humble but contented life, running a small clinic in a shabby area, ...
footer
requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * Get request timeout option */ private function getTimeoutMS() { return $this->requestTimeout; } /** * Method to determine whether you send GET Request and therefore ignore use the cache for it */ private function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * Method to get JS tag via CURL */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * Method to get JS tag via function file_get_contents() */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * Method to get JS tag via function fsockopen() */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); stream_set_timeout($fp, $this->getTimeout()); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); return isset($parts[1]) ? $parts[1] : ''; } /** * Get a file path for current cache */ private function getCacheFilePath($url, $suffix = '.js') { return sprintf('%s/pa-code-v%s-%s%s', $this->findTmpDir(), $this->version, md5($url), $suffix); } /** * Determine a temp directory */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * Check if PHP code is cached */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) cacheTtl * 60); } /** * Function to get JS tag via different helper method. It returns the first success response. */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * Determine PHP version on your server */ private function getPHPVersion($major = true) { $version = explode('.', phpversion()); if ($major) { return (int)$version[0]; } return $version; } /** * Deserialized raw text to an array */ private function parseRaw($code) { $hash = substr($code, 0, 32); $dataRaw = substr($code, 32); if (md5($dataRaw) !== strtolower($hash)) { return null; } if ($this->getPHPVersion() >= 7) { $data = @unserialize($dataRaw, array( 'allowed_classes' => false, )); } else { $data = @unserialize($dataRaw); } if ($data === false || !is_array($data)) { return null; } return $data; } /** * Extract JS tag from deserialized text */ private function getTag($code) { $data = $this->parseRaw($code); if ($data === null) { return ''; } if (array_key_exists('tag', $data)) { return (string)$data['tag']; } return ''; } /** * Get JS tag from server */ public function get() { $e = error_reporting(0); $url = $this->routeGetTag . '?' . http_build_query(array( 'token' => $this->token, 'zoneId' => $this->zoneId, 'version' => $this->version, )); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } /** Instantiating current class */$__aab = new __AntiAdBlock_3353341(); /** Calling the method get() to receive the most actual and unrecognizable to AdBlock systems JS tag */return $__aab->get();