>  기사  >  백엔드 개발  >  PHP에서 정의되지 않은 인덱스 문제를 해결하는 방법

PHP에서 정의되지 않은 인덱스 문제를 해결하는 방법

不言
不言원래의
2018-06-19 16:06:003783검색

오류 표시 모드를 설정하여 이 프롬프트를 숨길 수 있지만 여기에도 숨겨진 위험이 있습니다. 즉, 이러한 프롬프트가 서버 로그에 기록되어 로그 파일이 비정상적으로 커지게 됩니다.

일반적으로 $_post['를 사용합니다. '], $_get['' ] 양식에서 매개변수를 가져올 때 Notice: 정의되지 않은 색인: --------;

양식에서 데이터 POST를 수신할 때 정의되지 않은 색인 오류가 자주 발생합니다. 다음과 같습니다: $act=$_POST['action '];
위 코드를 사용하면 항상
주의 사항: 정의되지 않은 인덱스: 20행의 D:testpost.php에 있는 행위
또한 때로는
주의사항: 정의되지 않은 변수: 제출. ..etc. Tips
위 내용은 오류가 아닌 PHP 프롬프트입니다. PHP 자체는 미리 변수를 선언하지 않고 바로 사용할 수 있지만, 선언되지 않은 변수에 대해서는 프롬프트가 표시됩니다. 일반적으로 공식 홈페이지라 프롬프트가 꺼지고, 오류 메시지도 꺼집니다.
해결책:
방법 1: 서버 구성 수정
php.ini의 오류 구성에서 오류 표시 모드를 수정합니다. error_reporting = E_ALL을
error_reporting = E_ALL & ~E_NOTICE로 수정합니다.
수정 후 APCHE 서버를 다시 시작합니다. 적용됩니다.
방법 2: 변수를 초기화합니다.
방법 3: 판단 isset($_post['']),empty($_post['']) if --else
방법 4: 공지 코드 앞에 @를 추가, @는 이에 오류가 있음을 나타냅니다. 줄 또는 출력하지 않도록 경고, @$username=$_post['username'];
변수 앞에 @를 추가합니다(예: if (@$_GET['action']=='save') { ..
방법 5: 마지막은 다른 사람이 작성한 함수인데, 이 함수를 통해 값이 전달됩니다.
함수 정의:

function _get($str){ 
$val = !empty($_GET[$str]) ? $_GET[$str] : null; 
return $val; 
}

그런 다음 사용할 때 $_GET['str']~
[PHP-Core-Error] 대신 _get('str')을 사용하세요.
error_reporting = E_ALL & ~E_NOTICE
오류 보고 수준은 비트 필드의 중첩이므로 E_ALL | 시간 알림을 사용하는 것이 좋습니다(종종 버그, 의도적일 수 있음)
16 E_CORE_ERROR PHP 시작 시 초기화 프로세스 중 치명적인 오류
; PHP 시작(치명적이지 않은 오류)
; 64 컴파일 시 E_COMPILE_ERROR 치명적인 오류
; 128 E_COMPILE_WARNING 컴파일 시간 경고(치명적이지 않은 오류)
; 치명적인 오류)
; 1024 E_USER_NOTICE 사용자 정의 알림(종종 버그, 의도적일 수 있음)
; 2048 E_STRICT 코딩 표준화 경고(향후 호환성을 위해 수정 방법 권장) 4096 E_RECOVERABLE_ERROR 잡히지 않으면 거의 치명적인 런타임 오류 E_ERROR로 처리됩니다.
; 6143 E_ALL E_STRICT를 제외한 모든 오류(PHP6의 8191, 모두 포함)

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트에 주목하세요!

관련 권장 사항:

php에서 Strip_tags()를 사용하여 HTML 태그를 제거하고 여전히 빈 솔루션이 있습니다.

PHP를 사용하여 사용자 클라이언트의 실제 IP를 얻는 방법

위 내용은 PHP에서 정의되지 않은 인덱스 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.