Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как в SELECT поставить переменную на место таблицы
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 26 дней
Карма: 27




Цитата (Игорь_Vasinsky @ 27.01.2016 - 12:13)
Цитата
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url); // Выдёргиваем

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

Ок :rolleyes:

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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 17 дней
Карма: 167




SQL инъекция в данном случае на втором плане.
Налицо ошибка в логике приложения, если имя таблицы передаётся в параметрах.
Занавес.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25989
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 9 дней


Цитата
Ок :rolleyes:


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

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

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


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VSK  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 42442
На форуме: 10 месяцев, 10 дней
Карма:




Выдает ошибку

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;
}
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14974
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 1 день
Карма: 443




Цитата (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
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25989
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 9 дней


Цитата
Не надо никаких регулярок в данном случае.

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


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 26 дней
Карма: 27




Вот так попробуйте:

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

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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14974
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 1 день
Карма: 443




Цитата (Игорь_Vasinsky @ 27.01.2016 - 13:10)
Цитата
Не надо никаких регулярок в данном случае.

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

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

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


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

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

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

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22693
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 29 дней
Карма: 599




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

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

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


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VSK  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 42442
На форуме: 10 месяцев, 10 дней
Карма:




Цитата (inpost @ 27.01.2016 - 17:06)
VSK
1. Все запчасти хранить в одной таблице, разделять их не по названию таблицы, а по содержанию ячейки. Как с логинами: есть таблица `users` , в ней есть `login` = 'inpost', так тут точно так же!


Да, видимо все запчасти придется сносить в одну таблицу.
Пока не получается так как я хотел.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14974
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 1 день
Карма: 443




Цитата (Медведь @ 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
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 26 дней
Карма: 27




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;
// Показать ошибку
}


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса