PHP - Excepciones, grabar errores en una base de datos, seguridad de variables sencibles

 
Vista:

Excepciones, grabar errores en una base de datos, seguridad de variables sencibles

Publicado por milena (1 intervención) el 21/08/2018 22:40:52
Hola, como estan?
Estoy empezando a estudiar PHP y estamos viendo programación orientada a objetos, tengo un ejercicio por realizar el cual no he logrado entender y desarrollar correctamente. Si alguien me puede dar una luz se los agradezco.
1. Necesito configurar un sistema para manejar los diferentes tipos de errores: en esta parte yo cree una clase de excepción personalizada "MyException", de esta manera.

1
2
3
4
5
6
7
8
9
10
11
class MyException extends Exception
{
 
  public function __construct($message, $code = 0, Exception $previous = null) {
 
    parent::__construct($message, $code, $previous);
 
if (!isset($_POST['message'])) {
  throw new MyException('Vous devez inclure message');
}
?>

2. Debo Levantar las excepciones a los lugares relevantes: Aca lo que hice fue en mi codigo, despues de una funcion que tengo para adjuntar un mensaje intente lanzar mi excepcion pero no me funciona. Nose si lo lance en el lugar correcto o debo lanzarlos en donde cree la clase y funcion adjuntarmensage.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public function ajouterMessage() {
 
    $db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
 
 
    if ($db->connect_errno > 0) {
        printf("Erreur de connexion: %s\n", $db->connect_error);
        exit();
    }
 
 
    // Validar si se lleno casilla de mensage
 
    if (empty($this->message)) {
      echo "Vous devez inclure message";
      try {
      throw new MyException('Vous devez inclure message');
      } catch (MyException $e) {
       echo 'Caught exception: ',  $e->getMessage(), "\n";
     }
    }
 
    $stmt = $db->prepare("INSERT INTO message (message, date_ajout) VALUES(?, ?);");
 
    $stmt->bind_param("ss", $this->message, $this->date);
 
    $stmt->execute();

3. Estos errores debo ingrarlos en la base de datos, es decir, la función de conecxion tendrá que ser llamada y lanzar las excepciones personalizadas: Aca ya agrege un método a la clase "MyException", que permite guardar el mensaje de error y la fecha en una tabla de la base de datos creada para esta ocasión, de esta manera... pero nose si es correcto y tampoco entiendo donde deberia lanzarla... Debo acer que este método comience automáticamente a crear instancias de la clase.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public function enregistremessage() {
 
    $db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    $stmt = $db->prepare("INSERT INTO erreurs (message_erreur	, date_erreur) VALUES(?, ?);");
    $stmt->bind_param("ss", $this->message, $this->date);
    $stmt->execute();
    if ($stmt->errno != 0) {
      echo $stmt->error;
    }
 
 
    $db->close();
 
 
    $this->date = NULL;
    $this->message = NULL;
 
  }
}


como ven estoy muy perdida y hevisto tutoriales y videos pero no logro desarrollarlo...

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder