Просто используйте
readonly onfocus = "this.removeAttribute ('readonly');"
в дополнение к
autocomplete = "off"
на вход (ы), которые вы не хотите запоминать данные формы (username
, password
и т. Д.) .), как показано ниже:
<input type="text" name="UserName" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
<input type="password" name="Password" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
Проверено на последних версиях основных браузеров, т. е. Google Chrome
, Mozilla Firefox
, Microsoft Edge
и т. д., и работает как брелок. Надеюсь, это поможет ...
Вы можете использовать ""
, чтобы вставить цитату в строку, например:
dim sometext as String = "Hello" "Frank" "как дела?"
Что дает вам
Привет, Фрэнк, как дела?
Чтобы избежать цитаты, вам просто нужно добавить еще одну цитату, я считаю, что это то, что вам нужно:
Dim sql As String = "Select * from Usertask Where UserId = """ & Session("UserId") & """ and JobID=" & ddlReqTask.SelectedValue
Вы также можете использовать Chr (34)
в конкатентации.
Dim sql As String = "Select * from Usertask Where UserId = " & Chr(34) & Replace(Session("UserId"), Chr(34), Chr(34) & Chr(34)) & Chr(34) & " and JobID=" & CLng(ddlReqTask.SelectedValue)
Любой способ работает (другие примеры и этот). некоторые люди предпочитают этот вариант, поскольку он может быть менее запутанным, однако приведенные выше примеры не совсем понятны и не являются исключительно ракетостроением
Это уязвимость, связанная с внедрением SQL-кода, и вам не следует делать это. Делая это таким образом, вы позволяете своим пользователям выполнять любой запрос, который они хотят, предоставляя вам UserId, например
'; DROP TABLE Usertask; --
. Вместо этого используйте параметры. В зависимости от того, как вы выполняете SQL, есть разные способы сделать это; пожалуйста, покажите нам код, который выполняет SQL-запрос.
В ответ на ваш вопрос,
Dim StringWithQuotes As String = "Hello, I've got ""Quotes""!"
Эта строка будет
Здравствуйте, у меня есть «Цитаты»!
Я бы порекомендовал вам использовать параметризованный SQL вместо создания специального оператора SQL, подобного этому, поскольку вы можете оставить себя открытым для внедрения SQL. Это означает, что вам не нужно беспокоиться о конкатенации кавычек в строку, а также об улучшении производительности запросов (при условии, что сервер sql), поскольку это позволяет кэшировать и повторно использовать план выполнения.
например
Dim sql As String = "Select * from Usertask Where UserId = ? AND JobID = ?"
Затем добавьте 2 ADODB.Parameters. объекту Command, чтобы предоставить значения для 2 параметров например,
Set param = New ADODB.Parameter
param.Name = "@UserId"
param.Direction = adParamInput
param.Type = adVarChar
param.Size = (give size of user id field)
param.value = Session("UserId")
yourADOCommand.Parameters.Append param
И то же самое для параметра JobId.
Большинство серверов SQL, по моему опыту, нуждаются в одинарных кавычках для строк.
Лучший способ сделать это - позволить .net решить за вас, используя параметры SQL. Вот образец (также в VB.Net): http://www.knowdotnet.com/articles/dynamicsqlparameters.html
Это также имеет преимущество защиты от инъекций SQL.