shell bypass 403
<?php
/**
*
**************************************************************************************
* 14/04/2010
* ARCHIVO PARA CONEXION BBDD
*
* 01/09/2017 - Víctor Velasco
* Cambios de conexión
**************************************************************************************
*
*/
/*
if (empty($MYSQL_LINK)) {
$MYSQL_LINK=mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD) or die(mysql_error());
mysql_select_db($MYSQL_DB) or die(mysql_error());
@mysql_query("SET NAMES 'utf8'"); // Evita los problemas con como se ve los caracteres no-ascii introducidos desde formulario y el phpMyAdmin
}
*/
/**
* Gestiona con OOP la conexión a base de datos
*
* @author Víctor Velasco <v.velasco@interactivaclic.com>
* @see https://www.binpress.com/tutorial/using-php-with-mysql-the-right-way/17
*/
class Database {
protected static $_link;
public $last_result;
/**
* Conecta
*
* @return bool false si falla / mysqli MySQLi object si va bien
*/
public function connect() {
global $MYSQL_HOST,$MYSQL_USER,$MYSQL_PASSWORD,$MYSQL_DB;
if (!isset(self::$_link)) {
self::$_link = new mysqli($MYSQL_HOST,$MYSQL_USER,$MYSQL_PASSWORD,$MYSQL_DB);
}
if (self::$_link === false) {
return false;
}
return self::$_link;
}
/**
* Consulta
* @param $query Consulta SQL
* @return mixed El resultado de la función mysqli::query()
*/
public function query($query) {
if ($_link = $this->connect()) {
$this->last_result = $_link->query($query);
return $this->last_result;
} else {
return false;
}
}
public function insert_id() {
if ($_link = $this->connect()) {
return $_link->insert_id;
} else {
return false;
}
}
public function num_rows($result = false) {
if (!$result) {
$result = $this->last_result;
}
return $result ? $result->num_rows : 0;
}
public function has_results($result = false) {
if (!$result) {
$result = $this->last_result;
}
return $result && $this->num_rows($result) > 0;
}
public function fetchColumn($result = false, $column = 0) {
if (!$result) {
$result = $this->last_result;
}
if (!$result) return false;
$row = $result->fetch_row();
if (!$row) return false;
return $row[$column];
}
public function fetch($result = false) {
if (!$result) {
$result = $this->last_result;
}
return $result->fetch_assoc();
}
public function fetch_all($result = false) {
if (!$result) {
$result = $this->last_result;
}
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
return $rows;
}
/**
* Devuelve el último error que se ha generado
* @return string Mensaje de error de la base de datos
*/
public function error() {
if ($_link = $this->connect()) {
return $_link->error;
} else {
return false;
}
}
/**
* Escapa e introduce entre comillas los valores a introducir en la base de datos
* @param string $value El valor a escapar y entrecomillar
* @return string El valor resultante
*/
public function quote($value) {
if ($_link = $this->connect()) {
return "'" . $this->escape($value) . "'";
} else {
return "'" . $value . "'";
}
}
/**
* Escapa los valores a introducir en la base de datos
* @param string $value El valor a escapar
* @return string El valor resultante
*/
public function escape($value) {
if ($_link = $this->connect()) {
return $_link->real_escape_string($value);
} else {
return $value;
}
}
public function affected_rows() {
if ($_link = $this->connect()) {
return $_link->affected_rows;
} else {
return 0;
}
}
public function close() {
if (isset(self::$_link)) {
self::$_link->close();
}
}
}