Получение пути к каталогу Платформы.NET

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-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!

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

70
задан Csharp 24 April 2013 в 21:29
поделиться

4 ответа

Путь к каталогу установки CLR, активного для текущего приложения.NET, может быть получен при помощи следующего метода:

System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()

я был бы сильно совет против чтения реестра непосредственно. Например, когда приложение.NET работает в системах на 64 бита, CLR может или быть загружен из "C:\Windows\Microsoft.NET\Framework64\v2.0.50727" (AnyCPU, x64 цели компиляции) или из "C:\Windows\Microsoft.NET\Framework\v2.0.50727" (x86 цель компиляции). Чтение реестра будет не , говорят Вам, какой из этих двух каталогов использовался текущим CLR.

Другой важный факт - то, что "текущий CLR" будет "2.0" для.NET 2.0.NET 3.0 и.NET 3,5 приложения. Это означает, что GetRuntimeDirectory () вызов возвратит 2,0 каталога даже в.NET 3,5 приложения (которые загружают некоторые их блоки из 3,5 каталогов). В зависимости от Вашей интерпретации термина "путь к каталогу Платформы.NET", GetRuntimeDirectory не мог бы быть информацией, которую Вы ищете ("каталог CLR" по сравнению с "каталогом, из которого 3,5 блока прибывают из").

178
ответ дан Milan Gardian 24 November 2019 в 13:15
поделиться

Более легкий путь состоит в том, чтобы включать Microsoft. Сборка. Блок утилит и использование

using Microsoft.Build.Utilities;
ToolLocationHelper.GetPathToDotNetFramework(
        TargetDotNetFrameworkVersion.VersionLatest);
40
ответ дан Brian Rudolph 24 November 2019 в 13:15
поделиться

Можно захватить его из Windows Registry:

using System;
using Microsoft.Win32;

//...

public static string GetFrameworkDirectory()
{
  // This is the location of the .Net Framework Registry Key
  string framworkRegPath = @"Software\Microsoft\.NetFramework";

  // Get a non-writable key from the registry
  RegistryKey netFramework = Registry.LocalMachine.OpenSubKey(framworkRegPath, false);

  // Retrieve the install root path for the framework
  string installRoot = netFramework.GetValue("InstallRoot").ToString();

  // Retrieve the version of the framework executing this program
  string version = string.Format(@"v{0}.{1}.{2}\",
    Environment.Version.Major, 
    Environment.Version.Minor,
    Environment.Version.Build); 

  // Return the path of the framework
  return System.IO.Path.Combine(installRoot, version);     
}

Источник

2
ответ дан CMS 24 November 2019 в 13:15
поделиться

Считайте значение [HKLM] \Software\Microsoft. Ключ NetFramework\InstallRoot - Вы получите "C:\WINDOWS\Microsoft.NET\Framework". Затем добавьте с желаемой версией платформы.

-3
ответ дан Ihar Voitka 24 November 2019 в 13:15
поделиться
Другие вопросы по тегам:

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