Programmation Plugin Erreur 403 Forbidden

Bonjour,

Pour les connaisseurs, je sens que la question va être simple, mais pour moi je sèche et je ne vois pas la solution.

J’ai bien ce script dans mon javascript Projote.js:

// Ajout de l'événement de clic sur le bouton de validation
$('#bt_Validate').on('click', function () {
  // Exécution de la requête AJAX
  $.ajax({
    type: "POST", // Méthode de transmission des données au fichier php
    url: "/plugins/Projote/core/ajax/Projote.ajax.php", // URL du script PHP AJAX
    data: {
      action: "action", // Action à exécuter dans le script PHP
      // Autres données à envoyer avec la requête
    },
    dataType: 'json',
    error: function (request, status, error) {
      // Gestion des erreurs
      console.error("AJAX Error:", error);
    },
    success: function (data) {
      // Traitement de la réponse JSON
      console.log("AJAX Success:", data);
      // Autres actions à effectuer en cas de succès
    }
  });
});

Qui doit pointer donc sur Projote.ajax.php :


try {
  require_once dirname(__FILE__) . '/../../../../core/php/core.inc.php';
  include_file('core', 'authentification', 'php');


  if (!isConnect('admin')) {
    throw new Exception(__('401 - Accès non autorisé', __FILE__));
  }

  /* Fonction permettant l'envoi de l'entête 'Content-Type: application/json'
    En V3 : indiquer l'argument 'true' pour contrôler le token d'accès Jeedom
    En V4 : autoriser l'exécution d'une méthode 'action' en GET en indiquant le(s) nom(s) de(s) action(s) dans un tableau en argument
  */
  ajax::init();

  if ($action == 'Validate') {
    $eqId = init('id');
    $eqLogic = Projote::byId(init('id'));
    log::add('Projote', 'debug', 'Ajax::Exec Validate eqId : ' . $eqId);
    $result = ProJote::updateInfoPronote('Validate');
    ajax::success($return);
  }

  // Vérifiez si l'action demandée est disponible
  if (isset($_POST['action']) && $_POST['action'] == 'updateInfoPronote') {
    // Récupérez le paramètre supplémentaire, si nécessaire
    $param = isset($_POST['param']) ? $_POST['param'] : '';

    // Exécutez la commande UpdateInfoPronote avec le paramètre
    $result = ProJote::updateInfoPronote($param);

    // Retournez une réponse au format JSON
    echo json_encode($result);
  }
  ajax::success();
  throw new Exception(__('Aucune méthode correspondante à', __FILE__) . ' : ' . init('action'));
  /*     * *********Catch exeption*************** */
} catch (Exception $e) {
  ajax::error(displayException($e), $e->getCode());
}

Mon problème est que sur le navigateur web quand je clique j’ai une erreur 403 :

hello, pourrais tu mettre le code avec la balise « texte préformaté » et non « citation »?

pour y voir plus clair, merci :stuck_out_tongue:

Edit: vérifie bien les majuscules / minuscules, je vois les 2 pour projote.ajax.php et le répertoire projote

En effet, c’est plus visible :wink:

J’ai en effet essayé avec ou sans majuscule et pour les deux, le même résultat.

Montrez l’arborescence jusqu’à votre fichier projote.ajax.php dans l’explorateur de fichiers svp?

c’est important, il faut vraiment garder la même logique.

Mais bien sur :
image
image
image
image

Je crois qu’il y a tous …

Trouvé comme un grand, il y avait « j » au « J ».
Sensible, mais l’erreur forbidden par rapport à not found m’a induit en erreur.

Parfait alors, je conseille de rester en camelCase pour le nom des fichiers, c’est une norme de nommage assez acceptée :wink:

sinon je vois sur votre fichier ajax que vous avez ça en début de fichier, mais de mémoire $action n’est pas initialisé et donc cette condition if ne sera jamais validée

préférez if (init('action') == "Validate") {
si ça s’avère nécessaire

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.