Bonjour à tous,
Je me retrouve devant un problème concernant l’exécution d’un script php externe.
Ce dernier se trouve à la racine de mon installation et il a été autorisé dans le fichier htaccess.
Situation :
Je déclenche la mise à jour d’un compteur lors d’un clic sur un bouton. Le clic est géré par Jquery et lance un appel AJAX sur mon script PHP externe qui doit mettre ainsi ma BDD à jour.
Problème :
Mon script s’exécute correctement mais ce n’est pas l’utilisateur courant qui est mis à jour mais toujours celui avec l’uid 0 donc l’utilisateur anonyme.
Debug :
Le script PHP a été testé directement dans le navigateur via l’adresse : http://www.monsite.com/script_externe.php
Aucune erreur et l’uid est bien pris en compte cette fois. Le script est fonctionnel.
Ma base de données est bien mise à jour sur l’utilisateur courant.
Mais lors de l’éxécution du script via le click javascript. On tombe sur le même problème. L’uid 0 prend la main et mon script ne met donc pas à jour le bon utilisateur.
Code fichier PHP externe :
C’est ce dernier qui met à jour ma base.
[code]
<?php
//Théoriquement ce code permettrait la persistance des sessions dans mon fichier externe
include_once "includes/bootstrap.inc";
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); //DRUPAL_BOOTSTRAP_SESSION
global $user;
//Code de mise à jour de la base
?>[code]
Merci à tous de votre ailde ;-)
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Pourquoi ne pas poster l’uid lors du click ?
kustolovic
147
Essaie de travailler avec $GLOBALS[‘user’]
Indépendante, mandats Drupal et PHP.
Migration Drupal 6 / Drupal 7
sahuni
972
merci à tous les deux pour vos pistes. J’ai essayé les 2 mais elles n’ont pas réussi.
Concernant le fait de passer l’uid au moment de l’appel du script PHP, voilà mon code :
$(document).ready(function(){
$(«.button»).live({
click : function() {
recherche = true ;
if (recherche == true){
alert(«debut processus») ;
$.post(«http://monsite.com/script_externe.php», { uid : «< ? global $user ; echo $user->uid ?>»},
function(data) {
alert(«Data Loaded : » + data) ;
}) ;
}
},
}) ;
}) ;
Je n’ai aucun retour qui s’affiche de mon script PHP. Je l’ai simplifié au maximum pour test. Le script retourne un echo de l’uid passé en paramètre. Voir ci-dessous :
<?php$uid = $_POST['uid'];
echo $uid;
?>
Mon JS semble correct.
Merci pour votre aide encore ;-)
TiTi
12
Bonjour,
Essai en essayant de définir le DrupalRoot de ton drupal :
chdir(‘path/to/drupal’) ;
define(«DRUPAL_ROOT», getcwd() ) ;
dantedu93
1