Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 941
от 07.04.2008, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 475, Экспертов: 42
В номере:Вопросов: 5, Ответов: 8

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 130120: Здравствуйте! Не могу дойти до одной, вроде бы, простой вещи. При вводе куска текста из формы HTML в базу данных MySQL съедается косая черта. Поэтому код, который я использую, содержит две подряд функции addslashes: proba.p...
Вопрос № 130124: Здравстуйте! Проблема у меня со слешами. Чтобы нормально ввести в БД их, требуется проаддслешить два раза, иначе съедаются и доходят в ячейку в неизменном виде, а назад - вообще без них. Пример в приложении. Что не так? Почему как по руковод...
Вопрос № 130234: Здравие желаю товарсчи! как-то на RusFaq'e задавал о том, как можно увеличить картинку, приэтом н потеряв качества (без артефактов). Но так и не получилось :( Может кто щас поможет....
Вопрос № 130256: Здравствуйте, уважаемые эксперты. Имеется удаленная страница в интернете (не на моем сервере). Нужно открыть ее, затем записать в поле определенный текст, затем нажать на кнопку отправки. Это нужно повторять через определенный промежуток вре...
Вопрос № 130288: Здравствуйте! Подскажите как в PHP прописывается код условия является ли браузер пользователя Microsoft Internet Explorer или Netscape Navigator или другой. Спасибо за ответ....

Вопрос № 130.120
Здравствуйте!

Не могу дойти до одной, вроде бы, простой вещи. При вводе куска текста из формы HTML в базу данных MySQL съедается косая черта.

Поэтому код, который я использую, содержит две подряд функции addslashes:

proba.php_____________________________________
<?php
include $_SERVER['DOCUMENT_ROOT']."/../my_data.php";
$db=new mysqli($host,$username,$password,$db);

$text=isset($_POST['text'])?$_POST['text']:"";

if ($text!="") {
if (!get_magic_quotes_gpc()) $text=addslashes(addslashes($text));
@$query="insert into proba set ID=NULL, text='".$text."'";
@$db->query($query);
}

$query="select * from proba";
$result=$db->query($query);
$num=$result->num_rows;
$text="<b>".$num." строк-записей</b><br/>";
for ($i=0; $i<$num; $i++):
$row=$result->fetch_assoc();
if (!get_magic_quotes_gpc()) $text.=nl2br(stripslashes($row['text']))."<hr/>";
else $text.=$row['text']."<hr/>";
endfor;

echo $text;

echo "<form method=post action='proba.php'>
< type='text' name='text' wrap='physical' cols=80 rows=15 value=''></>
<input type='submit' value='Готово'>
</form>";
?>
____________________________________

Кстати, обратил внимание, что на этом форуме часто бывают проблемы с правильной передачей слешей в форме приложения. Поэтому, для более правильной передачи кода ею сейчас не пользуюсь.

В чём моя ошибка? Делаю так, как написано в руководствах - в базу поступают кастированные слеши. Добавляются только при двойном использовании функции.
Отправлен: 01.04.2008, 22:46
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 9)

Отвечает: Иван Сергеевич
Здравствуйте, Прим Палвер!

Директива magic_quote_gpc экранирует спецсимволы (одиночную и двойную кавычки и обртный слэш), добавляя перед ними обратный слэш. Это действует только для данных в GET, POST, COOKIE (с чем собственно и связана аббревиатура gpc). Если она отключена, вручную экранируем данные ОДИН раз функцией addslashes().
В базе запишется введенная пользователем строка, т.к. "экранные" обратные слэши уберутся MYSQL'ем. Проблема только при запросе из php. Как мы уже знаем, magic_quote_gpc используется ТОЛЬКО для GET, POST, COOKIE. Поэтому бессмысленно ее проверять при обработке запроса к БД. Таким образом, убираем вызов stripslashes() и должно быть счастье :)

PS. Перед addslashes я бы порекомендовал использовать функцию htmlspecialchars($text, ENT_QUOTES), чтобы выводимые в дальнейшем другие спецсимволы (например, угловые скобки) воспринимались браузером как обычный текст.
Ответ отправил: Иван Сергеевич (статус: 6-ой класс)
Ответ отправлен: 02.04.2008, 09:16
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Так всё-таки, следующая комбинация правильна? Перед вставкой в БД: $message=addslashes(htmlspecialchars(trim($message))); if (!get_magic_quotes_gpc()) $message=addslashes($message); Т.е., один раз слэш вставляется в любом случае, а второй - в зависимости от get_magic_quotes_gpc().


Вопрос № 130.124
Здравстуйте!

Проблема у меня со слешами. Чтобы нормально ввести в БД их, требуется проаддслешить два раза, иначе съедаются и доходят в ячейку в неизменном виде, а назад - вообще без них. Пример в приложении. Что не так? Почему как по руководствам не выходит один раз использовать addslashes?

Приложение:

Отправлен: 01.04.2008, 23:35
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: PVS@Lviv
Здравствуйте, Прим Палвер!
Слэш - служебный символ mysql'я. Тоесть один раз stripslashes происходит при операции INSERT.
Ответ отправил: PVS@Lviv (статус: Специалист)
Ответ отправлен: 02.04.2008, 10:34
Оценка за ответ: 4
Комментарий оценки:
Слишком лаконично. Мой подход правилен или нет? - вот в чём вопрос. Т.е., вот так: $message=addslashes(htmlspecialchars(trim($message))); if (!get_magic_quotes_gpc()) $message=addslashes($message);


Вопрос № 130.234
Здравие желаю товарсчи! как-то на RusFaq'e задавал о том, как можно увеличить картинку, приэтом н потеряв качества (без артефактов). Но так и не получилось :( Может кто щас поможет.
Отправлен: 02.04.2008, 16:12
Вопрос задал: Khalafov Rashad (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Командин Константин Евгениевич
Здравствуйте, Khalafov Rashad!
Такая операция в принципе не возможно при использовании растровых изображений. Увеличение (маштабирование) без потери качества изображений, возможно только с векторными изображениями.
Ответ отправил: Командин Константин Евгениевич (статус: 2-ой класс)
Ответ отправлен: 02.04.2008, 17:04


Вопрос № 130.256
Здравствуйте, уважаемые эксперты.

Имеется удаленная страница в интернете (не на моем сервере). Нужно открыть ее, затем записать в поле определенный текст, затем нажать на кнопку отправки. Это нужно повторять через определенный промежуток времени.

Помогите, пожалуйста, хотя бы с первой частью.

Заранее спасибо.
Отправлен: 02.04.2008, 19:24
Вопрос задала: Angel7 (статус: Специалист)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Чаднов Н
Здравствуйте, Angel7!
хм. Ну то что ты описал делаеться не так.

Как можно сделать в приложении.

$data это данные которые ты ложишь.
$put это путь к файлу.
$host это сервер
в fsockopen 1, адрес сервера. 2 порт, 3 ошибка номер, ошибка строка, время ожидания.

Приложение:

Ответ отправил: Чаднов Н (статус: 3-ий класс)
Ответ отправлен: 02.04.2008, 19:53
Оценка за ответ: 4
Комментарий оценки:
Я прекрасно понимаю, что хочу сделать. Это Вы не до конца разобрались в вопросе. Мне нужно зайти на страницу, затем записать информацию (ее много) в поле. потом отправить на сервер. Но все равно спасибо за попытку.

Отвечает: Драк Георгий
Здравствуйте, Angel7!

Куда правильнее будет проследить куда с этой страницы отправляются данные и обращаться непосредственно по этому адресу. Если форма на удалённой странице передаёт данные методом get то всё совсем просто - смотрите адрес и названия переменных и эмулируете обращение. Пример 1 в приложение. Если же форма отправляет данные методом post, то стоит воспользоваться сокетами. Пример 2 в приложении.

Приложение:

---------
Sonic always help you, if he wish...

Ответ отправил: Драк Георгий (статус: 3-ий класс)
Ответ отправлен: 02.04.2008, 19:55

Отвечает: Командин Константин Евгениевич
Здравствуйте, Angel7!
В настоящее время чаще всего используют два метода отправки форм POST и GET, какой метод используется в вашем случае необходимо посмотреть исходный код того сайта. Также вам надо будет посмотреть какие поля там используются (input).
ну а далее если не обращатся к какимто сторонним программа можно написать локальную страничку и вставить в нее примерно такой код на JavaScript и HTML в приложении:

ЗЫ. еще нужно будет проверить путь в ACTION чтобы знать куда отправлять вашу форму.
ЗЗЫ: в данном примере данные формы будут отсылаться каждую секунду, чтобы скорректировать время смотри SetTimeOut, время задается вторым аргументом в тысячных секунды.

Приложение:

Ответ отправил: Командин Константин Евгениевич (статус: 2-ой класс)
Ответ отправлен: 02.04.2008, 21:11


Вопрос № 130.288
Здравствуйте! Подскажите как в PHP прописывается код условия является ли браузер пользователя Microsoft Internet Explorer или Netscape Navigator или другой. Спасибо за ответ.
Отправлен: 02.04.2008, 22:03
Вопрос задал: Dimanq (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Товарищ Бородин / Borodul
Здравствуйте, Dimanq!
Информация о браузере пользователя содержится в массиве $_SERVER, ключ - 'HTTP_USER_AGENT'. Беда в том, что определить браузер простым сравнением переменной $_SERVER['HTTP_USER_AGENT'] с какой-либо строкой довольно непросто - сначала следует эту переменную прочитать с помощью какой-либо функции, которая точно определит браузер(то есть, вычленит его из строки, а она довольно длинная). Попробуйте сами - PHP определяет, например, IE как Mozilla-браузер, и только где-то в глубине строки уже пишет, что программа называется Internet Explorer версии такой-то. Просто сервер определяет не только браузеры, но и любые пользовательские агенты, которые обращаются к серверу, например, качательные программы.
С уважением, Товарищ Бородин / Borodul
---------
- Я вчера коньяк пил, 25 лет выдержки, вот это выдержка!
- Ерунда! Вот я вчера выпил 5 литров пива и поехал от Сочи до Иваново на автобусе без остановок. Вот это выдержка...
Ответ отправил: Товарищ Бородин / Borodul (статус: Профессионал)
Россия, Новосибирск
Тел.: +7-923-245-3366
ICQ: 346988855
----
Ответ отправлен: 02.04.2008, 22:13

Отвечает: M@gi$†e®
Здравствуйте, Dimanq!
Видел как-то класс "browser.class" от Paul Scott (если мне не изменяет память). Так вот, с помощью этого класса можно узнать браузер пользователя.
Поищите в гугле.
---------
Aquila non Capta Muscas
Ответ отправил: M@gi$†e® (статус: 10-ый класс)
Ответ отправлен: 03.04.2008, 00:49


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.72.8 от 05.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное