2010-05-10 2 views
0

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

В принципе, я создаю безопасный сайт, к которому обращаются авторизованные пользователи. У меня есть моя таблица входа с user_id, имя пользователя, пароль

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

Я бы хотел, чтобы форма была в состоянии ввести user_id и/или имя пользователя из таблицы входа в таблицу ввода.

Пожалуйста, может кто-нибудь рассказать мне об этом процессе?

Я уверен, что как только это будет изменено, я смогу использовать эту таблицу, чтобы разрешить зарегистрированному пользователю доступ к информации, которую он или она ввел, правильно ли?

Большое спасибо

ответ

1

Прежде всего, не ставьте user_id или имя пользователя в форму. Любой может изменить форму (да, даже скрытые поля), чтобы они могли изменить имя пользователя или идентификатор пользователя. Используйте файл SESSION variable для хранения имени пользователя и/или идентификатора пользователя.

Как вы проектировали свои столы? С двумя таблицами вы можете сделать трюк:

логинов (USERID, имя пользователя, пароль) входы (USERID, КОММЕНТАРИИ)

на обработку регистрационную форму страницы, после того, как Логин является успешным, вы положили UserID на СЕССИИ. Затем на странице обработки входной формы вы просто вводите INSERT в свои входы с помощью UserID из СЕССИИ.

Тогда позже на странице показаны входы, вы можете SELECT l.USERNAME, i.COMMENTS WHERE l.USERID = i.USERID и т.д. и т.п.

+0

Спасибо Konerak, Я чувствую себя довольно толстый сегодня. Как я могу сделать INSERT в моей форме из сеанса. Я пытался добавить его в качестве поля в моей таблице: Bodyshop Имя: <Введите имя = "bodyshop_name" значение = "»Только для чтения = "ReadOnly"/> Владельцев Имя: <входной тип = "текст" название = "Owners_Name"/> Но я либо использовать неправильный элемент ввода или полностью отказались от вашей точки, извините за то, что вы так глупы. – Lisa

+0

О нет, не выводите идентификатор в форму - это позволит пользователю изменить значение, что приведет к потенциальным дырам в безопасности. Просто используйте значение на php- скрипт, обрабатывающий форму. Вместо того, чтобы просто обрабатывать $ _POST, используйте $ _SESSION для имени пользователя. – Konerak

1

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

Так что вы просто сделать что-то вроде:

INSERT INTO input (comment, date, user) 
VALUES ('" . mysql_real_escape_string($_POST['comment'] . "', 
NOW(), '" . mysql_real_escape_string($_SESSION['authenticated_user']) . "'); 

(NB, если вы используете mod_auth_mysql или аналогичный, где аутентификация hadneld на веб-сервер, то проверка подлинности имени пользователя содержится в $ _SERVER [ «PHP_AUTH_USER» ]).

C.