@vlone424

Не могу понять, где я совершил ошибку при подключении к базе данных. Как исправить?

Создал форму регистрации, после того, как заполняю ее и жму кнопу 'зарегестрироваться' вылетает ошибка "HTTP ERROR 500".
<?php
  $username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
  $email = trim(filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
  $login = trim(filter_var($_POST['login'], FILTER_SANITIZE_STRING));
  $pass = trim(filter_var($_POST['pass'], FILTER_SANITIZE_STRING));

  if(strlen($username) <=3 )
  exit();
else if(strlen($email) <=3 )
  exit();
  else if(strlen($login) <=3 )
  exit();
else if(strlen($pass) <=3 )
  exit();


$hash = 'asdasdasdasda123123gkkg'
$pass = md5($pass . $hash);

$user = 'root';
$password = 'root';
$db = 'testing';
$host = 'localhost';
$port = 3306;


$dsn = 'mysql:host='.$host.';dbname ='.$db;
$pdo = new PDO($dsn, $users, $password);
$sql = 'INSERT INTO user(name, email, login, pass) VALUES(?, ?, ?, ?)';
$query = $pdo->prepare($sql);
$query->execute([$username, $email, $login, $pass]);
?>


А вот как выглядить сама форма регистрации

<!DOCTYPE html>
<html lang="ru" dir="ltr">
  <head>
    <?php
      $website_title = 'Регистрация на сайте';
      require 'blocks/head.php';
    ?>
  </head>
  <body>
      <?php require 'blocks/header.php'; ?>

    <main class="container mt-5">
            <div class="row">
                <div class="col-md-8">
                  <h4>Форма регистрации</h4>
                  <form action="reg/reg.php" method="post">
                    <label for="username">Ваше Имя</label>
                    <input type="text" name="username" id="username" class="form-control">

                    <label for="email">Email</label>
                    <input type="email" name="email" id="email" class="form-control">

                    <label for="login">Логин</label>
                    <input type="text" name="login" id="login" class="form-control">

                    <label for="pass">Пароль</label>
                    <input type="password" name="pass" id="pass" class="form-control">

                    <button type="submit" class="btn btn-success mt-5">
                      Зарегестрироваться
                    </button>
                  </form>
                </div>

                <?php require 'blocks/aside.php'; ?>
            </div>
    </main>
      <?php require 'blocks/footer.php'; ?>
  </body>
</html>
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
@i-yard
Скорее всего косяк не в коде, а как вариант проблемы с базой данных

Посмотри:
Из-за чего показывается ошибка 500 и как исправляется
Неправильно выставлены права доступа на директории сайта и/или их файлы. Это ваш недосмотр или неведение, но ошибки сервера в этом случае имеют место быть. Если на файлы, написанные на php и размещенные на вашем хостинге, установлены права на запись 777, то скрипты могут блокироваться сервером и не выполняться. Вам, соответственно, браузер покажет ошибку 500. Хотя все в этом случае зависит от настроек хостера. Поэтому выбирайте надежного партнера, с весомыми рекомендациями. Случаться эта неприятность может, потому что права доступа 777 позволяют всем пользователям аккаунта проводить любые операции с файлами и папками, что очень сильно влияет на целостность вашего веб-ресурса и его безопасность. Оградить себя от этого может только единоличное управление своим аккаунтом – не давайте никому доступ в корневые папки сайтов!
Как можно решить: Необходимо проверить права доступа на запись всех папок и файлов ваших сайтов. Для папок (директорий) рекомендуется выставлять права доступа 755, для исполняемых скриптов – права доступа 600, а для остальных файлов – права 644. Если нужно установить права 777, то поставщик заранее предупреждает об этом.

Скрипт очень долго выполняется, вследствие чего тоже может появиться код ошибки 500 внутренняя ошибка сервера. На любом хостинге есть ограничения не только по времени исполнения скриптов, но и запреты на исполнение со стороны сервера. И, если сервер не получит ответ в определенный промежуток времени, которое устанавливается в его конфигурации, то работа скрипта завершится в принудительном порядке. Результат такого обрыва — сообщение об ошибке сервера 500.
Как можно решить: Попробуйте оптимизировать скрипт. Найти медленно работающий скрипт несложно – для этого есть специальные сервисы. Еще одно решение – увеличение времени ожидания сервера. Но оно возможно только в том случае, если вы заказали VPS или выделенный сервер, а на обычном виртуальном хостинге это сделать не получится. Разве что техподдержка сделает для вас исключение.

Файл настроек .htaccess может содержать неправильные директивы или такие правила, которые не поддерживаются вашим сервером. Файл .htaccess пишется в очень строгих рамках, и если вы при его настройке допустили какие-то ошибки, то в результате обязательно получите ошибку 500 Internal Server Error. На продвинутых хостингах файл .htaccess предлагается хостером, и ошибок в нем быть не может, если только вы сами их туда не впишете.
Как можно решить: Убедитесь в наличии файла .htaccess. Он должен лежать в корневой директории вашего сайта. Если он есть, сделайте резервную копию файла и удалите его совсем. Сайт без файла .htaccess отлично работает, и если так и случилось – значит, виноват файл, его нужно корректировать или попросить хостера дать новый файл.

Также вы можете изучить логи сервера – в вашей панели управления должна быть такая функция. Все сведения об ошибках записываются в специальный журнал, и вы можете увидеть, когда произошла ошибка и что ее вызвало. Если в файле .htaccess указана неправильная директива, то в файле error.log вы увидите приблизительно такие строчки:

[Wed May 15 19:11:50 2013] [alert] [client 219.18.17.18] /home/UXXXXX/vash-sait.ru/www/.htaccess: Invalid command 'RewritRule', perhaps mis-spelled or defined by a module not included in the server configuration
То есть, в этом сообщении вы увидите, какая директива вызывает ошибку. В нашем примере это директива RewritRule – такой директивы просто не существует. Есть директива RewriteRule, но в нашем примере пропущена одна буква, поэтому сервер отвечает ошибкой.

Скрипт очень большой или многофункциональный, поэтому для его работы нужно большое количество памяти. Такая причина может возникнуть на виртуальном хостинге, где в php настройках сайта устанавливается лимит памяти, а также отслеживается общий объем памяти, потребляемой всеми скриптами и файлами. Если потребление памяти превышает установленный лимит (смотрите свой тарифный план на хостинге), то работа скрипта прекращается и вы получаете долгожданное сообщение error 500 внутренняя ошибка сервера. Устанавливается такое ограничение для того, чтобы предупредить появление повышенной нагрузки на сервер со стороны аккаунтов виртуального хостинга.
Как можно решить: обратитесь в службу технической поддержки хостинга. Если они не помогут устранить ошибку 500 — меняйте хостинг.

На этом все. Есть еще множество причин возникновения ошибки 500, но их можно перечислять на нескольких страницах. Да и возникают они очень редко, а если у вас надежный хостинг, то вы вообще забудете, что такое ошибка 500.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы