데이터베이스 테이블의 구조를 드러내지 않고 웹 페이지에서 필드 이름의 이름을 어떻게 지정합니까?웹 페이지의 양식 필드 이름 지정
답변
HTML에서 다른 이름을 지정하고 PHP 코드에서 데이터베이스 필드 이름과 HTML 필드 이름을 수동으로 매핑하십시오.
실제로, prepared statements을 사용하고 적절한 권한 부여 및 오류 검사를 수행하는 경우 사람들이 테이블 필드 이름을 알고 있는지 여부는 중요하지 않습니다.
입력 필드 이름의 이름을 바꿀 수 있다고 생각한다면 문제가 있다고 생각합니다. 어쨌든 어떤 지점에서 올바른 SQL 컬럼에 링크해야합니다.
이것은 보안상의 문제가됩니다.
응용 프로그램에서 입력을 처리하는 방법에주의를 기울이는 것이 더 현명한 접근 방법처럼 들리지만,
이 문제가 정말로 우려되는 경우 사용자 field1, field2 (또는 f1, f2) 만 사용자의 실험실 도서 데이터베이스 필드에 매핑하십시오. 그러나 HTML 코드에서 데이터베이스 호출을 수행하지 않는 한, 필드 이름이없는 양식을 찾아 보는 것만으로 데이터베이스 구조 자체에 대해 수집 할 수있는 것이 거의 없습니다.
대개는 위생/취급 편의에 접두사와 접미사를 추가합니다. 필드 그냥 편지, 아무것도를 포함해야하는 경우
예를 들어, 난 필터링 된 HTML, hf_field_name
또는 전체 HTML hx_field_name
... 양식을 알거야 스크립트를 포함 할 수 있습니다 그렇지 않으면 경우, 그것을 tx_field_name
이름을거야 접두사의 기본 값을 검사하고 위생 처리하는 방법. 당신의 의미가 명시 적으로 데이터베이스의 열 이름을 숨길 경우
그러나
는, 음, 당신이 원하는 이름,foo
,
bar
을 준, 또는 임의의 접미사를 추가, 또는 HTML 필드에 허용되는
-
와
_
을 (교체 이름,하지만 PS
) 데이터베이스 열 이름 : 난 당신 가 (.. 그리고 조금 양식을 처리 할 수
$values = $_POST;
$n_val = count($values);
$i = 0;
foreach($values AS $key => $value){
$pairs .= " `$key` = '$value' ";
if($n_val > $i){
$pairs .= ', ';
}
}
thedbyouprefer_query("UPDATE table SET $pairs WHERE id = '42'");
같은 코드를 사용하지만, PHP로 매핑되지 않습니다 희망 준비된 역마차는 나쁘지 않을거야.)
예, HTML 양식. – giancarlo
꽤 좋은 질문입니다. =) –