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 :

Droits d'accès Oracle / PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Droits d'accès Oracle / PHP
    Bonsoir, lorsque j'essaye d'accéder à ma base ( depuis une page d'authentification classique en php) j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: oci_execute() [function.oci-execute]: ORA-00942: Table ou vue inexistante in C:\Apache\htdocs\Hist\bdd\fonction.oracle.php on line 13
     
    Warning: oci_fetch() [function.oci-fetch]: ORA-24374: définition non exécutée après extraction ou exécution et extraction in C:\Apache\htdocs\Hist\bdd\fonction.oracle.php on line 88
    J'ai crée cette table sous le nom d'utilisateur "secu" et je me connecte bien via cet utilisateur dans le fichier fonction.oracle.php. Je ne pense donc pas que ceci soit un problème de droits et je ne vois pas de quoi cela pourrait venir.

    Sinon pour informations j'ai bien configurer le php.ini en decochant l'extension oci8 et heuuu.. je ne sais pas si cela peut aider à dépanner mais voici mes 2 fichiers tnsnames.ora et sqlnet.ora :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)
    NAMES.DIRECTORY_PATH= (TNSNAMES)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ORACLE =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.76.248)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = oracle)
        )
      )
    et le code concerné :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function TestLogin($Login, $Pass){
     
    	$Req=OraReq("select PWD from infocentre.ihm_utilisateur where LOGIN='".$Login."'");
    	if (oci_fetch($Req)) {
    		if (oci_result($Req,'PWD')==md5($Pass) ) {
    			//Login existant et Pass OK 
    			oci_free_statement($Req);
    			$Req=OraReq("SELECT u.id_utilisateur, u.login, CONCAT(CONCAT(u.prenom, ' ') , UPPER(u.nom)) as acteur,u.id_groupe_utilisateur, ug.nom_groupe_utilisateur, p.id_profil, p.libelle   FROM infocentre.ihm_utilisateur u,infocentre.ihm_groupe_utilisateur ug, groupe_utilisateur_profil gp, profil p WHERE u.id_groupe_utilisateur= ug.id_groupe_utilisateur AND ug.id_groupe_utilisateur=gp.id_groupe_utilisateur AND gp.id_profil=p.id_profil AND u.login='".$Login."'");	
     
    			while (oci_fetch($Req)){
    				$_SESSION['id_acteur']=oci_result($Req,'ID_UTILISATEUR');									 
    				$_SESSION['acteur']=oci_result($Req,'ACTEUR');
    				$_SESSION['id_groupe_user']=oci_result($Req,'ID_GROUPE_UTILISATEUR');
    				$_SESSION['groupe_user']=oci_result($Req,'NOM_GROUPE_UTILISATEUR');
    				$_SESSION['id_profil']=oci_result($Req,'ID_PROFIL');
    				$_SESSION['profil']=oci_result($Req,'LIBELLE');
    				$_SESSION['login']=oci_result($Req,'LOGIN');
     
     
     
    			}
    				oci_free_statement($Req);
    			}
    		}
     
    }
    Voilà si qqn avait une idée du problème cela me dépannerait grandement, je suis en stage et je ne peux pas bosser sur mon poste à cause de cet anecdotique petit problème de pas grand chose pfff ^^

    PS: je pense peut être savoir d'où vient le problème mais n'en suis pas du tout sûr. En fait je n'ait pas réellement créer la table infocentre.ihm_utilisateur depuis l'utilisateur secu mais j'ai plutôt importé la base de données de production pour l'exporter par la suite sur la base de données de développement. Je ne sais pas si c'est cela qui pose problème, le fait d'importer la table crée par l'utilisateur infocentre depuis un autre utilisateur qui s'appelle secu..

    j'attends vos réponses merci ^^

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Si ta table ihm_utilisateur a été importée dans le schéma secu, tu peux y accéder directement (select PWD from ihm_utilisateur) ou en indiquant le schéma (select PWD from secu.ihm_utilisateur), mais pas en préfixant le nom de la table par un schéma dans laquelle elle n'est pas (infocentre)...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    bonsoir, j'ai modifié les préfixes des tables infocentre en secu mais rien n'y fais, le même message d'erreur subsiste

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Je viens de créer une table "truc" depuis l'utilisateur "Secu", donc celle-ci devrait logiquement pouvoir être accessible. Cependant elle ne l'est pas: voici le message d'erreur que j'obtiens pour le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $_SESSION['CNX']=oci_pconnect("secu","toto","oracle");
    $SQL="Select * from truc";
    $Req=oci_parse($_SESSION['CNX'],$SQL);
    oci_execute($Req, OCI_COMMIT_ON_SUCCESS);
    ?>
    Warning: oci_execute() [function.oci-execute]: ORA-00942: Table ou vue inexistante in C:\Apache\htdocs\index.php on line 5
    Est-ce que quelqu'un aurait une idée par hasard??

  5. #5
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Que donne la requête suivante exécutée avec "Secu" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select TABLE_NAME from USER_TABLES;

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Je n'ai plus de message d'erreur avec cette requête mais cela ne m'affiche aucun résultat (page blanche) (avec uniquement le code ci-dessous dans un fichier index.php )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $_SESSION['CNX']=oci_pconnect("secu","toto","oracle");
    //$query="Select * from vue_truc";
    $query="select TABLE_NAME from USER_TABLES";
    $Req=oci_parse($_SESSION['CNX'],$query);
    oci_execute($Req, OCI_COMMIT_ON_SUCCESS);
     
    if (oci_fetch($Req)){
    	do {
    		echo oci_result($Req,1);
    	}
    	while (oci_fetch($Req));
    }

  7. #7
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Comment as-tu créé la table 'truc' depuis l'utilisateur Secu ?
    Parce que là, ton utilisateur n'a aucune table...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    avec le 'soft' PLSQL Developer. d'ailleurs en me connectant à la DB à partir de ce dernier et bien toutes les tables sont visibles depuis l'utilisateur secu.. incompréhension totale lol

    edit: ha non j'ai dis une bétise j'ai effectivement la vision de toutes les tables mais lorsque je me logue en sysdba, en normal je ne vois rien :/

  9. #9
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par evil_mouss Voir le message
    edit: ha non j'ai dis une bétise j'ai effectivement la vision de toutes les tables mais lorsque je me logue en sysdba, en normal je ne vois rien :/
    Quand tu te connectes en sysdba ? Mais avec quel utilisateur ?
    L'utilisateur 'Secu' n'a pas le droit dba, si ?

    J'ai l'impression que tu as créé ces tables dans un autre schéma que celui de 'Secu'. Si tu peux te connecter avec un utilisateur DBA, alors tu peux trouver ces infos dans la vue ALL_TABLES... Quelque chose comme "select owner from all_tables where table_name = 'TRUC'"

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Si j'ai donné les droits sysdba à 'Secu', ce n'est qu'une base de test et je ne voulais ne pas être restreint au niveau des droits. Donc je me connecte bien via plsql developper en sysdba avec Secu et j'utilise ce même compte pour m'authentifier dans mes fichiers PHP. Sinon la commande " select owner from all_tables where table_name = 'TRUC' " me renvoie bien SECU comme Owner...

    Le problème apparemment est que les tables sont visibles en se connectant en sysdba et non pas en normal, il n'y a pas moyen de régler cela simplement?

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    J'e n'ai jamais eu ce problème, et que j'ai donc un peu de mal à trouver une solution

    Quels sont les droits de ton utilisateur Secu ? (rôles et autres privilèges)

Discussions similaires

  1. Droits d'accès différent PHP/FTP
    Par Jean-Georges dans le forum Langage
    Réponses: 1
    Dernier message: 10/06/2013, 14h51
  2. [IIS 7.5] PHP + IIS + Droit d'accès aux fichiers
    Par Sergejack dans le forum IIS
    Réponses: 0
    Dernier message: 06/08/2011, 14h48
  3. Réponses: 2
    Dernier message: 10/07/2008, 11h36
  4. Gestion des droits d'accès sous Oracle
    Par ginkas31 dans le forum Administration
    Réponses: 3
    Dernier message: 02/07/2007, 19h44
  5. Méthode d'accès à Oracle via PHP
    Par nicocolt dans le forum Oracle
    Réponses: 1
    Dernier message: 19/10/2006, 15h57

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