Заменил $ HTTP_GET_VARS на $ _GET, но не работает - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть следующий код, который не работает для меня.Я имел обыкновение иметь $ HTTP_GET_VARS вместо $ _GET, но затем обновился до PHP 5, и теперь все сломалось.Есть мысли о том, что я здесь делаю не так?

<?php
$_GET['SubCat'];
$_GET['Location'];
$db = mysql_connect("localhost", "xxxx", "xxxx");
mysql_select_db("outdoors",$db);
if ($Location) {
$result = mysql_query("SELECT ID, Longitude, URL, SiteName, Description FROM hunting WHERE SubCategory = '$SubCat' AND Location = '$Location' AND Status <> 'HIDDEN' ORDER BY SiteName",$db);
} else {
$result = mysql_query("SELECT ID, Longitude, URL, SiteName, Description FROM hunting WHERE SubCategory = '$SubCat' AND Status <> 'HIDDEN' ORDER BY SiteName",$db);
<More unrelated stuff after this>

Переменная будет передана по следующей ссылке:

hunting.php?SubCat=Hunting+Locations

1 Ответ

6 голосов
/ 28 апреля 2011

По первому вопросу:

Вы должны хранить его в любой переменной, такой как эта

$SubCat = $_GET['SubCat'];
$Location = $_GET['Location']; 

Или обратитесь к нему напрямую.

По второму вопросу:

Есть идеи о том, как легко заменить эти две строки в нескольких дюжинах файлов на моем сервере?

Используйте глобальную функцию поиска, чтобы охватить весь каталог. Вы найдете это в любом из популярных редакторов. Найдите $_GET['SubCat']; и замените его на $SubCat = $_GET['SubCat'];. Просто убедитесь, что это уникальное имя.

На примечании стороны:

Вы не используете какую-либо проверку типов или экранирование ввода и прямо указываете это в своем выражении sql. ОЧЕНЬ ОПАСНО . Пожалуйста, используйте PDO или хотя бы экранирующую функцию перед передачей, чтобы избежать атак с использованием SQL-инъекций

...