2010-05-10 3 views
0

처음으로 두 테이블에서 정보를 조인 할 필요가 있으며, 어떤 조언을 먼저.MySQL/PHP : 로그인 한 사용자 ID를 사용자가 입력하는 양식에서 데이터를 수집하는 다른 테이블에 삽입하는 방법

기본적으로 승인 된 사용자가 액세스하는 보안 사이트를 구축 중입니다. 내 로그인 테이블에 user_id, 사용자 이름, 비밀번호가 있습니다.

일단 사용자가 사이트에 있으면 입력이라고하는 다른 테이블에 데이터를 입력 할 수 있습니다. 이 테이블은 입력 된 정보 만 캡처하며 입력 도구의 user_id 또는 username은 캡처하지 않습니다.

폼이 로그인 테이블에서 입력 테이블로 user_id 및/또는 username을 입력 할 수있게하고 싶습니다.

누군가이 프로세스를 통해 저에게 이야기 할 수 있습니까?

일단 수정하면 테이블을 사용하여 로그인 한 사용자가 입력 한 정보에 액세스 할 수 있도록 허용 할 것입니다. 맞습니까?

많은 감사합니다.

답변

1

우선 user_id 또는 사용자 이름을 양식에 넣지 마십시오. 누구나 사용자 이름이나 사용자 ID를 변경할 수 있도록 양식 (예 : 숨겨진 필드까지)을 변경할 수 있습니다. SESSION variable을 사용하여 사용자 이름 및/또는 사용자 ID를 저장하십시오.

테이블을 어떻게 디자인 했습니까? 두 개의 테이블을 사용하면 트릭을 수행 할 수 있습니다 로그인이 성공적인 후

로그인 (USERID, 사용자 이름, 암호) 입력 (USERID, 코멘트) 로그인 폼을 처리 페이지에서

을, 당신은 사용자 ID를 넣어 세션에서. 그런 다음 입력 양식을 처리하는 페이지에서 SESSION의 UserID를 사용하여 입력에서 INSERT를 수행하면됩니다.

그리고 나중에 입력을 보여주는 페이지에서 할 수 있습니다 SELECT l.USERNAME, i.COMMENTS WHERE l.USERID = i.USERID 등 등

+0

은 오늘 꽤 두꺼운 기분 당신에게 Konerak, 감사드립니다. 세션에서 내 양식에 INSERT를 수행하려면 어떻게해야합니까? ? = "<$ _SESSION [ 'MM_Username를'] 에코 PHP <입력 이름 ="bodyshop_name "값 : 차체 수리 공장 이름 : 내 테이블에 필드로 추가 시도?> "읽기 전용 =" "/> 소유자 이름 : <입력 유형 ="읽기 전용 텍스트 "이름 ="Owners_Name "/> 을하지만 난 중 하나를 잘못 입력 요소를 사용하거나 – Lisa

+0

오, 안돼, 양식에 ID를 출력하지 마라 - 이것은 사용자가 값을 수정할 수있게하여 잠재적 인 보안 허점으로 이어진다. 단지 php- 스크립트를 구문 분석하는 스크립트. $ _POST를 처리하는 대신 사용자 이름에 $ _SESSION을 사용하십시오. – Konerak

1

Konerak가 말했듯이, 당신은 사용자가 제출 한 데이터를 릴레이 할 수 있습니다. 이전에이 사용자를 인증 한 후에는 사용자 이름과 그것이 사실임을 알았습니다. 대부분의 응용 프로그램에서 좋은 개발자는이 사실을 저장하게됩니다. 왜냐하면 이후의 인증을 수행해야하기 때문입니다.

그래서 그냥 같은 것을 할 : 당신이 인증이 웹 서버에 의해 hadneld한다은 mod_auth_mysql 또는 유사한을 사용하는 경우

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

(NB를 한 후 인증 된 사용자 이름은 $ _SERVER [ 'PHP_AUTH_USER'에 포함 ]). C.

관련 문제