Files
2026-04-28 15:13:50 +02:00

150 lines
3.8 KiB
PHP

<?php
/**
* Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
*
* You are hereby granted a non-exclusive, worldwide, royalty-free license to
* use, copy, modify, and distribute this software in source code or binary
* form for use in connection with the web services and APIs provided by
* Facebook.
*
* As with any software that integrates with the Facebook platform, your use
* of this software is subject to the Facebook Developer Principles and
* Policies [http://developers.facebook.com/policy/]. This copyright notice
* shall be included in all copies or substantial portions of the software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace FacebookPixelPlugin\FacebookAds\Object\ServerSide;
/**
* Util Class
*
* @category Class
* @package FacebookAds\Object\ServerSide
*/
class Util {
/**
* @param string $data hash input data using SHA256 algorithm.
* @return string
*/
public static function hash($data) {
if ($data == null || Util::isHashed($data)) {
return $data;
}
return hash('sha256', $data, false);
}
/**
* @param string $pii PII data to check if its hashed.
* @return bool
*/
public static function isHashed($pii) {
// it could be sha256 or md5
return preg_match('/^[A-Fa-f0-9]{64}$/', $pii) ||
preg_match('/^[a-f0-9]{32}$/', $pii);
}
/**
* Extracts the IP Address from the PHP Request Context.
* @return string
*/
public static function getIpAddress() {
$ip_address = null;
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip_address = $_SERVER['HTTP_CLIENT_IP'];
} else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if (!empty($_SERVER['REMOTE_ADDR'])) {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}
/**
* Extracts the HTTP User Agent from the PHP Request Context.
* @return string
*/
public static function getHttpUserAgent() {
$user_agent = null;
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
}
return $user_agent;
}
/**
* Extracts the URI from the PHP Request Context.
* @return string
*/
public static function getRequestUri() {
$url = "http://";
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
$url = "https://";
}
if (!empty($_SERVER['HTTP_HOST'])) {
$url .= $_SERVER['HTTP_HOST'];
}
if (!empty($_SERVER['REQUEST_URI'])) {
$url .= $_SERVER['REQUEST_URI'];
}
return $url;
}
/**
* Extracts the FBP cookie from the PHP Request Context.
* @return string
*/
public static function getFbp() {
$fbp = null;
if (!empty($_COOKIE['_fbp'])) {
$fbp = $_COOKIE['_fbp'];
}
return $fbp;
}
/**
* Extracts the FBC cookie from the PHP Request Context.
* @return string
*/
public static function getFbc() {
$fbc = null;
if (!empty($_COOKIE['_fbc'])) {
$fbc = $_COOKIE['_fbc'];
}
return $fbc;
}
public static function getCaBundlePath() {
return __DIR__.DIRECTORY_SEPARATOR
.str_repeat('..'.DIRECTORY_SEPARATOR, 4)
.'fb_ca_chain_bundle.crt';
}
public static function getAppsecretProof($access_token, $appsecret) {
return hash_hmac(
'sha256',
$access_token,
$appsecret
);
}
}