Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с insert [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): « 1 2 [3] 4 »   

> Без описания
viperdev
Отправлено: 19 Апреля, 2010 - 23:41:38
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




ALEN пишет:
chaynyk пишет:
вой вариант правильный, тока не пойму откуда эта переменная $mysql ???

то я просто указываю коннект к бд так - замени на свой

и посмотри функцию экранирования символов для записи в БД или ручками одинарные и двойные ковычки экранируй , в общем пробуй...

Попробовал вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $in='<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">';
  3. $result =mysql_query("INSERT INTO `day_prog` SET `program`='".$in."'",$db);
  4.  

данные записались в бд.
а почему вот так не пишется то что напарсенно?:
PHP:
скопировать код в буфер обмена
  1.  
  2. $in = str_replace($in_arr,$out_arr,$content);
  3. $result =mysql_query("INSERT INTO `day_prog` SET `program`='".$in."'",$db);
  4.  
 
 Top
chaynyk
Отправлено: 19 Апреля, 2010 - 23:48:04
Post Id



Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Сент. 2007  
Откуда: MOSCOW


Помог: 0 раз(а)




viperdev пишет:
ALEN пишет:
chaynyk пишет:
вой вариант правильный, тока не пойму откуда эта переменная $mysql ???

то я просто указываю коннект к бд так - замени на свой

и посмотри функцию экранирования символов для записи в БД или ручками одинарные и двойные ковычки экранируй , в общем пробуй...

Попробовал вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $in='<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">';
  3. $result =mysql_query("INSERT INTO `day_prog` SET `program`='".$in."'",$db);
  4.  

данные записались в бд.
а почему вот так не пишется то что напарсенно?:
PHP:
скопировать код в буфер обмена
  1.  
  2. $in = str_replace($in_arr,$out_arr,$content);
  3. $result =mysql_query("INSERT INTO `day_prog` SET `program`='".$in."'",$db);
  4.  


Наверное много напарсил, что объем данных не влизает.
Более понятно, если у тебя в таблице тип данных int(5) -5 символов. Ты никогда не воткнешь туда 6 символов и более.


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
viperdev
Отправлено: 19 Апреля, 2010 - 23:50:32
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Более понятно, если у тебя в таблице тип данных int(5) -5 символов. Ты никогда не воткнешь туда 6 символов и более.[/quote]
Вот только тип данных text

Наверное много напарсил, что объем данных не влизает.

Разве 60 килобайт это много?

(Отредактировано автором: 19 Апреля, 2010 - 23:58:59)

 
 Top
chaynyk
Отправлено: 20 Апреля, 2010 - 00:12:33
Post Id



Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Сент. 2007  
Откуда: MOSCOW


Помог: 0 раз(а)




viperdev пишет:
Более понятно, если у тебя в таблице тип данных int(5) -5 символов. Ты никогда не воткнешь туда 6 символов и более.

Вот только тип данных text

Наверное много напарсил, что объем данных не влизает.

Разве 60 килобайт это много?[/quote]
Поставь LONGTEXT


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Апреля, 2010 - 00:14:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А без str_replace(); что говорит???
 
 Top
viperdev
Отправлено: 20 Апреля, 2010 - 00:21:51
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




DeepVarvar пишет:
А без str_replace(); что говорит???

в переменной возвращает true, в result false и в базу ничего не пишет
(Добавление)
chaynyk пишет:
viperdev пишет:
Более понятно, если у тебя в таблице тип данных int(5) -5 символов. Ты никогда не воткнешь туда 6 символов и более.

Вот только тип данных text

Наверное много напарсил, что объем данных не влизает.

Разве 60 килобайт это много?

Поставь LONGTEXT[/quote]
Тоже не помагает
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Апреля, 2010 - 00:26:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Значит варианта три:

1. Не хватает места в поле для большего кол-ва символов (сменить тип или увеличить "вместимость" поля)
2. Обработка в str_replace(); для базы является невалидной (попробуйте вместо char(); заюзать "живые" символы)
3. Причиной может быть несоответствие кодировок, на что я давал ссылку выше...

Сорри я имел виду не char(); a chr();

(Отредактировано автором: 20 Апреля, 2010 - 00:29:06)

 
 Top
viperdev
Отправлено: 20 Апреля, 2010 - 00:30:56
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




DeepVarvar пишет:
Значит варианта три:

1. Не хватает места в поле для большего кол-ва символов (сменить тип или увеличить "вместимость" поля)
2. Обработка в str_replace(); для базы является невалидной (попробуйте вместо char(); заюзать "живые" символы)
3. Причиной может быть несоответствие кодировок, на что я давал ссылку выше...

1 - не может быть тип поля был text стал longtext
3. - это я тоже проверил.
2. -
Цитата:
попробуйте вместо char(); заюзать "живые" символы

Уже нашел, щас попробуем
Цитата:
Сорри я имел виду не char(); a chr();
я догадался)

(Отредактировано автором: 20 Апреля, 2010 - 00:35:35)

 
 Top
chaynyk
Отправлено: 20 Апреля, 2010 - 00:40:37
Post Id



Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Сент. 2007  
Откуда: MOSCOW


Помог: 0 раз(а)




DeepVarvar пишет:
3. Причиной может быть несоответствие кодировок, на что я давал ссылку выше...

Тоже кстати вариант, с такой причиной сталкивался.
Да вообще, есть еше такая фишка присутствие спец символов ", ' и т.д.
Попробуй сохранить все в файл, и посмотри что там ты пытаешься воткнуть.
Пример

Может там какие нибудь символы все гадят.


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Апреля, 2010 - 00:50:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




chaynyk пишет:
Да вообще, есть еше такая фишка присутствие спец символов ", ' и т.д.
Попробуй сохранить все в файл, и посмотри что там ты пытаешься воткнуть.

Это я уже спрашивал - сказано было што проблемм нет, но проверить записью в файл стоило бы...
Ладно ждем ответа топикастера...
 
 Top
viperdev
Отправлено: 20 Апреля, 2010 - 01:03:05
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




chaynyk пишет:
DeepVarvar пишет:
3. Причиной может быть несоответствие кодировок, на что я давал ссылку выше...

Тоже кстати вариант, с такой причиной сталкивался.
Да вообще, есть еше такая фишка присутствие спец символов ", ' и т.д.
Попробуй сохранить все в файл, и посмотри что там ты пытаешься воткнуть.
Пример

Может там какие нибудь символы все гадят.

В бд записалась пустая строка т.е. вместо инфы из txt пустота, буду пробовать разбираться с "живыми" символами.
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Апреля, 2010 - 01:24:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




$in_arr = array (
"Р","А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н",
и так далее....
 
 Top
ALEN
Отправлено: 20 Апреля, 2010 - 09:03:05
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `day_prog` SET `program`='".str_replace("'","\'",$in)."'",$db);


Второй вариант:

CODE (htmlphp):
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `day_prog` SET `program`='".mysql_escape_string($in)."'",$db);

(Добавление)
chaynyk
Тип поля ничего не даст, TEXT - самый универсальный вариант и больше не нужно, тут проблема именно в экранировании (99%) , я обычно если что-то невнимательно делаю и не экранирую символы сам запрос загоняю в переменную и если неудачная запись, я его вывожу и там разбираю в чем проблема. У автора наверняка есть одинарные ковычки - поэтому их нужно экранировать - в том числе этот способ - мера предосторожности в запросах к БД в SQL-инъекциях.
Пример:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $string="qweewq', `id`='999'";
  2. $insert="INSERT INTO `day_prog` SET `program`='".$in."'";
  3. mysql_query($insert,$db);


Что попадет в БД ??

А вот пример, как раньше можно было взламывать много сайтов:
При авторизации в логин пишем "admin' or '1'='1'" , в поле пароль что угодно вносишь , а вот проверка логина и пароля в движке вот такая:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $insert="SELECT * FROM `day_prog` where `user`='".$_POST['login']."' and `password`='".$_POST['passwd']."'";
  3. mysql_query($insert,$db);


Вот и делайте выводы, какие могут быть непредсказуемости...
 
 Top
JustUserR
Отправлено: 20 Апреля, 2010 - 14:02:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ALEN пишет:
`user`='".$_POST['login']."' and `password`='".$_POST['passwd']."'";
Сразу скажу что такой PHP-код лучше не использовать в реальный PHP-скриптах - лучше проэкранировать вставляемые значения с помощью mysql_real_escape_string потому что она экранируется в зависимости от кодировки соединения с БД - что немаловажно в том случае если локаль PHP-скрипта и кодировка соединия с БД существенно отличаются


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
viperdev
Отправлено: 20 Апреля, 2010 - 15:52:23
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Спасибо большое за помощь всем, помогло mysql_real_escape_string, только появилась другая проблема в базу пишется только половина информации, а объем ее всего 60 килобайт, как с этим быть?
 
 Top
Страниц (4): « 1 2 [3] 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB