Простую альтернативу этой проблеме можно решить, предоставив соответствующие разрешения в самой базе данных. Например: если вы используете базу данных mysql, введите в базу данных через терминал или предоставленный интерфейс и просто следуйте этой команде:
GRANT SELECT, INSERT, DELETE ON database TO username@'localhost' IDENTIFIED BY 'password';
Это ограничит пользователя ограничиться только указанным запросом только. Удалите разрешение удаления, и поэтому данные никогда не будут удалены из запроса, запущенного с php-страницы. Второе, что нужно сделать, это очистить привилегии, чтобы mysql обновлял разрешения и обновления.
FLUSH PRIVILEGES;
Дополнительная информация о flush .
To см. текущие привилегии для пользователя, вызывают следующий запрос.
select * from mysql.user where User='username';
Подробнее о GRANT .
Используйте event.stopPropagation () .
<span onclick="event.stopPropagation(); alert('you clicked inside the header');">something inside the header</span>
Для IE: window.event.cancelBubble = true
<span onclick="window.event.cancelBubble = true; alert('you clicked inside the header');">something inside the header</span>
Существует два способа получить объект-событие из функции:
, Если необходимо поддерживать браузеры прежней версии, которые не следуют рекомендациям W3C, обычно в функции, Вы использовали бы что-то как следующее:
function(e) {
var event = e || window.event;
[...];
}
, который проверил бы сначала один, и затем другой и хранилище, какой бы ни был найден в переменной события. Однако во встроенном обработчике событий нет e
объект использовать. В этом случае необходимо использовать в своих интересах arguments
набор, который всегда доступен и относится к полному набору аргументов, переданных функции:
onclick="var event = arguments[0] || window.event; [...]"
Однако вообще говоря, необходимо избегать встроенных обработчиков событий, если Вы должны к чему-либо сложному как останавливающееся распространение. Запись Ваших обработчиков событий отдельно и присоединения их к элементам является намного лучшей идеей в среднесрочном и долгосрочном, и для удобочитаемости и для пригодности для обслуживания.
Следует иметь в виду, что window.event не поддерживается в FireFox, и поэтому это должно быть что-то вроде:
e.cancelBubble = true
Или, можно использовать стандарт W3C для FireFox:
e.stopPropagation();
, Если Вы хотите стать необычными, можно сделать это:
function myEventHandler(e)
{
if (!e)
e = window.event;
//IE9 & Other Browsers
if (e.stopPropagation) {
e.stopPropagation();
}
//IE8 and Lower
else {
e.cancelBubble = true;
}
}
Согласно эта страница , в IE Вам нужно:
event.cancelBubble = верный
Я не могу прокомментировать из-за Кармы, таким образом, я пишу это как целый ответ: Согласно ответу Gareth (var e = аргументы [0] || window.event; [...]), я использовал эту остроту, встроенную на onclick для быстрого взлома:
<div onclick="(arguments[0] || window.event).stopPropagation();">..</div>
я знаю, что поздно, но я хотел сообщить, что это работает в одной строке. Фигурные скобки возвращают событие, которое имеет stopPropagation-функцию, присоединенную в обоих случаях, таким образом, я пытался инкапсулировать их в фигурных скобках как в, если и.... она работает.:)