IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Windows authentification ne prend pas la session en cours.


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Windows authentification ne prend pas la session en cours.
    Bonjour,

    J'essaie actuellement de me connecter à une BDD SQL-Server.
    En cherchant sur internet j'ai fini par faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
    $serverName = "G50G4001"; //serverName\instanceName
     
    // Vu que UID et PWD ne sont pas spécifiés dans le tableau $connectionInfo,
    // la connexion va tenter d'utiliser l'authentification Windows.
    $connectionInfo = array( "Database"=>"TestDB");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
     
    if( $conn ) {
         echo "Connexion établie.<br />";
    }else{
         echo "La connexion n'a pu être établie.<br />";
         die( print_r( sqlsrv_errors(), true));
    }
    ?>
    Cependant, quand je lance ce code, j'obtiens l'erreur suivante dans ma page :

    La connexion n'a pu être établie.
    Array ( [0] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'TECHNORD\G50G4001$'. [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'TECHNORD\G50G4001$'. ) [1] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 4060 [code] => 4060 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open database "TestDB" requested by the login. The login failed. [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open database "TestDB" requested by the login. The login failed. ) [2] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'TECHNORD\G50G4001$'. [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'TECHNORD\G50G4001$'. ) [3] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 4060 [code] => 4060 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open database "TestDB" requested by the login. The login failed. [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open database "TestDB" requested by the login. The login failed. ) )
    Le problème étant là je pense :
    Login failed for user 'TECHNORD\G50G4001$'.
    Mon nom d'utilisateur est h.carpentier, G50G4001 est le nom de mon serveur (et de ma machine actuelle). On devrait donc avoir 'TECHNORD\h.carpentier'.

    Ma question est donc : comment faire pour que php fasse la connexion avec la session actuelle de l'ordinateur?

    Merci pour votre aide!

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut précision
    Je précise si ça peut vous aider : je suis capable d'utiliser le compte "sa" pour me connecter. J'ai autorisé la connexion via Windows et via SQL.

    Merci encore :3.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Disclaimer : Je n'utilise pas SQL Server, donc tout ce qui suit est pure théorie de ma part
    Il fort probable que l'utilisateur windows utilisé soit celui du serveur apache et non le tien. Comme indiqué dans cette Doc :
    Par défaut, Pilotes Microsoft SQL Server pour PHP utilise l’authentification Windows pour se connecter à SQL Server. Il est important de noter que, dans la plupart des scénarios, cela signifie que l’identité du processus ou du thread du serveur web (si ce dernier utilise l’emprunt d’identité) est utilisée pour la connexion au serveur, au lieu de l’identité d’un utilisateur final.
    Prenez en considération les points suivants quand vous utilisez l’authentification Windows pour la connexion à SQL Server :

    Les informations d’identification sous lesquelles le processus (ou thread) du serveur web est en cours d’exécution doivent correspondre à une connexion SQL Server valide pour pouvoir établir une connexion.
    https://docs.microsoft.com/fr-fr/sql...ql-server-2017

    Donc il y a de fortes chances pour que "G50G4001$" soit le nom du processus du serveur web ou un truc du genre .
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci pour ton aide, je pense que je comprend un peu mieux d'où ça vient, mais je ne comprends pas en lisant la documentation jointe où je suis censé faire des modifications pour me connecter avec un utilisateur final à la place.
    Aussi je ne vois pas ou est-ce que le nom de mon ordinateur est récupéré par le serveur apache, le nom de processus étant "apache http server". J'ai parcouru aussi le httpd.conf et je n'y vois pas d'endroit où le lien est effectué.
    Ce qui m'étonne c'est qu'il soit capable de récupérer mon nom de domaine (TECHNORD\) mais pas mon nom d'utilisateur...

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Il faut quoi qu'il arrive que les drivers ms sql soit installer sur ton serveur.
    Pour les récupérer ca se passe par ici : https://github.com/microsoft/msphpsql
    Attention , il y'a différents drivers en fonction de ta version de PHP et de ta version de SQLServer

    Ensuite, utilise plutôt PDO (il faut évidemment que l'extension soit activée).
    Par exemple pour obtenir une connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = new \PDO('sqlsrv:Server='.$dbParam['host'].';Database='.$dbParam['dbname'].'', $dbParam['username'], $dbParam['password']);
    L'objet $sql te permet ensuite d'executer tes requêtes.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour grunk,

    Déjà merci pour ton aide!

    Après je suis déjà capable d'utiliser des requêtes comme je l'ai précisé dans mon second message, c'est avec ça que je travaille en ce moment.
    Mais j'aimerais que la connexion se fasse automatiquement avec les identifiants de l'utilisateur actuel, et qu'ils ne doivent pas les renseigner lui même dans ma page Web.
    L'intérêt du sqlsrv_connect était que sans mot de passe, il utilise l'authentification Windows par défaut, mais de ce que j'ai compris il ne prend pas la session en cours ce qui est dérangeant pour moi.

Discussions similaires

  1. [Débutant] combobox c# ne prend pas valeur recente au cours execution
    Par emna123 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/04/2014, 15h45
  2. [Joomla!] Authentification automatique après ouverture session Windows
    Par derzy971 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 22/03/2010, 03h18
  3. Réponses: 4
    Dernier message: 14/10/2009, 16h16
  4. [MySQL] session qui ne prend pas ce qu'il y a dans la requête
    Par schats dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/03/2009, 15h01
  5. Réponses: 1
    Dernier message: 28/05/2008, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo