2017-02-19 1 views
2

PHP에서 $_POST으로 생성 된 배열에 대해 읽었습니다. 나는 내가 후속 입력 ID, Name, Date과 함께 양식을 제출하면 $_POST = array('IDNo', 'Name', 'Date', 'State')을 포함하는 배열로 끝날 것임을 알고 있습니다. 내가 얻으려고하는 점은 IDNo, Name, Date, State의 여러 인스턴스가 동시에 제출된다는 것입니다.

일단 데이터가 제출되면 데이터를 처리하고 위생적으로 처리 할 수 ​​있다고 확신하지만 다중 행 배열로 가져 오는 방법을 모르겠습니다.

<form method="post" action="test.php"> 
    <input type="hidden" name="IDNo" /> 
    <input type="text" name="Name" /> 
    <input type="text" name="Date" /> 
    <input type="radio" name="State1" /> 

    <input type="hidden" name="IDNo" /> 
    <input type="text" name="Name" /> 
    <input type="text" name="Date" /> 
    <input type="radio" name="State2" /> 

    <input type="hidden" name="IDNo" /> 
    <input type="text" name="Name" /> 
    <input type="text" name="Date" /> 
    <input type="radio" name="State3" /> 

    <input type="submit" value="Test Me" /> 
</form> 

라디오 입력에는 각 행마다 고유 한 이름이 있습니다. 이것은 페이지에 구현 된 jquery와 관련이 있습니다. 나는과 Name[] 등을 사용하여 $ _POST 배열 내에 배열을 만들지 만 라디오의 고유 한 입력 이름은 각 라디오 입력이 다른 배열 일 때마다 작동하지 않는다.

각 입력 이름에 IDNo 또는 행 번호를 추가하는 것이 더 낫지 않습니까? 아니면 내가 보지 못했던 다른 방법으로이 문제를 해결할 수 있습니까?

아마도 State1state[1]으로 변경하고 IDNo, Name, DateID[1], Name[1], Date[1]으로 변경하십시오.
나에게 중요한 점은 안전하지 않은 것을 만들지 않고 올바르게 수행한다는 것입니다.

+0

내가 배열 방법을 사용합니다 ~ HTTP 패킷을 보낼 양식을 사용할 때 라디오 다른 이름 속성을 사용할 수 있습니다 생각입니다은' $ _POST' 데이터를 쉽게 찾을 수 있지만 라디오 입력을 선택하지 않으면 데이터에 나타나지 않고 루프가 잘못됩니다. 숫자를 사용하면 더 효과적 일 수 있습니다. 그런 다음'$ _POST'를 반복하고'array_keys'와'strpos'로 기존 입력을 검사하십시오. – AymDev

+0

답해 주셔서 감사합니다. 당신은 라디오 입력을 언급했지만, PHP 인수의 일부로 사용할 값이없는 입력이 있습니다. – denski

+0

빈 입력 타입 텍스트는 단지 비어 있지만 보내질 것입니다. – AymDev

답변

4

이렇게하는 방법에는 여러 가지가 있습니다. 하나는 다음과 같습니다

<?php $states = array(1,2,3); ?> 
<form method="post" action="test.php"> 
    <?php foreach ($states as $state) : ?> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[IDNo]" /> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[Name]" /> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[Date]" /> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>" /> 
    <?php endforeach; ?> 
    <input type="submit" value="Test Me" /> 
</form> 

당신은 당신이 더 많은 정보를 보유 할 수 $states 배열을 확장 할 수 있습니다 $_POST['state'][1]['Name']

과 같은 코드를 사용하여이 값에 액세스 할 수 있습니다.

+0

그래서 본질적으로'$ _POST [ 'State'] [1] [ 'Name']'은 상태라는 이름의 숫자 배열이며 이름을 가진 하위 배열입니다. – denski

+0

괜찮 으면 2 개의 질문이 있습니다. 1. 입력을 제대로 살피면''등을 안전하게 사용할 수 있습니까? 2. MySQL에서 실제 고유 ID 번호를 '국가'번호로 사용하는 데 대한 보안 문제가 있습니까? – denski

+0

아니요. 보안 수준은 레코드 ID 번호에 의존하지 않습니다. 정보를 데이터베이스로 전송하기 전에 정보로 처리 할 것입니다. – RST

0

그것은 좋은 질문입니다 ~

나는 단지를 통해 루프 할 수