You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML表单数据存入MySQL遇HTTP ERROR 405错误求助

解决表单提交出现HTTP ERROR 405的问题

HTTP 405错误表示服务器不允许使用当前请求方法(此处为POST)访问目标资源,结合你的代码,可能的原因和解决方法如下:

1. 检查PHP文件路径是否正确

确保applications.php文件和你的HTML表单页面在同一目录下,若不在同一目录,需修正表单的action属性为正确的相对路径或绝对路径。比如PHP文件在api子目录下,应改为:

<form class="form__filling contacts" action="api/applications.php" method="post">

2. 确认服务器配置支持PHP和POST请求

  • 检查服务器(如Apache、Nginx)是否正确配置了PHP解析模块,若未配置,服务器会将PHP文件作为静态文件返回,无法处理POST请求。
  • 排查服务器是否有拦截POST请求的规则:比如.htaccess文件中的限制、安全插件(如ModSecurity)的拦截策略,可暂时关闭相关规则测试是否恢复正常。

3. 修正表单输入控件的错误用法

你当前使用<textarea>收集姓名、电话、邮箱,不符合常规输入场景,建议替换为对应的<input>类型(虽不是405错误直接原因,但可避免潜在输入格式问题):

<div class="contacts__container flex">
  <label class="contacts__label" for="name" >
    <input class="contacts__input" type="text" name="name" placeholder="Введите ваше имя" id="name">
  </label>

  <label class="contacts__label" for="phone">
    <input class="contacts__input form__input" type="tel" name="phone" id="phone" placeholder="Введите ваш телефон">
  </label>

  <label class="contacts__label form__label" for="email" >
    <input class="contacts__input form__input" type="email" name="email" id="email" placeholder="Введите ваш email">
  </label>
</div>

4. 修复PHP代码的SQL注入漏洞(关键)

你的PHP代码直接将用户输入拼接到SQL语句中,存在严重SQL注入风险,同时可能因特殊字符导致SQL执行错误。改用预处理语句重构代码:

<?php
// Подключение к базе данных
$servername = "localhost";
$username = "root";
$password = "admin";
$dbname = "englishTochka";

$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка подключения
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 检查是否为POST请求
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    die("Недопустимый метод запроса");
}

// 获取并过滤表单数据
$name = trim($_POST['name'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$email = trim($_POST['email'] ?? '');

// 使用预处理语句插入数据
$sql = "INSERT INTO applications (timestamp, name, phone, email) VALUES (NOW(), ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $name, $phone, $email);

if ($stmt->execute()) {
    echo "Запись успешно сохранена";
} else {
    echo "Ошибка: " . $stmt->error;
}

// 关闭资源
$stmt->close();
$conn->close();
?>

内容的提问来源于stack exchange,提问作者byuHblu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:25:29