Je suis débutant et je fais mon premier site web en PHP et MVC et je fais un système de login et inscription et j'aimerai récupérer mes echo "Username already taken"; etc et les afficher sans ouvrir une autre page , j'utilise donc XMLHttpRequest .
const form = document.querySelectorAll(".form-container form");
const continueBtn = document.querySelectorAll(".login-connect");
const errorText = document.querySelectorAll(".error-message");
for (let i = 0; i < form.length; i++) {
form[i].onsubmit = (e)=> {
e.preventDefault();
}
}
for (let i = 0; i < continueBtn.length; i++) {
continueBtn[i].addEventListener("click", function() {
let xhr = new XMLHttpRequest();
xhr.open("POST", "../../index.php", true);
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
let data = this.responseText;
if(data == "success") {
location.href = "../../view/frontend/home.php"
}
else {
for (let i = 0; i < errorText.length; i++) {
errorText[i].textContent = data;
errorText[i].style.display = "block";
}
}
}
};
let formData = new FormData(form[i]);
xhr.send(formData);
});
}
Je renvoie le POST a mon index.php qui contient ma class controler qui lui même contient les class model :
mon index est celui quand mon form transmettais les $_POST a mon home.php?action=register
maintenant que j'utilise xmlHttpRequest je ne sais pas comment écrire mon index
<?php
require_once("C:/MAMP/htdocs/ProjetSheep/model/SignupManager.php");
require_once("C:/MAMP/htdocs/ProjetSheep/model/LoginManager.php");
function homePage() {
header('Location: view/frontend/home.php');
}
// REGISTER ACCOUNT
function registerAccount($username, $email, $password, $passwordConfirm) {
$accountManager = new AccountManager();
$signupUser = $accountManager->signupUser($username, $email, $password, $passwordConfirm);
if ($signupUser === false) {
echo "Fail to signup";
exit();
}
else {
header('Location: view/frontend/home.php');
}
}
// LOGIN USER
function logUser($email, $password) {
$loginManager = new LoginManager();
$logedUser = $loginManager->getUser($email, $password);
if($logedUser === false) {
echo "Fail to login";
exit();
}
else {
header('Location: view/frontend/home.php');
}
}
J'aimerai que quand un utilisateur entre un nom d'utilisateur qui existe déja , que mon echo "Username already taken" s'affiche dans ma class errorText sauf que je ne sais pas comment écrire mon index car quand je l'écrit comme cela si je suis sur la page home.php cela fonctionne
j'ai pas tout écrit voici ce que j'obtiens en réponse .
Je suis bloqué je ne sais pas comment afficher "Username already taken" sur ma page home.php quand on appuye sur le boutton s'enregistrer cela ouvre mon formulaire sur la même page avec du JS mais je ne sais pas comment faire pour afficher mes erreurs sur cette même page sans ouvrir une autre page .
Je ne sais pas comment écrire mon index.php correctement..