At 10:57 AM 12/13/2001 -0500, Asendorf, John wrote:
>OK, maybe I'm just off my rocker or have something set incorrectly or
>something, but...
>
>What's the deal with magic quotes?
>
>you turn it on, and it automatically performs the addslashes for data being
>entered into databases, right? But it doesn't automatically run
>stripslashes when you retreive the data. Is this accurate or am I doing
>something wrong?
It is accurate. There is no need to stripslashes for data coming back out
of the database, normally. The slashes are used to escape special
characters (such as the single quote) in query strings, but those slashes
don't actually go inside the database. In other words if you have:
INSERT INTO table VALUES ('Mike\'s query')
...the data is entered as:
Mike's query
The slash is never actually put inside. So when you retrieve the data, it
comes out as "Mike's query".
Now this is all true assuming you don't have "magic_quotes_runtime" turned
on in your PHP.INI. While "magic_quotes_gpc" automatically escapes data
that is a result of a GET, POST, or cookies, "magic_quotes_runtime" escapes
ANY external data, INCLUDING data you get from databases. In that case,
you would need to manually use stripslashes() on data that you want to display.
Another possibility is that you have a program designed for a
"magic_quotes_gpc" setting of 0, and you have it set to 1. The program is
manually escaping the strings already, and then the server is doing it
again a SECOND time. In such an environment you'd end up getting something
like:
INSERT INTO table VALUES ('Mike\\\'s query')
...and the data WOULD be entered as:
Mike\'s query
This is just my opinion only, but it was exactly issues like these that
caused me to turn OFF magic_quotes_gpc. In my opinion this setting causes
more headaches than it's worth. I wish that php.ini-dist didn't have it
enabled by default. I suppose that's what I get for not using
php.ini-optimized.
The problem with shutting this setting off is that some scripts require
it. The biggest example of this is phpMyAdmin. In this case what I do is
create an .htaccess file that sets the option selectively for certain
directories. The contents are like:
php_flag magic_quotes_gpc on
This requires that your AllowOverride directive to be set to "Options" in
your httpd.conf.
I wouldn't know how to acheive this same per-directory configuration on a
machine running IIS. Maybe an IIS/PHP guru reading this can chime in.
--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]