.ship2net.fr). // Reçoit : Le nom d'hôte // Retour : Le numéro (entier > 0), ou 0 si le nom ne correspond pas //************************************************************************************************************ function Bateau_depuis_hote($hote) { $hote = strtolower(preg_replace('/:\d+$/', '', trim((string)$hote))); // sans port éventuel if (preg_match('/^b([1-9][0-9]{0,9})\.'.preg_quote(URL_SITE, '/').'$/', $hote, $m) !== 1) return 0; return (int)$m[1]; } //************************************************************************************************************ // Fonction : Connexion à la base principale (mêmes paramètres que le site). // Retour : L'objet mysqli (exception en cas d'échec) //************************************************************************************************************ function Connexion_live() { return new mysqli(BDD_HOST, BDD_USER, BDD_PASSWORD, BDD_DATABASE); } //************************************************************************************************************ // Fonction : Page d'explication renvoyée au navigateur (ticket invalide, session expirée...), avec un lien vers le // portail. Le code HTTP est fourni par l'appelant. //************************************************************************************************************ function Page_refus($code_http, $titre, $texte) { http_response_code($code_http); header('Content-Type: text/html; charset=UTF-8'); header('Cache-Control: no-store'); echo '' .''.htmlspecialchars($titre).'' .'' .'

'.htmlspecialchars($titre).'

'.htmlspecialchars($texte).'

' .''.htmlspecialchars("Retour au portail Ship2net").''; exit(); } //************************************************************************************************************ // Fonction : Le ShipMember a-t-il droit au Live de ce bateau EN CE MOMENT ? Compte valide, et : administrateur, ou // accès 'actif' non expiré au bateau. Appelée à l'ouverture de la session ET à chaque requête : un accès // suspendu ou révoqué depuis le portail coupe le Live immédiatement. // Retour : true si autorisé //************************************************************************************************************ function Droit_live($db, $id_shipmember, $id_bateau) { $stmt = $db->prepare("SELECT 1 FROM TB_Shipmembers M WHERE M.ID=? AND M.Validite=1 AND (M.Niveau_acces >= ? OR EXISTS (SELECT 1 FROM TB_Lien_bateau_shipmember L WHERE L.ID_Shipmember=M.ID AND L.ID_Bateau=? AND L.Statut='actif' AND L.Fin_validite >= NOW()))"); $niveau_admin = NIVEAU_ACCES_MINI_ADMINISTRATEUR; $stmt->bind_param('iii', $id_shipmember, $niveau_admin, $id_bateau); $stmt->execute(); $autorise = ($stmt->get_result()->num_rows == 1); $stmt->close(); return $autorise; }