首先,我不是一个php编码器,所以我不知道为什么会发生以下情况。 我有一些开发人员创建的php文件,用于在Filemaker Webdirect中查找。 php文件假设与Filemaker建立连接并在Webdirect中显示查找。 截至昨天,运行php脚本突然将浏览器重定向到http://www.searchingresult.com/?pid=9POLWR59T&dn=smilepix.i.com.com&rpid=9POKA9272
php脚本有三个文件:fm_link.php,fm_read.php和fm_write.php,按顺序运行。
为了尝试解决这个问题,我尝试了一些方法。
以下是运行的脚本: fm_link.php
<?php
session_start();
// default parameters, if not passed
$fmurl = ''; // enter the address of the server hosting webdirect
$fmfile = ''; // enter the default file to open
if (isset($_GET['fmurl'])) {
$fmurl = $_GET['fmurl'];
}
if (isset($_GET['fmfile'])) {
$fmfile = $_GET['fmfile'];
}
// store all GET paramters in a session
if (isset($_GET) && count($_GET) > 0) {
$_SESSION['get_requests'] = $_GET;
}
// redirect to WebDirect Session
header('Location: http://' . $fmurl . '/fmi/webd#' . $fmfile );
fm_read.php
<?php
// check for required parameter, should match the UUID passed in fm write file.
if(isset($_GET['file_uuid']) && strlen($_GET['file_uuid'])>0 ){
$filename_string = filter_var($_GET['file_uuid'], FILTER_SANITIZE_STRING);
$fn = '/tmp/'.$filename_string.'.txt';
$fr = fopen($fn, "r") or die("Unable to open file!");
echo fread($fr, filesize($fn));
fclose($fr);
unlink($fn); // remove the file once read
} else {
exit('Error: No file.');
}
fm_write.php
<?php
session_start();
// only write to file if we get the correct parameter "file_uuid"
if (isset($_GET['file_uuid']) && strlen($_GET['file_uuid']) > 0) {
// save temp file with uuid from server. sanitize the file_uuid parameter
$filename_string = filter_var($_GET['file_uuid'], FILTER_SANITIZE_STRING);
// add extension for writing
$filename = $filename_string . '.txt';
// set session variables to a string to write
//initialize string
$string = '';
// set each parameter as local variable
foreach ($_SESSION['get_requests'] as $key => $value) {
if ($key == 'fmurl' || $key == 'fmfile') {
// do not store these two parameters
} else {
// store as variables
$string .= '$' . urlencode($key) . ' = "' . urlencode($value) . '"; ';
}
}
// write the file to temp
$fn = '/tmp/' . $filename;
if ($fn) {
$f = fopen($fn, 'w+');
if ($f) {
$fw = fwrite($f, $string);
if ($fw) {
echo 'wrote file.'; // . $fn
// once file is written, destroy session
session_destroy();
} else {
echo 'write error';
}
} else {
echo 'open error';
}
} else {
echo 'file error';
}
} else {
exit('nothing to do.');
}
我对此感到沮丧,不知道该怎么做。
先谢谢你的帮助 - 山姆
答案 0 :(得分:0)
因此,从您显示的代码中,看起来唯一可能导致页面将用户重定向到其他页面的代码是fm_link.php
中的以下行:
header('Location: http://' . $fmurl . '/fmi/webd#' . $fmfile );
其他文件中的其他所有内容都是读取和写入服务器上的文件,但不会导致重定向。
这似乎也可能是罪魁祸首,因为它只是接受从您点击的任何形式或链接传入的信息,这些信息会触发fm_link.php
文件。劫持您的设置的人可能已将恶意代码放置在触发器 fm_link.php
的表单或链接中,而这些代码并不会包含在您显示的代码中。
我不认为您的问题来源已显示在您发布的代码中,但我对您帖子的回答是:致电专业人士。
如果你不是一个php编码器,你可以不确定发生了什么,这是一个学习的好地方,但我不会建议你尝试通过StackOverflow自己处理它。如果有人真正劫持了您的代码,那么最好让专业开发人员查看整体结构。您可能会看到实际上更大问题的症状。
您可以联系我所工作的公司Skeleton Key,帮助您解决问题,或者使用FileMaker's Consultant Search寻找其他开发公司。无论哪种方式,让开发人员检查出来。
答案 1 :(得分:0)
我怀疑托管php的地方有一些apache mod或者在你的脚本运行之前重定向页面的东西。
听起来这取决于托管PHP文件的位置,以及它们在FM文件中的引用方式。您使用的域名是否已过期?您可能会尝试使用IP地址指向php文件的位置。
顺便说一句,我在Chrome和Firefox中测试了我自己的服务器上托管的解决方案,这些都适用于我。 Firefox不是WebDirect支持的浏览器,但这很有效。
这些文件来自博客文章: http://www.soliantconsulting.com/blog/2015/01/extending-webdirect-url-parameters
由于 麦克