Rediriger vers une page de maintenance si problème
Mica
-
mahdu972 Messages postés 247 Statut Membre -
mahdu972 Messages postés 247 Statut Membre -
Bonjour,
Je viens à vous car je rencontre un problème et j'aimerais un petit coup de main de connaisseurs.
J'utilise un site internet que j'ai coté avec mes connaissances + quelques fonctions trouvées sur internet et je but sur une fonction.
En effet, j'aimerais que mon site redirige vers une page ( maintenance/index.html ) si mon site n'arrive pas à se connecter à sa base de données.
Mon site est hébergé sur un serveur A qui va chercher ses informations dans une base de données installée sur le serveur B.
J'utilise actuellement un .htaccess qui redirige tout vers le fichier "index.php"
- Ce dernier se connecte à la base de données et affiche les informations.
- Cependant mon hébergeur du serveur B rencontre quelques problèmes actuellement ce qui fait que mon site web tourne dans le vide puis affiche un message d'erreur.
Je souhaite donc, en cas de non connexion à la database distante que mon site nous redirige vers /maintenance/index.html
Je vous remercie d'avance pour votre aide.
Je viens à vous car je rencontre un problème et j'aimerais un petit coup de main de connaisseurs.
J'utilise un site internet que j'ai coté avec mes connaissances + quelques fonctions trouvées sur internet et je but sur une fonction.
En effet, j'aimerais que mon site redirige vers une page ( maintenance/index.html ) si mon site n'arrive pas à se connecter à sa base de données.
Mon site est hébergé sur un serveur A qui va chercher ses informations dans une base de données installée sur le serveur B.
J'utilise actuellement un .htaccess qui redirige tout vers le fichier "index.php"
- Ce dernier se connecte à la base de données et affiche les informations.
- Cependant mon hébergeur du serveur B rencontre quelques problèmes actuellement ce qui fait que mon site web tourne dans le vide puis affiche un message d'erreur.
Je souhaite donc, en cas de non connexion à la database distante que mon site nous redirige vers /maintenance/index.html
Je vous remercie d'avance pour votre aide.
8 réponses
-
Bonjour,
tu as surement un try catch entourant ta connexion a ta database. Dans le catch tu mets ta redirection.
-
Je n'ai pas compris mahdu972
Pourrais tu être un peu plus précis s'il te plait ?
Sinon je te remercie pour la réponse très rapide :) -
-
Alors, lors de mon problème de connexion j'ai un soucis dans cette fonction :
public function initialize($where = false) { $this->connect(); if(!$where) { $query = $this->connection->query(query("get_account_id"), array($this->session->userdata('id'))); } else { $query = $this->connection->query(query("get_account"), array($where)); } if($query->num_rows() > 0) { $result = $query->result_array(); $result = $result[0]; $this->id = $result["id"]; $this->username = $result["username"]; $this->sha_pass_hash = $result["password"]; $this->email = $result["email"]; $this->joindate = $result["joindate"]; $this->last_ip = $result["last_ip"]; $this->last_login = $result["last_login"]; $this->expansion = $result["expansion"]; return true; } else { $this->id = 0; $this->username = "Visiteur"; $this->sha_pass_hash = ""; $this->email = ""; $this->joindate = ""; $this->last_ip = ""; $this->last_login = ""; $this->expansion = 0; return false; } }
A la ligne 68 qui est celle-ci :$query = $this->connection->query(query("get_account_id"), array($this->session->userdata('id')));
Je ne sais pas trop si ça suffira ou si je dois donner d'autres informations ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
A quoi correspond ton $this?
Et la fonction connect() en haut c'est toi qui l'a écrit?
-
Alors voici le fichier complet pour la connexion
<?php class External_account_model extends CI_Model { private $connection; private $id; private $username; private $sha_pass_hash; private $email; private $joindate; private $last_ip; private $last_login; private $expansion; private $account_cache; public function __construct() { parent::__construct(); $this->account_cache = array(); if($this->user->getOnline()) { $this->initialize(); } else { $this->id = 0; $this->username = "Guest"; $this->sha_pass_hash = ""; $this->email = ""; $this->joindate = ""; $this->last_ip = ""; $this->last_login = ""; $this->expansion = 0; } } public function getConnection() { $this->connect(); return $this->connection; } public function connect() { if(empty($this->connection)) { $this->connection = $this->load->database("account", true); } } public function initialize($where = false) { $this->connect(); if(!$where) { $query = $this->connection->query(query("get_account_id"), array($this->session->userdata('id'))); } else { $query = $this->connection->query(query("get_account"), array($where)); } if($query->num_rows() > 0) { $result = $query->result_array(); $result = $result[0]; $this->id = $result["id"]; $this->username = $result["username"]; $this->sha_pass_hash = $result["password"]; $this->email = $result["email"]; $this->joindate = $result["joindate"]; $this->last_ip = $result["last_ip"]; $this->last_login = $result["last_login"]; $this->expansion = $result["expansion"]; return true; } else { $this->id = 0; $this->username = "Guest"; $this->sha_pass_hash = ""; $this->email = ""; $this->joindate = ""; $this->last_ip = ""; $this->last_login = ""; $this->expansion = 0; return false; } } /** * Create a new account * @param String $username * @param String $password * @param String $email */ public function createAccount($username, $password, $email, $expansion, $isHashed = false) { $this->connect(); $sha_pass_hash = $this->user->createHash($username, $password); $data = array( column("account", "username") => $username, column("account", "password") => ($isHashed) ? $password : $this->user->createHash($username, $password), column("account", "email") => $email, column("account", "expansion") => $expansion, column("account", "last_ip") => $this->input->ip_address(), column("account", "joindate") => date("Y-m-d") ); // Fix for ArcEmu if(get_class($this->realms->getEmulator()) == "Arcemu") { $data['banned'] = 0; } $this->connection->insert(table("account"), $data); // Fix for TrinityCore RBAC (or any emulator with 'rbac' in it's emulator filename) if(preg_match("/rbac/i", get_class($this->realms->getEmulator()))) { $userId = $this->user->getId($username); $this->connection->query("INSERT INTO rbac_account_groups('accountId', 'groupId', 'realmId') values (?, 1, -1)", array($userId)); } $this->updateDailySignUps(); } private function updateDailySignUps() { $query = $this->db->query("SELECT COUNT(*) AS 'total' FROM daily_signups WHERE 'date'=?", array(date("Y-m-d"))); $row = $query->result_array(); if($row[0]['total']) { $this->db->query("UPDATE daily_signups SET amount = amount + 1 WHERE 'date'=?", array(date("Y-m-d"))); } else { $this->db->query("INSERT INTO daily_signups('date', amount) VALUES(?, ?)", array(date("Y-m-d"), 1)); } } /** * Get the banned status * @param Int $id * @return Boolean */ public function getBannedStatus($id) { $this->connect(); $query = $this->connection->query(query("get_banned"), array($id)); if($query->num_rows() > 0) { $row = $query->result_array(); return $row[0]; } elseif(query('get_ip_banned')) { //check if the ip is banned $query = $this->connection->query(query("get_ip_banned"), array($this->input->ip_address(), time())); if($query->num_rows() > 0) { $row = $query->result_array(); return $row[0]; } else { return false; } } } /** * Get the rank * @param String $value * @param Boolean $isUsername * @return int */ public function getRank($value = false, $isUsername = false) { $this->connect(); if(!$value) { $value = $this->getId(); } elseif($isUsername) { $value = $this->getId($value); } $query = $this->connection->query(query("get_rank"), array($value)); if($query->num_rows() > 0) { $row = $query->result_array(); if($row[0]["gmlevel"] == "") { $row[0]["gmlevel"] = 0; } return $row[0]["gmlevel"]; } else { return 0; } } /** * Check if an username exists * @param String $username * @return Boolean */ public function usernameExists($username) { $this->connect(); $count = $this->connection->from(table("account"))->where(array(column("account", "username") => $username))->count_all_results(); if($count) { return true; } else { return false; } } /** * Get total amount of accounts * @return Int */ public function getAccountCount() { $this->connect(); $query = $this->connection->query("SELECT COUNT(*) as 'total' FROM ".table("account")); $row = $query->result_array(); return $row[0]['total']; } /** * Check if an user id exists * @param Int $id * @return Boolean */ public function userExists($id) { $this->connect(); $count = $this->connection->from(table("account"))->where(array(column("account", "id") => $id))->count_all_results(); if($count) { return true; } else { return false; } } /** * Check if an email exists * @param String $email * @return Boolean */ public function emailExists($email) { $this->connect(); $count = $this->connection->from(table("account"))->where(array(column("account", "email") => $email))->count_all_results(); if($count) { return true; } else { return false; } } /* | ------------------------------------------------------------------- | Setters | ------------------------------------------------------------------- */ public function setUsername($oldUsername, $newUsername) { $this->connect(); $this->connection->where(column("account", "username"), $oldUsername); $this->connection->update(table("account"), array(column("account", "username") => $newUsername)); } public function setPassword($username, $newPassword) { $this->connect(); $this->connection->where(column("account", "username"), $username); if(column("account", "v") && column("account", "s") && column("account", "sessionkey")) { $this->connection->update(table("account"), array( column("account", "v") => "", column("account", "s") => "", column("account", "sessionkey") => "", column("account", "password") => $newPassword ) ); } else { $this->connection->update(table("account"), array(column("account", "password") => $newPassword)); } } public function setEmail($username, $newEmail) { $this->connect(); $this->connection->where(column("account", "username"), $username); $this->connection->update(table("account"), array(column("account", "email") => $newEmail)); } public function setExpansion($username, $newExpansion) { $this->connect(); $this->connection->where(column("account", "username"), $username); $this->connection->update(table("account"), array(column("account", "expansion") => $newExpansion)); } public function setRank($userId, $newRank) { $this->connect(); $this->connection->where(column("account", "id"), $userId); $this->connection->update(table("account_access"), array(column("account_access", "gmlevel") => $newRank)); } /* | ------------------------------------------------------------------- | Getters | ------------------------------------------------------------------- */ public function getId($username = false) { if(!$username) { return $this->id; } else { $this->connect(); $this->connection->select(column("account", "id", true))->from(table("account"))->where(column("account", "username"), $username); $query = $this->connection->get(); if($query->num_rows() > 0) { $result = $query->result_array(); return $result[0]["id"]; } else { //Return id 0 return false; } } } /** * Get the username * @param Int $id * @return String */ public function getUsername($id = false) { if(!$id) { return $this->username; } else { $this->connect(); $this->connection->select(column("account", "username", true))->from(table("account"))->where(array(column("account", "id") => $id)); $query = $this->connection->get(); if($query->num_rows() > 0) { $result = $query->result_array(); return $result[0]["username"]; } else { return "Unknown"; } } } /** * Get the username * @param Int $id * @return String */ public function getInfo($id = false, $fields = "*") { if(!$id) { $id = $this->id; } if($fields != "*" && !is_array($fields)) { $fields = preg_replace("/ /", "", $fields); $fields = explode(",", $fields); $fields = columns("account", $fields); } $this->connect(); $this->connection->select($fields)->from(table("account"))->where(array(column("account", "id") => $id)); $query = $this->connection->get(); if($query->num_rows() > 0) { $result = $query->result_array(); return $result[0]; } else { return false; } } public function getShaPassHash() { return $this->sha_pass_hash; } public function getEmail($id = false) { if($id == false) { return $this->email; } else { // Check if it has been loaded already if(array_key_exists($id, $this->account_cache)) { return $this->account_cache[$id]['email']; } else { $this->connect(); $this->connection->select(column("account", "username", true).','.column("account", "email").','.column("account", "joindate"))->from(table("account"))->where(array(column("account", "id") => $id)); $query = $this->connection->get(); if($query->num_rows() > 0) { $result = $query->result_array(); $this->account_cache[$id] = $result[0]; return $result[0]["email"]; } else { $this->account_cache[$id]["email"] = false; return false; } } } } public function getJoinDate() { return $this->joindate; } public function getLastIp() { return $this->last_ip; } public function getExpansion() { return $this->expansion; } }
Je n'ai pas créé moi même cette partie du site. Mes compétences ne me le permettent pas malheureusement.
Je suis désolé si je ne donne pas les bons fichiers :s -
Dans la fonction connect, entouré cette partie par un try catch
$this->connection = $this->load->database("account", true);
-
-
-
A priori j'ai une erreur de syntace et j'arrive pas à comprendre pourquoi.
La ligne en question :catch (Response.Redirect("maintenance.html"));
Rappel de la fonction complète :public function connect() { if(empty($this->connection)) { try { $this->connection = $this->load->database("account", true); } catch (Response.Redirect("maintenance.html")); } } -
-
-
-
public function connect()
{
if(empty($this->connection))
{
try
{
$this->connection = $this->load->database("account", true);
}
catch ()
{
Response.Redirect("maintenance.html")
}
}
}
et dans les parenthèses du catch il faut mettre l'exception qui est levé lorsqu'il y a un problème de connexion.