Re: storing single and double quote in MySQL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ok. I just made one test and if you can then explain something to me:
I entered in form (textarea)
afan's "crazy" web
and stored in db using mysql-real_escape_string().
in DB, it's stored with slashes:
afan\'s \"crazy\" web

Then I pulled that from DB on three different ways:
$query = mysql_query("select test from dbtest where rec_id = 5");
$result = mysql_fetch_array($query);
echo $result['gen_value'];		//	gives afan\'s \"crazy\" web
echo stripslashes($result['gen_value']);		//	gives afan's "crazy" web
echo htmlentities($result['gen_value']);		//	gives afan\'s \"crazy\" web

if stripslashes() is not correcct to use - what then?!?

-afan



> afan@xxxxxxxx wrote:
>> after these very helpfull comments, I rad (again) Shiflett's (and few
>> others) Security articles about filtering input and output. And more I
>> read - less is clear :(
>>
>> Before, I used addslash() before I insert data in database and
>> strislshe()
>> to show them on screen.
>>
>> Later found it's not good and start using mysql_real_escae_string() to
>> add
>> to DB and stripslashe() to show on screen.
>
> If you have to stripslashes() when you pull data out of the db, you're
> doing something wrong (like running with magic_quotes* on, therefore
> double escaping your data).
>
>> But, also, I thought, mysql_real_escape_string() is "filter" for
>> everything, e.g. lets have three links (add, delete, edit) as
>
> mysql_real_escape_string() *only* escapes the data which needs to be
> escaped for your particular db version.
>
>> <a href=index.php?action=add&rec_id=$rec_id>Add new</a>
>> <a href=index.php?action=edit&rec_id=$rec_id>Edit</a>
>> <a href=index.php?action=delete&rec_id=$rec_id>Delete</a>
>> and was doing this way:
>> #index.php
>> <?php
>> if($_GET['action'])
>> {
>> 	$action = mysql_real_escape_string($_GET['action']);
>> 	$rec_id = mysql_real_escape_string($_GET['rec_id']);
>> 	switch($action)
>> 	{
>> 		case 'add':
>> 			// add new record
>> 		break;
>>
>> 		case 'edit':
>> 			// edit record
>> 		break;
>>
>> 		case 'delete':
>> 			// delete record
>> 		break;
>> 	}
>> }
>> ?>
>>
>> it means that $action I will never store in DB, neither show on screen.
>> I
>> then wrong to
>> $action = mysql_real_escape_string($_GET['action']);
>> or I should
>> $action = htmlentities($_GET['action']);
>> or
>> $action = $_GET['action'];
>> is just fine?
>
> If you're not going to display it or insert it...if all you're doing is
> checking the value of it, then you don't need to modify it.
>
> --
> John C. Nichel IV
> Programmer/System Admin (ÜberGeek)
> Dot Com Holdings of Buffalo
> 716.856.9675
> jnichel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux