db_query pour insert en BD

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

je souhaite me connecter depuis mon intranet actuel via LDAP sur mon intranet devellopé sur Drupal. En partant d'une portion de code que j'ai trouvé sur Drupal.org je l'ai adapté et cela fonctionne.

Mon problème est que j'ai une erreur de connexion : "Could not log you in. Please try again later" quand l'utilisateur ne c'est pas logué au moins une fois via ldap sur Drupal car quand l'utilisateur se logue via LDAP il y a un insert dans la table user du name.

Donc j'ai fait une condition qui vérifie si l'utilisateur est présent en base il récupére si non il fait un insert et c'est la mon problème car j'ai l'insert ne se fait pas. Je débute en PHP donc il se peux que mon code soit pas bon.

Une petite idée?

Merci

<?php
   
require_once 'includes/bootstrap.inc';
   
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    global
$user;

    $userName = $_REQUEST["user"];
   
$password = $_REQUEST["passwd"];
   
$form_state['values']['name']=$userName;
   
$form_state['values']['pass']=$password;
   
ldapauth_authenticate($form_state);
   
//ldapauth_login_validate(null,$form_state);
   
global $base_url;
   
$uQuery="select uid from users where name='$userName'";
   
$rSet=db_query($uQuery);
   
$result = db_fetch_object($rSet);
    if(empty(
$result))
    {
    
$iQuery="insert into {users} (name,statut) VALUES('$userName',1)";
    
db_query($iQuery);
    
$uQuery="select uid from users where name='$userName'";
    
$rSet=db_query($uQuery);
    
$result = db_fetch_object($rSet);
    }

    if($result && function_exists("user_load"))
    {
           if (
$account = user_load(array('uid'=>$result->uid, 'status' => 1)))
               {
                
$user = $account;

                 watchdog('user', 'Session opened for %name : .%name', array('%name' => $user->name));
                
$user->login = time();

                 db_query("UPDATE {users} SET login = %d WHERE uid = %d", $user->login, $user->uid);
               
sess_regenerate();
               
drupal_goto($base_url.'/intra');
                }
    }
    else
    {
        echo
"<h1>Could not log you in. Please try again later.</h1>";
    }
?>

Forum : 
Version de Drupal : 

Je pense qu'il faut d'abord que tu testes si ton utilisateur s'est loggué au moins une fois au LDAP, si non tu mets un message d'erreur l'invitant d'abord à se connecter une première fois (si c'est le fonctionnement que tu souhaites) et ensuite tu te connectes à la base de drupal pour faire ta requête.
Utilise db_connect si besoin > http://api.drupal.org/api/function/db_connect/6