Как делают я удаляю: парение?

Я думаю, что если кто-то захочет использовать PHP и MySQL или какой-нибудь другой сервер базы данных:

  1. Подумайте об обучении PDO (объекты данных PHP) - это база данных уровень доступа, обеспечивающий единый метод доступа к нескольким базам данных.
  2. Подумайте об обучении MySQLi
  3. Используйте собственные функции PHP, такие как: strip_tags , mysql_real_escape_string или если переменная числовая, просто (int)$foo. Подробнее о типах переменных в PHP читайте здесь . Если вы используете библиотеки, такие как PDO или MySQLi, всегда используйте PDO :: quote () и mysqli_real_escape_string () .

Примеры библиотек:

---- PDO

----- Никакие заполнители - не спешили для SQL-инъекций! Это плохо

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values ($name, $addr, $city)");

----- Без имени заполнители

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values (?, ?, ?);

----- Именованные заполнители

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) value (:name, :addr, :city)");

--- MySQLi

$request = $mysqliConnection->prepare('
       SELECT * FROM trainers
       WHERE name = ?
       AND email = ?
       AND last_login > ?');

    $query->bind_param('first_param', 'second_param', $mail, time() - 3600);
    $query->execute();

PS:

PDO побеждает в этом сражении с легкостью. Благодаря поддержке двенадцати различных драйверов баз данных и именованных параметров мы можем игнорировать небольшую потерю производительности и привыкнуть к ее API. С точки зрения безопасности, оба они являются безопасными, пока разработчик использует их так, как они должны использоваться

. Но хотя PDO и MySQLi довольно быстры, MySQLi выполняет незначительную скорость в тестах - ~ 2,5% для незаготовленных отчетов и ~ 6,5% для подготовленных.

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

27
задан MC Emperor 5 November 2013 в 10:54
поделиться

6 ответов

Примените два класса к relvant элементу. каждый содержит поведение при наведении курсора, и каждый содержит все другие моделирование.

можно тогда использовать метод jquery

$(element).removeClass('hover');

, чтобы удалить класс с поведением при наведении курсора и затем применяться независимо от того, что Вы хотите использовать

$(element).bind('mouseover', function () { doSomething(); });
$(element).bind('mouseout', function () { doSomething(); });
29
ответ дан benlumley 28 November 2019 в 04:40
поделиться

Как насчет того, чтобы поместить :hover нейтрализация в таблице стилей, которая только загружается, если JavaScript отключен?

<noscript>
  <link href="noscript.css" rel="stylesheet" type="text/css" />
</noscript>
18
ответ дан foxy 28 November 2019 в 04:40
поделиться

Я думаю, что лучший подход должен был бы оставить :hover поведение как нейтрализация для пользователей не-JavaScript и затем использовать JQuery для создания наведения мыши и обработчиков событий mouseOut для создания различного эффекта для поддерживающих JavaScript пользователей.

JQuery Библиотека JavaScript - События/наведение мыши

3
ответ дан Andrew Hare 28 November 2019 в 04:40
поделиться

Я НАШЕЛ ВАШЕ РЕШЕНИЕ

в основном вы начинаете с переопределения того, что вы делали при наведении курсора CSS. (естественно, вы бы сделали это, динамически извлекая информацию из стиля) затем делайте все, что хотите, в jquery с событиями mouseover / mouseout

, это позволяет вам сохранить событие: hover в вашем css, потому что jquery привязывает ваши исходные стили к элементу. По сути, отключение события: hover.

если ваш css:

a.class {
  background-color: #000000;
  background-position: 0 0;
  }
a.class:hover {
  background-color: #ffffff;
  background-position: 100% -50px;
  }

ваш jquery будет примерно таким:

jQuery("a.class").each(function () {

  var oldBackgroundColor = jQuery(this).css("backgroundColor");
  var oldBackgroundPosition = jQuery(this).css("backgroundPosition");

  jQuery(".class").css({
        'backgroundColor':oldBackgroundColor,
        'backgroundPosition':oldBackgroundPosition
  });

})
.bind("mouseover", function() {

  doSomething();

})
.bind("mouseout", function() {

  doSomething();

})
1
ответ дан 28 November 2019 в 04:40
поделиться

Вы можете глобально включить поведение для всего документа с помощью одного правила CSS, а затем отключите это правило одним оператором в javascript при установке нового обработчика событий.

Добавьте класс в свой тег тела html:

<html>
  <body class="use-hover">
  ...

Поведение по умолчанию в вашем CSS, скажем, жирные ссылки при наведении:

body.use-hover a:hover
  font-weight: bold

И в вашем js, когда запуск удалит поведение по умолчанию и сделает что-то еще:

$(function() {
  $('body').removeClass('use-hover');
  $('a').live('mouseover', function() {
    // Do something when hovered
  }).live('mouseout', function() {
    // Do something after hover is lost
  });
});
0
ответ дан 28 November 2019 в 04:40
поделиться

Вот решение без классов взлома:

CSS:

a {color: blue;}
a:hover {color: red;}

jQuery (использует jQueryUI для анимации цвета):

$('a').hover( 
  function() {
    $(this)
      .css('color','blue')
      .animate({'color': 'red'}, 400);
  },
  function() {
    $(this)
      .animate({'color': 'blue'}, 400);
  }
);

демонстрация

12
ответ дан 28 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

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