PDO showing connection data if trigger of catch within the alert (result)

3

Because in my% ajax%, the catch of alert(result) is showing my connection information to the database as shown in the following image: link

Code:

    $pdo = new PDO("mysql:host=localhost; dbname=meubanco", "meuuser", "minhasenha");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = $pdo->prepare("INSERT INTO wp_contatos VALUES ('', :nome, :email, :message, :data)");
    try {
        $sql->execute(array(
            "nome"      => $_POST['nome'],
            "email"     => $_POST['email'],
            "message"   => $_POST['message'],
            "data"      => date("Y-m-d h:i:s")
        ));

        $resposta = "Sua solicitação foi recebida com sucesso. Em breve entraremos em contato.";

    } catch(PDOException $e) {

        $resposta = "Sua solicitação não foi recebida com sucesso. Favor entrar em contato pelo telefone 0800";

    }

    echo $resposta;

}
    
asked by anonymous 30.08.2014 / 20:49

1 answer

4

Verify your user and database passwords. They may be wrong.

$pdo = new PDO("mysql:host=localhost; dbname=meubanco", "meuuser", "minhasenha");

To ensure that connection information is not displayed, it is recommended that you turn off error_reporting on the production server

You can do this from the file php.ini by changing the display_error for off

display_errors = off

Or directly via code, with the function error_reporting .

<?php

error_reporting(0);

Another thing you can do to avoid the error message is to put the connection to the bank inside the block try :

    try {
        $pdo = new PDO("mysql:host=localhost; dbname=meubanco", "meuuser", "minhasenha");
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $sql = $pdo->prepare("INSERT INTO wp_contatos VALUES ('', :nome, :email, :message, :data)");

        $sql->execute(array(
            "nome"      => $_POST['nome'],
            "email"     => $_POST['email'],
            "message"   => $_POST['message'],
            "data"      => date("Y-m-d h:i:s")
        ));

        $resposta = "Sua solicitação foi recebida com sucesso. Em breve entraremos em contato.";

    } catch(PDOException $e) {
        $resposta = "Sua solicitação não foi recebida com sucesso. Favor entrar em contato pelo telefone 0800";
    }

    echo $resposta;
}

In this case the exception message will be displayed.

    
30.08.2014 / 20:54