[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как в SELECT поставить переменную на место таблицы
Страницы: 1, 2
Миша
Цитата (Игорь_Vasinsky @ 27.01.2016 - 12:13)
Цитата
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url); // Выдёргиваем

нафига?))) чё просто параметр из GET вытащить не судьба если там in_array() есть уже

Ок :rolleyes:

$table = $GET['table']; // Или так, но если table не меняется


_____________
Принимаю заказы, писать в ЛС
Valick
SQL инъекция в данном случае на втором плане.
Налицо ошибка в логике приложения, если имя таблицы передаётся в параметрах.
Занавес.

_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
Цитата
Ок :rolleyes:


у тебя память чёли короткая :D твой же код

$tabl_original = array("foo", "bar", "hello", "world"); //  Таблицы, которые реально существуют

if(in_array($table, $tabl_original)){
$query = "SELECT * FROM ".$table;
} else {
$query = FALSE;
}


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
VSK
Выдает ошибку

function catalog (){
$url = 'http://test/index.php?view=tovar&table=test';
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url); // Выдёргиваем
$tabl_original = array("mk1002ba", "mk1003ba"); // Таблицы, которые реально существуют

if(in_array($table, $tabl_original)){
$query = "SELECT * FROM ".$table;
} else {
$query = FALSE;

$res=mysql_query($query) or die (mysql_query()); здесь выдает ошибку!

$cat=array();

while ($row = mysql_fetch_array($res)) {
$cat[] = $row;
}
return $cat;
}
}
sergeiss
Цитата (VSK @ 27.01.2016 - 12:55)
$url = 'http://test/index.php?view=tovar&table=test';
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url); // Выдёргиваем

Забудь об этом изврате!!!! А МедведЮ - а-та-та за плохие советы.

VSK, у тебя же есть GET - используй его. Не надо никаких регулярок в данном случае.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Игорь_Vasinsky
Цитата
Не надо никаких регулярок в данном случае.

да мы ж уже определились с этим)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Миша
Вот так попробуйте:

$table = $GET['table'];
$tabl_original = array("mk1002ba", "mk1003ba"); // Таблицы, которые реально существуют

if(in_array($table, $tabl_original)){
$query = "SELECT * FROM ".$table;
// Запрос
} else {
$query = FALSE;
// Показать ошибку
}


_____________
Принимаю заказы, писать в ЛС
sergeiss
Цитата (Игорь_Vasinsky @ 27.01.2016 - 13:10)
Цитата
Не надо никаких регулярок в данном случае.

да мы ж уже определились с этим)

"Мы" - это мы с тобой. А вот Медведь и ТС упорно их используют, как я посмотрю.

Медведь, а откуда ж взялась эта переменная? У ТС ее нет wink.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
inpost
VSK
1. Все запчасти хранить в одной таблице, разделять их не по названию таблицы, а по содержанию ячейки. Как с логинами: есть таблица `users` , в ней есть `login` = 'inpost', так тут точно так же!

2) Если у тебя есть перечень доступных таблиц и ты не хочешь, чтобы тебя взломали, то тебе нужен минимум
if(!in_array($_GET['имя_таблицы'],array('имя_1','имя_2'))) {
такой таблицы нет!
}

Этим ты себя обезопасишь от постороннего ввода данных хакерами.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
VSK
Цитата (inpost @ 27.01.2016 - 17:06)
VSK
1. Все запчасти хранить в одной таблице, разделять их не по названию таблицы, а по содержанию ячейки. Как с логинами: есть таблица `users` , в ней есть `login` = 'inpost', так тут точно так же!


Да, видимо все запчасти придется сносить в одну таблицу.
Пока не получается так как я хотел.
sergeiss
Цитата (Медведь @ 27.01.2016 - 16:59)
Не понял какая переменная?

Вот эта (в 2-х местах):
Цитата (Медведь @ 27.01.2016 - 11:37)
$test = 'http://test/index.php?view=tovar&table=test';

Цитата (Медведь @ 27.01.2016 - 12:02)
$url = 'http://test/index.php?view=tovar&table=test'; // Ссылка

которую ты зачем-то ввёл.


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Миша
sergeiss Это же для примера. Как-то мы с тобой не правильно поняли друг друга.

Смотри, ТС попросил достать переменную, которая находится в ссылке. В какой ссылке он не указал, может он файл парсит, поэтому я предложил вырезать регулярным выражением:
$test = 'http://test/index.php?view=tovar&table=test';
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $test);
$query = "SELECT * FROM ".$table;

Дальше ТС просит показать, чтобы нельзя было подключиться к левой таблице, на что я предложил такой вариант:
$url = 'http://test/index.php?view=tovar&table=test'; // Ссылка
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url); // Выдёргиваем
$tabl_original = array("foo", "bar", "hello", "world"); // Таблицы, которые реально существуют
if(in_array($table, $tabl_original)){
$query = "SELECT * FROM ".$table;
} else {
$query = FALSE;
}

Потом Игорь сказал, что ТС возможно имел ввиду GET, поэтому я немного поправил $table:
$table = $GET['table']; // Или так, но если table не меняется

В итоге, если всё собрать, то получится:
$tabl_original = array("mk1002ba", "mk1003ba"); //  Таблицы, которые реально существуют

if(in_array($GET['table'], $tabl_original)){
$query = "SELECT * FROM ".$table;
// Запрос
} else {
$query = FALSE;
// Показать ошибку
}


_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.