On Sunday 12 January 2003 03:45, [EMAIL PROTECTED] wrote:

> I have a database that was created on an earlier version of PostgreSQL and
> uses global variables with register_globals = on for php4.
> I have migrated the database to postgresql-7.3.1 with mod_php-4.2.3 and
> have set the register_globals to on. In order to use the default setting of
> register_globals = off, I need to reprogram my php files.
> I would appreciate some suggestions on how to go about modifying the code.
> Is there a script that could be run on each file to convert to the
> superglobals that would work with the register_globals off?

If only it was that easy ;)

The best thing to do is crank up error reporting to maximum (errors AND 
notices). You should see a lot of undefined or uninitialized variables 
notices/warnings. Find out where those variables are coming from (GET, POST 
or whatever) and change them appropriately. Eg you have a form with 
method=POST and a single text element called 'name'. Instead of using just 
$name in your code you need to use $_POST['name'].

> I also need to know the exact syntax: for example, one current line is -
>
> include "$DOCUMENT_ROOT/../lib/somefile.conf";
>
> Someone did suggest the following:
>
> include $_SERVER['DOCUMENT_ROOT'].'/../lib/somefile.conf';
>
> however, there is a difference in the use of the quotation marks and I do
> not understand the use of the . and ..

It used to be that $DOCUMENT_ROOT was a predefined variable in the global 
scope. Thus you could use it directly in a string like in your first 
statement. Now DOCUMENT_ROOT can only be obtained from the $_SERVER array.

Between strings and variables the period (.) acts as a concatenation operator. 
The second statement can be reformatted to make it clearer:

  $_SERVER['DOCUMENT_ROOT'] . '/../lib/somefile.conf';

Hopefully you can clearly see that the left side is equivalent to 
$DOCUMENT_ROOT and the right side is just a string. The '..' in the string on 
the right has nothing to with PHP, it's just the standard way to denote the 
parent directory.

Single-quoted strings are literal strings, double-quoted strings does variable 
expansion.

The second statement can also be rewritten as:

  "{$_SERVER['DOCUMENT_ROOT']}/../lib/somefile.conf";

-- 
Jason Wong -> Gremlins Associates -> www.gremlins.biz
Open Source Software Systems Integrators
* Web Design & Hosting * Internet & Intranet Applications Development *

/*
Positive, adj.:
        Mistaken at the top of one's voice.
                -- Ambrose Bierce, "The Devil's Dictionary"
*/


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to