new.php 질문입니다~
본문
관리자로 로그인한 후에
최근게시물 삭제하면
(new_delete.php의 goto_url 은 주석처리 했습니다.)
Warning: trim() expects parameter 1 to be string, array given in /home/hosting_users/fmmarket2003/www/common.php on line 321
위의 에러가 발생합니다.
코드는 아래와 같구요
if (isset($_REQUEST['bo_table'])) {
$bo_table = preg_replace('/[^a-z0-9_]/i', '', trim($_REQUEST['bo_table'])); // line 321
$bo_table = substr($bo_table, 0, 20);
} else {
$bo_table = '';
}
$_REQUEST['bo_table'] 값이 있긴 한것 같은데..
new_delete.php 에서 $_REQUEST['bo_table'] 값을 찍으면
배열로 현재 최근게시물 페이지의 게시판 id 값이 나옵니다.
Array ( [0] => EvalCompany [1] => EvalCompany [2] => EvalCompany [3] => EvalCompany [4] => EvalCompany [5] => EvalCompany [6] => FoodMarket [7] => FoodMarket [8] => FoodMarket [9] => FoodMarket [10] => FoodMarket [11] => FoodMarket [12] => EvalCompany [13] => ProgramListings [14] => HumanResource )
이런식으로요.
왜 에러가 나는지 도통 모르겠습니다;
1개 선택해서 지웠는데
왜 배열로 출력되는지도 모르겠네요-_-;
!-->답변 2
warning 은 에러가 아닌 경고입니다.
common.php 는 그누보드에서 항상 사용되는 공통 코드입니다.
보통 그누보드에서는 게시판 목록에나 게시글 뷰에서 bo_table=free 식으로 불리기 때문에,
해당부분의 경고는 bo_table 에 단일값이 있고, 단일값에 적절하지 않은값 (숫자로 시작되는 경우 등) 이 있는 경우, 그에 대한 처리부분이 있는데.... 그 부분이 new.php 에서는 안맞는 부분입니다. new.php 에서는, new_delete.php 에서는 선택한 글들이 bo_table 값이 다른 경우가 있어서 선택한 글만큼 배열로 넘어갑니다.
(그누보드에서 수정되어야 하는 성격으로 보여집니다.)
warning 은 경고이기 때문에 고치면 좋기는 한 부분이지만, 지금의 상황에서 핵심문제는 아닙니다.
제가 볼 때는 지금 현상(최신글 삭제 관련)에서는 무시해도 되는 부분입니다.
new.php 페이지는 여러게시판의 게시글 목록 페이지입니다.
각 게시글마다 bo_table 값이 다르고, 가령 3개의 최신글을 선택하고 [선택삭제]를 했다면,
3개글의 bo_table 값이 배열로 넘어가야 정상입니다.
핵심적인 문제는 1개를 선택하면 bo_table 값이 하나로, 3개를 선택하면 bo_table 값이 3개로 넘어가야 하는데.. 그렇지 않은 문제가 생긴 것으로 보입니다.
추측해볼 수 있는 문제는..
new.php 에서 자바스크립트 오류가 생겨서, 그 영향으로 인해..
게시글 선택이 잘안되거나, 선택한 값의 정보만 넘어가야 하는데 해당 페이지 전체글의 정보가 넘어가는 문제가 생기는 것이 아닐까 합니다.
보통은 자바스크립트의 어느 한 영역에서 에러발생시 나머지 처리부분이 제대로 처리되지 않게 됩니다.
new.php 를 열때,
new.php 에서 삭제하고자 하는 최신글을 선택할 때.. 자바스크립트 오류가 있는지
체크해보는 것이 좋을 듯 합니다.
(크롬브라우저에서 개발자 도구를 열고(F12) 페이지를 열고, 액션등을 취할 때 자바스크립트 오류발생시에는,
오류가 발생했다는 것을 알려줍니다.)
trim할 함수에 전달될 값이 전달이 파라미터가 제대로 전달이 안되어 발생되어지는 오류로 보여지는데요
이렇게 봐서는 goto_url 문제전에 다른곳에서 발생되어지는 부분이 있는데
goto_url 주석처리 되면서 확인되어지는 오류로 보여지네요