PHP безопасное соединение с базой данных - PullRequest
0 голосов
/ 07 июня 2018

Мой корневой каталог веб-сервера хостинга - / public_html, я создал папку на том же уровне, что и public_html (/ private), и создал файл .ini, содержащий информацию для входа в мою базу данных, как я видел в этом уроке

https://teamtreehouse.com/community/how-do-you-store-your-mysql-user-credentials-in-a-secure-way

поэтому моя структура папок выглядит следующим образом

 /
  |
  -private
  |   |
  |   -db.ini
  -public_html
      |
      -website files
      -mailer.php

Я использую grecaptcha.Я хочу проверить, нет ли ботов, использующих мою форму, отправить уведомление по электронной почте на мою электронную почту и, наконец, сохранить информацию о клиенте в небольшой базе данных.Моя grecaptcha работает нормально, электронная почта отправляется, у меня проблема с получением информации в моей базе данных.

 <?php
// Checks if form has been submitted
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    function post_captcha($user_response) {
        $fields_string = '';
        $fields = array(
            'secret' => 'USERINFO',
            'response' => $user_response
        );
        foreach($fields as $key=>$value)
        $fields_string .= $key . '=' . $value . '&';
        $fields_string = rtrim($fields_string, '&');

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 
'https://www.google.com/recaptcha/api/siteverify');
        curl_setopt($ch, CURLOPT_POST, count($fields));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);

        $result = curl_exec($ch); 
        curl_close($ch);

        return json_decode($result, true);
    }

    // Call the function post_captcha
    $res = post_captcha($_POST['g-recaptcha-response']);

    if (!$res['success']) {

          $output = json_encode(array('success' => false));
          die($output);

    } else {

        if($_POST) {
            $to = "admin@tremecji.com"; // your mail here
            $name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
            $email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
            $phone = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);
            $message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);
            $subject = "$name pregunta desde tremeji.com";
            $body = "Mensaje enviado de pagina tremecji.com\nMENSAJE: $message\nE-MAIL: $email\NUMERO DE CONTACTO: $phone";

            if(@mail($to, $subject, $body)) {

                 //db connection  ==================================================
                 //$mysqli = new mysqli('host','user','password','db');  <--- this used to work 

                $mydb = parse_ini_file('../private/db.ini');
                $mysqli = new mysqli( $mydb['servername'],$mydb['username'], $mydb['password'], $mydb['dbname']);


                // revision de conneccion
                if( $mysqli -> connect_error ){
                    die( 'Connec error: ' . $mysqli->connect_error . ': ' .$mysqli->connect_error );
                }

                 // insert data 
                 $sql = "INSERT INTO clientes (nombre, email, telefono ) VALUES('{$mysqli->real_escape_string($_POST['name'])}', '{$mysqli->real_escape_string($_POST['email'])}', '{$mysqli->real_escape_string($_POST['telefono'])}'";
                $insert = $mysqli->query($sql);


                 $mysqli->close();
                 $output = json_encode(array('success' => true));
                 die($output);
             }
         }

    }
}

Раньше она работала до того, как я попытался защитить свою регистрационную информацию, я попытался изменить путьв мой файл db.ini безуспешно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...