PDA

Просмотр полной версии : как заставить php не парсировать "\"


darksranger
24.09.2008, 04:25
вобщем проблема вот в чем,из flash передаю путь к файлу, например
path\folder1\image1.jpg

в flash вижу, что в php в момент запроса в mysql, путь правильный тоесть с "\", но при получении данных средствами php, тажа строка уже выводится без "\"
pathfolder1image1.jpg
в чем может быть проблема ?

Crazy
27.09.2008, 14:47
в чем может быть проблема ?

Проблема в том, что телепаты в отпуске. Ты можешь их подождать или таки запостишь свой PHP-код... It's up to you.

Mnilionic
28.09.2008, 02:56
обратные слэши нужно экранировать, причём при записи в MySQL из PHP !2! раза.
А почему они у вас вообще обратные?

Crazy
28.09.2008, 10:19
причём при записи в MySQL из PHP !2! раза.

Чушь.

Division
28.09.2008, 11:33
причём при записи в MySQL из PHP !2! раза.
Действительно чушь
(:

Mnilionic
28.09.2008, 17:25
$str = '\\\\path\\\\file.ext';
$sql = "INSERT INTO news SET text = '$str'";
$result = mysql_query($sql);

1 и 3 слеш снимает пхп при отправе запроса
2 слеш снимает MySQL при обработке

Crazy
28.09.2008, 18:58
[CODE]
1 и 3 слеш снимает пхп при отправе запроса


Чушь и бред. Эти слэши отсекает парсер PHP при разборе строкового литерала. Ни в какой запрос они никому не отправляются.

Автор треда передает строку в PHP снаружи. Соответственно, никакого стрового литерала в исходном коде не будет и строка, если не принять специальных мер, будет передана в MySQL с в точности тем количеством "\", с которым была получена.

Если PHP криво настроен (http://ru2.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc), то их станет даже больше.

P.S. Это я уже не говорю о том, что нужно не "добавлять слэши для MySQL", а вызывать функцию mysql_real_escape_string (http://ru2.php.net/manual/en/function.mysql-real-escape-string.php).

P.P.S. "Книжки -- читать, траву -- курить. Не наоборот." (c)

Mnilionic
28.09.2008, 19:13
поэтому делается просто

$str = addcslashes($str_from_flash, '\\');

Crazy
28.09.2008, 19:55
поэтому делается просто

$str = addcslashes($str_from_flash, '\\');


...и, поскольку эта функция ничего не знает о кодировке, используемой при обмене с базой, мы открываем себя для SQL Injection. Браво, молодой человек.

Так что читайте выше про mysql_real_escape_string, благо ссылка дана непосредственно на мануал, и просвещайтесь.

Mnilionic
28.09.2008, 23:18
ёлки-иголки "чушь, чушь и бред, просвещайесь" - вежливость никто не отменял.
А я ошибался, признаю

darksranger
01.10.2008, 09:25
код обычный, поэтому не привел, но вобщем вот

в php скрипт текст попадает в правильном виде
об этом говорит echo в flash, из которого данные и попадают,
а вот когда получаешь данные, они приходят без "\"
кладется в базу так

конект
....

$path = "'".$path."'";
$query = "insert into table (path) values ($path)";


обратные слэши, так как путь локальный ...
слеши кстате, только обратные убераются из строки, если поставить "/" то все ок
поэтому тема впринцепи не актуальна

Crazy
01.10.2008, 10:51
слеши кстате, только обратные убераются из строки, если поставить "/" то все ок
поэтому тема впринцепи не актуальна

Читаю и плачу (c) почти по поручику Ржевскому

Молодой человек, во-первых, выше дали сразу два решения: правильное и не совсем правильное. Но оба -- гораздо лучше, чем то, что Вы сделали.

На досуге почитайте про "sql injection".

P.S. Так по какому адресу отдеплоен ваш чудесный скрипт, вот так честно делающий '$query = "insert into table (path) values ($path)";' ? :)

darksranger
01.10.2008, 23:17
ну я сразу отпишусь, чтобы не было косяков в мою сторону :)
php не увлекаюсь, использую только по назначению :) на досуге другие книги читаю ( as3 ), поэтому времени нету )))

впринцепи, если бы проблема так и висела, я бы конечно обратился к справке по sql injection ...

собственно мой код написан, частично после изучения сурсов DLE ( data life engine или как там ) и частично, по справке, по mysql
так что я не претендую, на красочный код на php, просто нужно чтобы работало ), оно работает ! остальное делает as3 ... и его такие телодвижения устраивают :D ( знаю что не правильный подход к проблемме, но реально времени ковырятся нету )

и если не сложно ( уж раз завели тему ), раскажите чем мое "решение" плохо,
будет интересно просветится !

Crazy
01.10.2008, 23:45
раскажите чем мое "решение" плохо,

Тем, что допускает SQL Injection.

darksranger
02.10.2008, 15:26
спасибо ! чуствую нада всетаки напряч гугл ...