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.
A voir également:
- Rediriger vers une page de maintenance si problème
- Supprimer une page word - Guide
- Rediriger une adresse mail vers une autre - Guide
- Imprimer tableau excel sur une page - Guide
- Comment traduire une page internet - Guide
- Créer une page facebook - Guide
8 réponses
Bonjour,
tu as surement un try catch entourant ta connexion a ta database. Dans le catch tu mets ta redirection.
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 :)
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 :
A la ligne 68 qui est celle-ci :
Je ne sais pas trop si ça suffira ou si je dois donner d'autres informations ?
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
Alors voici le fichier complet pour la connexion
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
<?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);
$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 :
Rappel de la fonction complète :
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"));
}
}