Re: [PHP-DB] ODBC -- Setting ApplicationID
I think that work-around may work for me. Since I can declare a different environment variable for the PHP script, with a new alias, that should work fine. Thanks for the suggestion. - Bruce Andrew Hill wrote: > Bruce, > > It looks like you were on the right track initially, the problem is that PHP > has a major bug - odbc_setoption is coded specific to ODBC statement handle > (connection id), which means that trying to use odbc_setoption the way you > want attempts to set a SQLSetConnectOption AFTER the connection is open - > which is bogus and will give you ODBC function sequence errors. > > On the other hand, the error message you were getting is a bit misleading; > we are fixing that now. > > So... you can unfortunately not do this via Application ID, but since you > are using the OpenLink Rules Book, you can still affect Session-based > connection management with any of the other connection criteria: > > Here is one way to do it: > -- > Setup your session attributes by configuring the Session Rules Book Aliases > section of the Multi-Tier OpenLink Admin Assistant. > (http://servername:8000). > > You can configure session rules for any combination of Domain, Database, > User, Operating System, Client Machine, Client Application, etc., and can > control any connection options at the server side based on the session. > > Using "Database" as an example, add a Database Alias with a new database > name and configure a session mapping rule to point to the original database > name, but change the connection attributes from "Read / Write" to "Read > Only" in the options for the connection session. > > On the PHP side, simply choose between two DSN's in the odbc.ini - one is > the "normal" DSN, with default settings, and one will have an alternate > database name, "name_readonly" or somesuch, that will cause the oplrqb to > instantiate the appropriate connection attributes. > > If you run into problems, you should probably open a support case at > http://www.openlinksw.com/support/suppindx.htm, as this is getting somewhat > off-topic for PHP. > > Hope this helps! > > Best regards, > Andrew Hill > Director of Technology Evangelism > OpenLink Software http://www.openlinksw.com > Universal Data Access & Data Integration Technology Providers > > I was thinking of using the usernames, but as people come and go, that might > mean messing around with the oplrqb.ini file too much. I'd really like to > do > this based on application. What variable do I pass with the PHP script? > ( I'm > not sure what you mean ). Can I use a variable in PHP that passes the > application name to the server? > > Thanks, > > Bruce > > Andrew Hill wrote: > > > Hi Bruce, > > > > The setoption error is being thrown because you cannot use > > SQLSetConnectOption that way. > > Passing arbitrary info to be used by your application isn't really what > this > > is for, but instead can be used to modify parameters in the ODBC API. > > > > This means you can modify things like SQL_ACCESS_MODE, SQL_AUTOCOMMIT, > > SQL_ODBC_CURSORS, etc., (check the 2.x spec - there are several metadata > > items that you can control with this API call.) > > > > I'd recommend you just pass a variable to your PHP script, and perhaps > > change the username to a read-only/read-write user with a case statement > or > > somesuch, based on the application. > > > > Again, I'd strongly recommend you upgrade the OpenLink UDA version as > well; > > 1.5 is something like 5 years old or more. > > > > Best regards, > > Andrew Hill > > Director of Technology Evangelism > > http://www.openlinksw.com/virtuoso/whatis.htm > > OpenLink Virtuoso Internet Data Integration Server > > > > > -Original Message- > > > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > > > Sent: Monday, March 25, 2002 10:48 AM > > > To: [EMAIL PROTECTED] > > > Subject: Re: [PHP-DB] ODBC -- Setting ApplicationID > > > > > > > > > Sure, I'm simply trying to have PHP pass an ApplicationID to the > > > ODBC server. > > > When a PHP script access the ODBC database, it does not set the > > > application: > > > > > > 10:46:04 connectopts= user=webuser opsys=unix machine=linux > application= > > > > > > As you can see, application= is NULL. I would like the script to pass > > > something, so that my mapping rules on the server would allow > > > write access to > > >
RE: [PHP-DB] ODBC -- Setting ApplicationID
Bruce, It looks like you were on the right track initially, the problem is that PHP has a major bug - odbc_setoption is coded specific to ODBC statement handle (connection id), which means that trying to use odbc_setoption the way you want attempts to set a SQLSetConnectOption AFTER the connection is open - which is bogus and will give you ODBC function sequence errors. On the other hand, the error message you were getting is a bit misleading; we are fixing that now. So... you can unfortunately not do this via Application ID, but since you are using the OpenLink Rules Book, you can still affect Session-based connection management with any of the other connection criteria: Here is one way to do it: -- Setup your session attributes by configuring the Session Rules Book Aliases section of the Multi-Tier OpenLink Admin Assistant. (http://servername:8000). You can configure session rules for any combination of Domain, Database, User, Operating System, Client Machine, Client Application, etc., and can control any connection options at the server side based on the session. Using "Database" as an example, add a Database Alias with a new database name and configure a session mapping rule to point to the original database name, but change the connection attributes from "Read / Write" to "Read Only" in the options for the connection session. On the PHP side, simply choose between two DSN's in the odbc.ini - one is the "normal" DSN, with default settings, and one will have an alternate database name, "name_readonly" or somesuch, that will cause the oplrqb to instantiate the appropriate connection attributes. If you run into problems, you should probably open a support case at http://www.openlinksw.com/support/suppindx.htm, as this is getting somewhat off-topic for PHP. Hope this helps! Best regards, Andrew Hill Director of Technology Evangelism OpenLink Software http://www.openlinksw.com Universal Data Access & Data Integration Technology Providers I was thinking of using the usernames, but as people come and go, that might mean messing around with the oplrqb.ini file too much. I'd really like to do this based on application. What variable do I pass with the PHP script? ( I'm not sure what you mean ). Can I use a variable in PHP that passes the application name to the server? Thanks, Bruce Andrew Hill wrote: > Hi Bruce, > > The setoption error is being thrown because you cannot use > SQLSetConnectOption that way. > Passing arbitrary info to be used by your application isn't really what this > is for, but instead can be used to modify parameters in the ODBC API. > > This means you can modify things like SQL_ACCESS_MODE, SQL_AUTOCOMMIT, > SQL_ODBC_CURSORS, etc., (check the 2.x spec - there are several metadata > items that you can control with this API call.) > > I'd recommend you just pass a variable to your PHP script, and perhaps > change the username to a read-only/read-write user with a case statement or > somesuch, based on the application. > > Again, I'd strongly recommend you upgrade the OpenLink UDA version as well; > 1.5 is something like 5 years old or more. > > Best regards, > Andrew Hill > Director of Technology Evangelism > http://www.openlinksw.com/virtuoso/whatis.htm > OpenLink Virtuoso Internet Data Integration Server > > > -----Original Message- > > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > > Sent: Monday, March 25, 2002 10:48 AM > > To: [EMAIL PROTECTED] > > Subject: Re: [PHP-DB] ODBC -- Setting ApplicationID > > > > > > Sure, I'm simply trying to have PHP pass an ApplicationID to the > > ODBC server. > > When a PHP script access the ODBC database, it does not set the > > application: > > > > 10:46:04 connectopts= user=webuser opsys=unix machine=linux application= > > > > As you can see, application= is NULL. I would like the script to pass > > something, so that my mapping rules on the server would allow > > write access to > > the db, if the PHP application sends a certain name. Currently our Win32 > > applications, like MS Access, send application names. e.g. Access, sends: > > application=MSACCESS. > > > > Thanks for your help, > > > > Bruce > > > > Andrew Hill wrote: > > > > > Bruce, > > > > > > I'm not sure what you are trying to do - could you clarify? > > > You may be able to simply use the OpenLink Rules Book to set role-based > > > authentication on domain, ip, application, etc. > > > > > > Also, the ODBC Driver version (1.5) you are using is _very_ old and > > > unsupported. > > > I suggest you upgrade to
Re: [PHP-DB] ODBC -- Setting ApplicationID
I was thinking of using the usernames, but as people come and go, that might mean messing around with the oplrqb.ini file too much. I'd really like to do this based on application. What variable do I pass with the PHP script? ( I'm not sure what you mean ). Can I use a variable in PHP that passes the application name to the server? Thanks, Bruce Andrew Hill wrote: > Hi Bruce, > > The setoption error is being thrown because you cannot use > SQLSetConnectOption that way. > Passing arbitrary info to be used by your application isn't really what this > is for, but instead can be used to modify parameters in the ODBC API. > > This means you can modify things like SQL_ACCESS_MODE, SQL_AUTOCOMMIT, > SQL_ODBC_CURSORS, etc., (check the 2.x spec - there are several metadata > items that you can control with this API call.) > > I'd recommend you just pass a variable to your PHP script, and perhaps > change the username to a read-only/read-write user with a case statement or > somesuch, based on the application. > > Again, I'd strongly recommend you upgrade the OpenLink UDA version as well; > 1.5 is something like 5 years old or more. > > Best regards, > Andrew Hill > Director of Technology Evangelism > http://www.openlinksw.com/virtuoso/whatis.htm > OpenLink Virtuoso Internet Data Integration Server > > > -Original Message- > > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > > Sent: Monday, March 25, 2002 10:48 AM > > To: [EMAIL PROTECTED] > > Subject: Re: [PHP-DB] ODBC -- Setting ApplicationID > > > > > > Sure, I'm simply trying to have PHP pass an ApplicationID to the > > ODBC server. > > When a PHP script access the ODBC database, it does not set the > > application: > > > > 10:46:04 connectopts= user=webuser opsys=unix machine=linux application= > > > > As you can see, application= is NULL. I would like the script to pass > > something, so that my mapping rules on the server would allow > > write access to > > the db, if the PHP application sends a certain name. Currently our Win32 > > applications, like MS Access, send application names. e.g. Access, sends: > > application=MSACCESS. > > > > Thanks for your help, > > > > Bruce > > > > Andrew Hill wrote: > > > > > Bruce, > > > > > > I'm not sure what you are trying to do - could you clarify? > > > You may be able to simply use the OpenLink Rules Book to set role-based > > > authentication on domain, ip, application, etc. > > > > > > Also, the ODBC Driver version (1.5) you are using is _very_ old and > > > unsupported. > > > I suggest you upgrade to 4.2 > > > > > > Best regards, > > > Andrew Hill > > > Director of Technology Evangelism > > > OpenLink Software http://www.openlinksw.com > > > Universal Data Access & Data Integration Technology Providers > > > > > > > -Original Message- > > > > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > > > > Sent: Thursday, March 21, 2002 11:02 AM > > > > To: [EMAIL PROTECTED] > > > > Subject: [PHP-DB] ODBC -- Setting ApplicationID > > > > > > > > > > > > I am trying to set the ApplicationID, when connecting to an ODBC > > > > datasource. I have tried: > > > > > > > > odbc_setoption ($conn, 1, 1053, "PHPAPP"); > > > > > > > > And get a: > > > > > > > > "SQL error: [iODBC][Driver Manager]Option type out of range, SQL state > > > > S1092 in SetConnectOption" > > > > > > > > Basically, I want my PHP script to pass the application name > > to the ODBC > > > > server, so that I can set up a mapping on the server that allows write > > > > access when a certain application string is sent. > > > > > > > > PHP 4.06 (with file-upload patch) > > > > Openlink ODBC 1.5 > > > > Linux Client > > > > SCO Informix 5 server > > > > > > > > > > > > TIA- > > > > > > > > Bruce > > > > > > > > > > > > > > > > > > > > -- > > > > PHP Database Mailing List (http://www.php.net/) > > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > > > > > > > > > > -- > > PHP Database Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP-DB] ODBC -- Setting ApplicationID
Hi Bruce, The setoption error is being thrown because you cannot use SQLSetConnectOption that way. Passing arbitrary info to be used by your application isn't really what this is for, but instead can be used to modify parameters in the ODBC API. This means you can modify things like SQL_ACCESS_MODE, SQL_AUTOCOMMIT, SQL_ODBC_CURSORS, etc., (check the 2.x spec - there are several metadata items that you can control with this API call.) I'd recommend you just pass a variable to your PHP script, and perhaps change the username to a read-only/read-write user with a case statement or somesuch, based on the application. Again, I'd strongly recommend you upgrade the OpenLink UDA version as well; 1.5 is something like 5 years old or more. Best regards, Andrew Hill Director of Technology Evangelism http://www.openlinksw.com/virtuoso/whatis.htm OpenLink Virtuoso Internet Data Integration Server > -Original Message- > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > Sent: Monday, March 25, 2002 10:48 AM > To: [EMAIL PROTECTED] > Subject: Re: [PHP-DB] ODBC -- Setting ApplicationID > > > Sure, I'm simply trying to have PHP pass an ApplicationID to the > ODBC server. > When a PHP script access the ODBC database, it does not set the > application: > > 10:46:04 connectopts= user=webuser opsys=unix machine=linux application= > > As you can see, application= is NULL. I would like the script to pass > something, so that my mapping rules on the server would allow > write access to > the db, if the PHP application sends a certain name. Currently our Win32 > applications, like MS Access, send application names. e.g. Access, sends: > application=MSACCESS. > > Thanks for your help, > > Bruce > > Andrew Hill wrote: > > > Bruce, > > > > I'm not sure what you are trying to do - could you clarify? > > You may be able to simply use the OpenLink Rules Book to set role-based > > authentication on domain, ip, application, etc. > > > > Also, the ODBC Driver version (1.5) you are using is _very_ old and > > unsupported. > > I suggest you upgrade to 4.2 > > > > Best regards, > > Andrew Hill > > Director of Technology Evangelism > > OpenLink Software http://www.openlinksw.com > > Universal Data Access & Data Integration Technology Providers > > > > > -Original Message- > > > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > > > Sent: Thursday, March 21, 2002 11:02 AM > > > To: [EMAIL PROTECTED] > > > Subject: [PHP-DB] ODBC -- Setting ApplicationID > > > > > > > > > I am trying to set the ApplicationID, when connecting to an ODBC > > > datasource. I have tried: > > > > > > odbc_setoption ($conn, 1, 1053, "PHPAPP"); > > > > > > And get a: > > > > > > "SQL error: [iODBC][Driver Manager]Option type out of range, SQL state > > > S1092 in SetConnectOption" > > > > > > Basically, I want my PHP script to pass the application name > to the ODBC > > > server, so that I can set up a mapping on the server that allows write > > > access when a certain application string is sent. > > > > > > PHP 4.06 (with file-upload patch) > > > Openlink ODBC 1.5 > > > Linux Client > > > SCO Informix 5 server > > > > > > > > > TIA- > > > > > > Bruce > > > > > > > > > > > > > > > -- > > > PHP Database Mailing List (http://www.php.net/) > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] ODBC -- Setting ApplicationID
Sure, I'm simply trying to have PHP pass an ApplicationID to the ODBC server. When a PHP script access the ODBC database, it does not set the application: 10:46:04 connectopts= user=webuser opsys=unix machine=linux application= As you can see, application= is NULL. I would like the script to pass something, so that my mapping rules on the server would allow write access to the db, if the PHP application sends a certain name. Currently our Win32 applications, like MS Access, send application names. e.g. Access, sends: application=MSACCESS. Thanks for your help, Bruce Andrew Hill wrote: > Bruce, > > I'm not sure what you are trying to do - could you clarify? > You may be able to simply use the OpenLink Rules Book to set role-based > authentication on domain, ip, application, etc. > > Also, the ODBC Driver version (1.5) you are using is _very_ old and > unsupported. > I suggest you upgrade to 4.2 > > Best regards, > Andrew Hill > Director of Technology Evangelism > OpenLink Software http://www.openlinksw.com > Universal Data Access & Data Integration Technology Providers > > > -Original Message- > > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > > Sent: Thursday, March 21, 2002 11:02 AM > > To: [EMAIL PROTECTED] > > Subject: [PHP-DB] ODBC -- Setting ApplicationID > > > > > > I am trying to set the ApplicationID, when connecting to an ODBC > > datasource. I have tried: > > > > odbc_setoption ($conn, 1, 1053, "PHPAPP"); > > > > And get a: > > > > "SQL error: [iODBC][Driver Manager]Option type out of range, SQL state > > S1092 in SetConnectOption" > > > > Basically, I want my PHP script to pass the application name to the ODBC > > server, so that I can set up a mapping on the server that allows write > > access when a certain application string is sent. > > > > PHP 4.06 (with file-upload patch) > > Openlink ODBC 1.5 > > Linux Client > > SCO Informix 5 server > > > > > > TIA- > > > > Bruce > > > > > > > > > > -- > > PHP Database Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP-DB] ODBC -- Setting ApplicationID
Bruce, I'm not sure what you are trying to do - could you clarify? You may be able to simply use the OpenLink Rules Book to set role-based authentication on domain, ip, application, etc. Also, the ODBC Driver version (1.5) you are using is _very_ old and unsupported. I suggest you upgrade to 4.2 Best regards, Andrew Hill Director of Technology Evangelism OpenLink Software http://www.openlinksw.com Universal Data Access & Data Integration Technology Providers > -Original Message- > From: Bruce S. Garlock [mailto:[EMAIL PROTECTED]] > Sent: Thursday, March 21, 2002 11:02 AM > To: [EMAIL PROTECTED] > Subject: [PHP-DB] ODBC -- Setting ApplicationID > > > I am trying to set the ApplicationID, when connecting to an ODBC > datasource. I have tried: > > odbc_setoption ($conn, 1, 1053, "PHPAPP"); > > And get a: > > "SQL error: [iODBC][Driver Manager]Option type out of range, SQL state > S1092 in SetConnectOption" > > Basically, I want my PHP script to pass the application name to the ODBC > server, so that I can set up a mapping on the server that allows write > access when a certain application string is sent. > > PHP 4.06 (with file-upload patch) > Openlink ODBC 1.5 > Linux Client > SCO Informix 5 server > > > TIA- > > Bruce > > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php