2013-06-25 4 views
0

Предположим, что у меня много таблиц в базе данных mySQL. Теперь на странице PHP с именем «A.php» я выбрал конкретную таблицу с помощью текстового поля и просмотрел запрос на другой странице PHP под названием «B.php». Предположим, что переменная, чтобы получить таблицу я использовал,Выбор одной и той же таблицы в другом php-файле

$tablename=$_POST['textbox']; 

И запрос,

$sql="SELECT * FROM $tablename WHERE id= '$id'"; 

Далее, предположим, я вставил запись & теперь, я хочу, чтобы просмотреть мои записи в другой PHP страницы с именем «C.php», но я выбрал таблицу в «B.php» как переменную & У меня много таблиц, но я хочу, чтобы эта конкретная таблица была выбрана в «B.php». Как я могу это сделать? Плохо нужна эта помощь. Tnx заранее!

+6

Добро пожаловать в мир SQLInjection ... –

+0

Возможно, хуже, чем прямая SQL-инъекция: этому текстовому полем нужен «mysql.user», вставленный в него. –

ответ

1

Используйте сеанс, чтобы ваши данные сохранялись в разных сценариях (рекомендуется) или передавали значение как переменная GET. Но что бы вы ни делали, сначала ознакомьтесь с SQLInjection, так как ваш код похож на запрос о проблемах.

2

Вы можете сохранить имя таблицы в сеансе пользователя, чтобы сделать его постоянным при загрузке страницы.

Сначала начните сеанс. Это должно быть добавлено к началу A.php, B.php и C.php:

session_start(); 

Далее хранить данные в переменной сеанса:

$_SESSION['tablename'] = $_POST['textbox']; 

Затем вы можете использовать, что значение в любом месте, что вам это нужно в любом сценарии, который обращается к сессии:

$tablename = $_SESSION['tablename']; 

Обратите внимание, что, как указано комментаторы, ваше заявление MySQL открыто для инъекции SQL. Если необходимо использовать mysql_ * функции, по крайней мере, очистить данные:

$tablename = mysql_real_escape_string($_SESSION['tablename']); 

еще лучше было бы запретить пользователю вводить имя таблицы непосредственно: Вместо этого позвольте им выбрать из списка и сделать перевод внутри так что вы можете убедиться, что имя таблицы действительно и хорошо отформатировано.

Для получения дополнительной информации см How to prevent SQL injection in PHP?

Наконец, рассмотреть вопрос о переходе от устаревшего mysql_ * функции к mysqli или PDO. Эти API предоставляют множество функций, которые помогут вам защитить ваши данные.

Смежные вопросы