Для чего необходимо пространство имен Механика?

MySQL: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с ... at line ...

Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в MySQL-запрос .

Пример того, что не делать («Плохая идея»):

$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);

Этот код может быть включен в страницу с формой для отправки с URL-адресом например http://example.com/edit.php?id=10 (для редактирования сообщения n ° 10)

Что произойдет, если представленный текст содержит одинарные кавычки ? $query закончится:

$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';

И когда этот запрос будет отправлен в MySQL, он будет жаловаться, что синтаксис неверен, потому что в середине есть отдельная одинарная кавычка.

Чтобы избежать таких ошибок, вы ДОЛЖНЫ всегда избегать данных перед использованием в запросе.

Экранирование данных перед использованием в SQL-запросе также очень важно, потому что если вы этого не сделаете, ваш скрипт будет быть открытым для инъекций SQL. SQL-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!

Документация:

60
задан Joachim Sauer 8 September 2013 в 07:37
поделиться

3 ответа

Это используется, чтобы не называть коллизии. Если бы Вы назвали свой сценарий foobar, и кто-то еще сделал также, то центральным репозиториям было бы нелегко различать их.

Поэтому необходимо обеспечить некоторый URL, которым Вы управляете (т.е. Вы владеете им или можете управлять им), который в основном означает "все, с которым URL мной". Теперь те центральные репозитории могут различать foobar от http://somesite.com/ и foobar от http://anothersite.com.

не необходимо для основной операции, но убедительно предполагавшее, если Вы хотите совместно использовать свои сценарии.

59
ответ дан Joachim Sauer 24 November 2019 в 17:51
поделиться

Одно место Вы видите практический эффект пространств имен, находится в хранении предпочтений. Nampsaces используются для однозначного определения сценариев для любых определенных для сценария сохраненных предпочтений.

, Например, если у Вас есть сценарий как это:

// ==UserScript==
// @name            Script Name
// @namespace       http://example.com
// @include         *
// ==/UserScript==


GM_setValue("key", "value");

, Который был бы сохранен в Ваших предпочтениях (доступный в prefs.js и about:config) как так:

greasemonkey.scriptvals. http://example.com/Script Примечание Name.key

формат: greasemonkey.scriptvals. namespace. scriptname. key/variablename

14
ответ дан Athena 24 November 2019 в 17:51
поделиться

В целом, пространство имен является абстрактным контекстом обеспечения контейнера для объектов (имена, или технические термины или слова), оно содержит и разрешение неоднозначности разрешения объектов, имеющих то же имя (нахождение в различных пространствах имен).

Источник: Пространство имен - Википедия

И более конкретный:

Это - URL, и Механик использует его для различения пользовательских сценариев, которые имеют то же имя, но записаны различными авторами. Если у Вас есть доменное имя, можно использовать его (или подкаталог) как пространство имен. Иначе можно использовать тег: URI.

@namespace является дополнительным. Если существующий, это может появиться только однажды. Если не существующий, это принимает значение по умолчанию к домену, с которого пользователь загрузил пользовательский сценарий.

Источник: Погружение В Механика - Метаданные

9
ответ дан Tamara Wijsman 24 November 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: