[PHP-DEV] Re: [PHP-DB] ODBC -- Setting ApplicationID

2002-03-26 Thread Bruce S. Garlock

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
   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
   
 

[PHP-DEV] RE: [PHP-DB] ODBC -- Setting ApplicationID

2002-03-25 Thread Andrew Hill

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 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