이 PHP 코드는 x 일 이후의 모든 PHP 파일을 무작위로 선택하여 포함시켜야합니다. 왼쪽으로 코드는이 부분과 함께 완벽하게 작동합니다 :
& & filectime ($ 경로 $ 파일.)> 시간() - 나는 코드에서 그 부분을 수행 할 때 60 * 60 * 24 * 4PHP "random include"코드가 예상대로 작동하지 않습니다.
그것은 나를 준다 이 두 가지 오류는 파일 중 NONE이 요구 사항을 충족시키는 경우에만 발생합니다. 적어도 하나 개의 파일이 한 요구 사항을 충족하는 경우는 normaly 기능 :
Warning: include() [function.include]: Filename cannot be empty in FILEPATH/THISFILE.php on line 15
Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.:/usr/local/lib/php-5.2.17/lib/php') in FILEPATH/THISFILE.php on line 15
나는 하나 "조건"이 문제를 만드는 이유를 모르겠습니다. "time if"가없는 파일이 없으면 정상적으로 작동합니다.
무슨 일이 일어나는지 아는 사람 있습니까? 배열에 요소가없는 경우
$file = $files[ rand(0, count($files)-1) ];
, 이것은 정의되지 않은 인덱스가 발생합니다 :
<?php
$files = array();
$path = "nasa-news/";
if($handle = opendir($path))
{ while (false !== ($file = readdir($handle)))
{ if($file != "." && $file != ".." && !is_dir($path.$file) && strpos($file, '.php',1) && filectime($path.$file) > time()-60*60*24*4) // Only if it is a .php file that is less than 4 days old.
{ $files[] = $path.$file;
}
}
// You need to populate the $files variable before you count it;)
$file = $files[ rand(0, count($files)-1) ];
// Now we can include it!
include ("$file");
}
else
{
print "<br />No New News Found!"; // If no files meet the conditions this should print.
LINE 15 }
?>
고정 함수 이름. – Franz
그리고 지금이 사실을 진짜 해답으로 만들었습니다. – Franz
감사합니다, 당신의 도움이 도와 줬어! 무작위 대신 셔플을 사용하는 것이 좋습니다. 스택 오버 플로우를 사용한 것은 이번이 처음이었고 ... 좋은 경험이있었습니다. – MindMaster