Сделал авторизацию на сайте (две формы на странице которые переключаются с помощью двух кнопок и JS) и всё работает, на первый взгляд. Прикол в том, что при авторизации с использованием правильных данных, на сервер приходит пустая форма (абсолютно без ключей и значений), но с если написать неправильный логин либо пароль то всё ок, все поля доходят и сервер выдаёт ошибку. Код на сервере:
<?php
ini_set("display_errors", true);
echo "<pre>REQUEST_METHOD: " . $_SERVER["REQUEST_METHOD"] . "\nGET: " . var_export($_GET, true) . "\nPOST: " . var_export($_POST, true) . "\nCOOKIE: " . var_export($_COOKIE, true) . "</pre>";
// Код
if (empty($_POST["type"])) {
echo "Чтобы пост не был слишком большим, я написал этот код в конце, полученный пользователем.";
} else if ($_POST["type"] == "login") {
// Проверки
} else if ($_POST["type"] == "register") {
// Проверки
} else {
echo "То же самое что и выше, но с особым сообщением в div.";
}
Приходит пользователю когда ещё ничего не отправил:
<pre>REQUEST_METHOD: GET
GET: array (
'page' => 'auth',
)
POST: array (
)
COOKIE: array (
)</pre><html lang="ru">
<head>
<meta charset="utf-8">
<title>Мессенджер для Неки́тки</title>
<style type="text/css" media="handheld, print">
@media (orientation: landscape) {
}
@media (orientation: portrait) {
}
</style>
<style type="text/css" media="screen, tv">
</style>
</head>
<form method="post" id="auth_form">
<input type="hidden" name="type" value="login">
<input type="text" name="login" placeholder="Ваш логин" required><br>
<input type="password" name="password" placeholder="Ваш пароль" required><br>
<input type="submit" value="Войти">
</form>
<br></br>
<div id="set_type_login" onclick="setFormType('login')" style="display: none;">Войти в аккаунт</div>
<div id="set_type_register" onclick="setFormType('register')">Создать аккаунт</div>
<script type="text/javascript">
function setFormType(type) {
if (type == "register") {
document.getElementById("set_type_login").style.display = "block";
document.getElementById("set_type_register").style.display = "none";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"register\">\n <input type=\"text\" name=\"name\" placeholder=\"Придумайте имя\" required><br>\n <input type=\"text\" name=\"login\" placeholder=\"Придумайте логин (не обязательно)\"><br>\n <input type=\"text\" name=\"password\" placeholder=\"Придумайте пароль\" required><br>\n <input type=\"submit\" value=\"Создать\">\n </form>";
} else if (type == "login") {
document.getElementById("set_type_login").style.display = "none";
document.getElementById("set_type_register").style.display = "block";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"login\">\n <input type=\"text\" name=\"login\" placeholder=\"Ваш логин\" required><br>\n <input type=\"password\" name=\"password\" placeholder=\"Ваш пароль\" required><br>\n <input type=\"submit\" value=\"Войти\">\n </form>";
}
}
</script>
</html>
Приходит если ввести правильный логин и пароль:
<pre>REQUEST_METHOD: GET
GET: array (
'page' => 'auth',
)
POST: array (
)
COOKIE: array (
)</pre><html lang="ru">
<head>
<meta charset="utf-8">
<title>Мессенджер для Неки́тки</title>
<style type="text/css" media="handheld, print">
@media (orientation: landscape) {
}
@media (orientation: portrait) {
}
</style>
<style type="text/css" media="screen, tv">
</style>
</head>
<form method="post" id="auth_form">
<input type="hidden" name="type" value="login">
<input type="text" name="login" placeholder="Ваш логин" required><br>
<input type="password" name="password" placeholder="Ваш пароль" required><br>
<input type="submit" value="Войти">
</form>
<br></br>
<div id="set_type_login" onclick="setFormType('login')" style="display: none;">Войти в аккаунт</div>
<div id="set_type_register" onclick="setFormType('register')">Создать аккаунт</div>
<script type="text/javascript">
function setFormType(type) {
if (type == "register") {
document.getElementById("set_type_login").style.display = "block";
document.getElementById("set_type_register").style.display = "none";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"register\">\n <input type=\"text\" name=\"name\" placeholder=\"Придумайте имя\" required><br>\n <input type=\"text\" name=\"login\" placeholder=\"Придумайте логин (не обязательно)\"><br>\n <input type=\"text\" name=\"password\" placeholder=\"Придумайте пароль\" required><br>\n <input type=\"submit\" value=\"Создать\">\n </form>";
} else if (type == "login") {
document.getElementById("set_type_login").style.display = "none";
document.getElementById("set_type_register").style.display = "block";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"login\">\n <input type=\"text\" name=\"login\" placeholder=\"Ваш логин\" required><br>\n <input type=\"password\" name=\"password\" placeholder=\"Ваш пароль\" required><br>\n <input type=\"submit\" value=\"Войти\">\n </form>";
}
}
</script>
</html>
Приходит если ввести неправильный логин:
<pre>REQUEST_METHOD: POST
GET: array (
'page' => 'auth',
)
POST: array (
'type' => 'login',
'login' => 't',
'password' => 'test',
)
COOKIE: array (
)</pre><html lang="ru">
<head>
<meta charset="utf-8">
<title>Мессенджер для Неки́тки</title>
<style type="text/css" media="handheld, print">
@media (orientation: landscape) {
}
@media (orientation: portrait) {
}
</style>
<style type="text/css" media="screen, tv">
</style>
</head>
<div>Нет аккаунта с таким логином!</div>
<form method="post" id="auth_form">
<input type="hidden" name="type" value="login">
<input type="text" name="login" placeholder="Ваш логин" required><br>
<input type="password" name="password" placeholder="Ваш пароль" required><br>
<input type="submit" value="Войти">
</form>
<br></br>
<div id="set_type_login" onclick="setFormType('login')" style="display: none;">Войти в аккаунт</div>
<div id="set_type_register" onclick="setFormType('register')">Создать аккаунт</div>
<script type="text/javascript">
function setFormType(type) {
if (type == "register") {
document.getElementById("set_type_login").style.display = "block";
document.getElementById("set_type_register").style.display = "none";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"register\">\n <input type=\"text\" name=\"name\" placeholder=\"Придумайте имя\" required><br>\n <input type=\"text\" name=\"login\" placeholder=\"Придумайте логин (не обязательно)\"><br>\n <input type=\"text\" name=\"password\" placeholder=\"Придумайте пароль\" required><br>\n <input type=\"submit\" value=\"Создать\">\n </form>";
} else if (type == "login") {
document.getElementById("set_type_login").style.display = "none";
document.getElementById("set_type_register").style.display = "block";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"login\">\n <input type=\"text\" name=\"login\" placeholder=\"Ваш логин\" required><br>\n <input type=\"password\" name=\"password\" placeholder=\"Ваш пароль\" required><br>\n <input type=\"submit\" value=\"Войти\">\n </form>";
}
}
</script>
</html>
Приходит если ввести неправильный пароль:
<pre>REQUEST_METHOD: POST
GET: array (
'page' => 'auth',
)
POST: array (
'type' => 'login',
'login' => 'test',
'password' => 't',
)
COOKIE: array (
)</pre><html lang="ru">
<head>
<meta charset="utf-8">
<title>Мессенджер для Неки́тки</title>
<style type="text/css" media="handheld, print">
@media (orientation: landscape) {
}
@media (orientation: portrait) {
}
</style>
<style type="text/css" media="screen, tv">
</style>
</head>
<div>Неправильный пароль!</div>
<form method="post" id="auth_form">
<input type="hidden" name="type" value="login">
<input type="text" name="login" placeholder="Ваш логин" required><br>
<input type="password" name="password" placeholder="Ваш пароль" required><br>
<input type="submit" value="Войти">
</form>
<br></br>
<div id="set_type_login" onclick="setFormType('login')" style="display: none;">Войти в аккаунт</div>
<div id="set_type_register" onclick="setFormType('register')">Создать аккаунт</div>
<script type="text/javascript">
function setFormType(type) {
if (type == "register") {
document.getElementById("set_type_login").style.display = "block";
document.getElementById("set_type_register").style.display = "none";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"register\">\n <input type=\"text\" name=\"name\" placeholder=\"Придумайте имя\" required><br>\n <input type=\"text\" name=\"login\" placeholder=\"Придумайте логин (не обязательно)\"><br>\n <input type=\"text\" name=\"password\" placeholder=\"Придумайте пароль\" required><br>\n <input type=\"submit\" value=\"Создать\">\n </form>";
} else if (type == "login") {
document.getElementById("set_type_login").style.display = "none";
document.getElementById("set_type_register").style.display = "block";
document.getElementById("auth_form").innerHTML = "<form method=\"post\" id=\"auth_form\">\n <input type=\"hidden\" name=\"type\" value=\"login\">\n <input type=\"text\" name=\"login\" placeholder=\"Ваш логин\" required><br>\n <input type=\"password\" name=\"password\" placeholder=\"Ваш пароль\" required><br>\n <input type=\"submit\" value=\"Войти\">\n </form>";
}
}
</script>
</html>
P.s.Пробовал запускать и на локалке, и на сервере, даже просил протестить друга, но это ничего не дало.
P.s.s.Хочу заранее сказать, код идущий до if ни коим образом не трогает переменную $_POST.
P.s.s.s.Не предлагайте мне средства отладки/отлова ошибок в PHP, посмотрите код и поймите что в нём их нет (а если всё таки есть, то сообщите об этом).
P.s.s.s.s.Спустя несколько часов махинаций, я понял что при отправке именно ПРАВИЛЬНОГО логина и ПРАВИЛЬНОГО пароля, post почему-то превращается в get (но с неправильным логином/паролем и при регистрации всё нормально работает)...