2017-07-13 5 views
0

Je configure un site qui extrait les données des utilisateurs et les place dans la base de données. J'utilise MS Access car cela ne serait utilisé que par 20-30 collègues. Le site est déployé à l'aide de IIS 7.5 sur localhost: 92 Les règles de pare-feu ont été activées pour permettre la connexion sur le port 80-95 (car il existe des sites sur les ports et certains ports sont utilisés pour tester les sites).PHP/MS ACCESS L'utilisateur local peut écrire dans la base de données, mais les utilisateurs distants ne peuvent pas

Pour l'authentification, j'ai activé l'authentification Windows uniquement et limité les utilisateurs par le biais de règles d'autorisation.

Il est en cours d'exécution sur un bureau où le site Web et le fichier d'accès (fichiers accdb Access 2010 sont stockés dans Mes documents. J'ai donné les droits d'accès aux IIS_IUSRS)

Alors, quand j'ouvrir le site et entrez les données qu'il réussit va dans la base de données. Mais quand tout collègue tente avec leur PC, il donne l'erreur:

Fatal error: Uncaught exception 'PDOException' with message 
'SQLSTATE[HY000]: General error: -3035 [Microsoft][ODBC Microsoft Access 
Driver] Operation must use an updateable query. (SQLExecute[-3035] at 
ext\pdo_odbc\odbc_stmt.c:254)' in 
C:\Users\username\Documents\Website\website\index.html:139 
(file:///C:/Users/username/Documents/Website/website/index.html:139) Stack 
trace: #0 C:\Users\username\Documents\Website\website\index.html(139) 
(file:///C:/Users/username/Documents/Website/website/index.html(139)): PDO- 
>query('INSERT INTO Tab...') #1 {main} thrown in 
C:\Users\username\Documents\Website\website\index.html 
(file:///C:/Users/username/Documents/Website/website/index.html) on line 139 

J'ai essayé de partager le dossier avec everyone.There est pas de verrou sur la DB. J'ai donné des autorisations de clés de Registre ODBC à IIS_IUSRS. J'ai donné des permissions de dossier de DB à tout le monde. Essayé en donnant la permission à des utilisateurs spécifiques aussi. N'a pas fonctionné. EDIT: J'ai donc désactivé l'authentification Windows et je suis passé à l'authentification anonyme et il a commencé à fonctionner. Par conséquent, le problème semble être lié à l'authentification Windows. J'ai donné All accès à IIS_IUSR sur le dossier où le site et la base de données sont conservés. J'ai également donné à l'utilisateur des droits de contrôle complets sur le dossier et partagé le dossier. Cela n'a pas fonctionné. Toujours à la recherche d'une solution.

EDIT2: J'ai donc testé avec mon identifiant sur un autre PC où le fichier DB n'est pas stocké. Cela a fonctionné avec mon identification. Cela m'amène à croire que le problème est probablement lié aux autorisations. J'ai juste besoin de comprendre où.

EDIT3: Je dois ajouter des utilisateurs qui souhaitent apporter des modifications au groupe IIS_ISURS. Une fois que je les ai ajoutés au groupe, le site a cessé de donner des erreurs.

+0

Vous êtes très ouvert pour l'injection SQL. Puisque vous utilisez PDO, profitez des [instructions préparées] (https://secure.php.net/manual/fr/pdo.prepared-statements.php) et [bindparam] (http://php.net/ manual/fr/pdostatement.bindparam.php) ou [bindvalue] (http://php.net/manual/fr/pdostatement.bindvalue.php). ** Cela corrigera tous les problèmes de soumission que vous pourriez avoir ** Vous pouvez également essayer de faire écho à la requête et l'exécuter directement pour voir où le problème peut se trouver. – aynber

+0

Merci pour la suggestion. Je suis déjà dans un VPN et seules les personnes autorisées pourraient y accéder, ce n'est donc pas une priorité en ce moment. Le problème principal est que depuis le PC où le site fonctionne, ce code fonctionne. Mais si je l'essaie depuis un autre PC, cela me donne cette erreur. Donc je pense qu'il s'agit de quelques permissions quelque part. J'ai peut-être tort. – Anti21

+0

Quelle ligne est 139? – aynber

Répondre

0

Résolu. Nécessaire pour ajouter les utilisateurs qui vont insérer des données dans la base de données au groupe IIS_ISURS. Une fois que je les ai ajoutés au groupe, le site a cessé de donner des erreurs.