2009-12-06 5 views
2

다음과 같이 도와 줄 수 있는지 궁금합니다.

양식에 기입 된 정보를 다음 페이지로 전달합니다. 나는 $_POST 방법을 사용하고있다. 코드를 확인할 때 브라우저에 정보가 표시 되더라도 알림 : 정의되지 않은 인덱스 오류이며 코드 위치에 전달 된 값의 흔적이 없습니다. 나는 이것이 위의 오류와 관련이 있다고 생각한다.

내가 그것을 호출 오전 방법은 예입니다 : 여기 데이터베이스에 있지만, (페이지를 본 후)을 저장하기 위해 몇 가지 숨겨진 필드에 동일한 정보를 얻기 위해 노력하고 또한

$name = $_POST['name']; 

뿐만 아니라 가치가 전달되지 않습니다. 숨겨진 값이 비어 있습니다.

미안하지만 바보 같은 짓을하는 경우 ...하지만 staked하고 내가 뭘 잘못하고 있는지 몰라. 정말 감사드립니다. 많은 감사 프란체스코

답변

6

PHP에서는 존재하지 않는 변수를 읽을 수 없습니다. 위해 당신은 당신이 정의되지 않은 인덱스 통지를 얻을 $object->foo 또는 $object->bar 같은 존재하지 않는 개체 속성에 대한 것입니다 $array['bar']$array['foo'] 같은 존재하지 않는 배열 인덱스를 들어, 정의되지 않은 변수 통지를 얻거나 것 $bar$foo 같은 일반 변수를 존재하지 않는 또는 당신은 정의되지 않은 속성 통지합니다.

PHP에서 변수는 읽기 액세스가 이루어지기 전에 선언되어야하기 때문입니다. PHP는 배열의 경우 array_key_exists, 객체의 속성이 property_exists 인 변수가 존재하는지 테스트하기 위해 isset 함수를 가지고 있습니다. 또한 isset은 그 존재를 테스트하기위한 보편적 인 도구입니다. (값 가 존재하지에 해당합니다.)

$_POST['name'] 그것을 읽으려고하기 전에 존재하는 경우에 따라서 귀하의 경우 테스트해야합니다

if (array_key_exists($_POST, 'name')) { 
    $name = $_POST['name']; 
} 
// or 
if (isset($_POST['name']) { 
    $name = $_POST['name']; 
} 

을하지만 참고 지금 $name의 존재 $_POST['name']의 존재 여부에 달려 있습니다.

+0

Gumbo에게 의견을 보내 주셔서 감사합니다.하지만 내가 아직도 잘못하고 있는지 확실하지 않습니다. 나는 isset을 사용하여 경고를받습니다. 이것은 값이 잘못 게시되었음을 의미합니까? – frapet

+0

@francesco : 테스트 할 필요가 있는지 확신 할 수없는 변수를 읽으 려 할 때마다'isset'을 사용합니다.'$ _POST [ 'name']'의 존재를 테스트하기 전에 그 값을 읽기 전에 내가 게시 한 예제를 살펴보십시오. 하지만 이제'$ name'은'$ _POST [ 'name']'에 달려 있습니다. 당신이 그것을 읽고 싶을 때마다 그 변수가 존재하는지 테스트해야 할 것입니다. 또는'$ name'을 디폴트 값 (예 : * null * 또는'' "')으로 선언하고'$ _POST [ 'name']'이 존재하는 경우에만 덮어 씁니다. – Gumbo

+0

검보 감사합니다. – frapet

1

당신은 시도 할 수 디버그 목적 :

인 print_r ($ _ POST)를;

포스트 배열의 모든 변수가 표시됩니다. 변수가 거기에 있는지 확인하십시오. 그렇지 않은 경우 양식에 문제가 있습니다.

Leonti

+0

감사합니다. Leonti. 변수가 있습니다. 위의 값이 실제로 페이지에 표시되므로 전달됩니다. – frapet

+0

그런 다음 어딘가에 설정되어 있지 않거나 페이지에 표시된 값이 $ _POST var에있는 값이 아닙니다. –

관련 문제