Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
--TEST-- Test fopen() function : variation: use include path and stream context (absolute ..
Decoded Output download
--TEST--
Test fopen() function : variation: use include path and stream context (absolute directories in path)
--CREDITS--
Dave Kelsey <[email protected]>
--FILE--
<?php
//create the include directory structure
$thisTestDir = basename(__FILE__, ".php") . ".dir";
mkdir($thisTestDir);
chdir($thisTestDir);
$workingDir = "workdir";
$filename = basename(__FILE__, ".php") . ".tmp";
$scriptDir = __DIR__;
$baseDir = getcwd();
$secondFile = $baseDir."/dir2/".$filename;
$firstFile = "../dir1/".$filename;
$scriptFile = $scriptDir.'/'.$filename;
$newdirs = array("dir1", "dir2", "dir3");
$pathSep = ":";
$newIncludePath = "";
if(substr(PHP_OS, 0, 3) == 'WIN' ) {
$pathSep = ";";
}
foreach($newdirs as $newdir) {
mkdir($newdir);
$newIncludePath .= $baseDir.'/'.$newdir.$pathSep;
}
mkdir($workingDir);
chdir($workingDir);
//define the files to go into these directories, create one in dir2
echo "
--- testing include path ---
";
set_include_path($newIncludePath);
$modes = array("r", "r+", "rt");
foreach($modes as $mode) {
test_fopen($mode);
}
// remove the directory structure
chdir($baseDir);
rmdir($workingDir);
foreach($newdirs as $newdir) {
rmdir($newdir);
}
chdir("..");
rmdir($thisTestDir);
function test_fopen($mode) {
global $scriptFile, $secondFile, $firstFile, $filename;
// create a file in the middle directory
$h = fopen($secondFile, "w");
fwrite($h, "in dir2");
fclose($h);
echo "
** testing with mode=$mode **
";
// should read dir2 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "
";
//create a file in dir1
$h = fopen($firstFile, "w");
fwrite($h, "in dir1");
fclose($h);
//should now read dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "
";
// create a file in working directory
$h = fopen($filename, "w");
fwrite($h, "in working dir");
fclose($h);
//should still read dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "
";
unlink($firstFile);
unlink($secondFile);
//should read the file in working dir
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "
";
// create a file in the script directory
$h = fopen($scriptFile, "w");
fwrite($h, "in script dir");
fclose($h);
//should read the file in script dir
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "
";
//cleanup
unlink($filename);
unlink($scriptFile);
}
?>
--EXPECT--
--- testing include path ---
** testing with mode=r **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=r+ **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=rt **
in dir2
in dir1
in dir1
in working dir
in script dir
Did this file decode correctly?
Original Code
--TEST--
Test fopen() function : variation: use include path and stream context (absolute directories in path)
--CREDITS--
Dave Kelsey <[email protected]>
--FILE--
<?php
//create the include directory structure
$thisTestDir = basename(__FILE__, ".php") . ".dir";
mkdir($thisTestDir);
chdir($thisTestDir);
$workingDir = "workdir";
$filename = basename(__FILE__, ".php") . ".tmp";
$scriptDir = __DIR__;
$baseDir = getcwd();
$secondFile = $baseDir."/dir2/".$filename;
$firstFile = "../dir1/".$filename;
$scriptFile = $scriptDir.'/'.$filename;
$newdirs = array("dir1", "dir2", "dir3");
$pathSep = ":";
$newIncludePath = "";
if(substr(PHP_OS, 0, 3) == 'WIN' ) {
$pathSep = ";";
}
foreach($newdirs as $newdir) {
mkdir($newdir);
$newIncludePath .= $baseDir.'/'.$newdir.$pathSep;
}
mkdir($workingDir);
chdir($workingDir);
//define the files to go into these directories, create one in dir2
echo "\n--- testing include path ---\n";
set_include_path($newIncludePath);
$modes = array("r", "r+", "rt");
foreach($modes as $mode) {
test_fopen($mode);
}
// remove the directory structure
chdir($baseDir);
rmdir($workingDir);
foreach($newdirs as $newdir) {
rmdir($newdir);
}
chdir("..");
rmdir($thisTestDir);
function test_fopen($mode) {
global $scriptFile, $secondFile, $firstFile, $filename;
// create a file in the middle directory
$h = fopen($secondFile, "w");
fwrite($h, "in dir2");
fclose($h);
echo "\n** testing with mode=$mode **\n";
// should read dir2 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
//create a file in dir1
$h = fopen($firstFile, "w");
fwrite($h, "in dir1");
fclose($h);
//should now read dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
// create a file in working directory
$h = fopen($filename, "w");
fwrite($h, "in working dir");
fclose($h);
//should still read dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
unlink($firstFile);
unlink($secondFile);
//should read the file in working dir
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
// create a file in the script directory
$h = fopen($scriptFile, "w");
fwrite($h, "in script dir");
fclose($h);
//should read the file in script dir
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
//cleanup
unlink($filename);
unlink($scriptFile);
}
?>
--EXPECT--
--- testing include path ---
** testing with mode=r **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=r+ **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=rt **
in dir2
in dir1
in dir1
in working dir
in script dir
Function Calls
basename | 1 |
Stats
MD5 | 0a1d2b24fd71e8b2a8dc01b359fef8e6 |
Eval Count | 0 |
Decode Time | 98 ms |