所以我有一个简单的表单,它接受用户输入,将其传递给在不同域上进行某些处理的单独PHP脚本,并在成功时发布txt文件。例如:
<form method="GET" action="inventory_check.php" target="_blank">
Part Number <input type="text" name="part" /><input type="submit" value="Check Inventory" />
</form>
<?php
$filename = $userInput;
if (file_exists('ftpMain/'.$filename.'')) {
$handle = fopen("ftpMain/".$filename."", "r");
$output = fread($handle, filesize('ftpMain/'.$filename.''));
fclose($handle);
$output = trim($output, '&l0O(10U');
$output = trim($output, 'E ');
echo $output;
}
else {
echo 'Failure.';
}
?>
因此,inventory_check.php显然是我们的库存查找,但是,它包含在另一个服务器(不同的域)上,因此它完成了处理并将其发布到我读取,清理和显示的文件中。现在我的问题是双重的,我需要抓住并保持用户的输入以找到文件名,第二个是我需要页面重新加载或重新检查文件是否存在。这样做的最佳方法是什么?
注意:我们使用了一个糟糕的内部DBMS,因此从数据库发布和检索不是一个选项,我们花了一段时间才能让它读取输入并正确地进行FTP,所以看起来这是唯一的路径。
答案 0 :(得分:1)
为什么不在服务器A中提出请求?通过使用curl,您可以在查询后立即获得响应。
答案 1 :(得分:1)
首先,您需要正确获取用户的输入,并对其进行清理。我会忽略sanitize()
方法的细节,因为那不是你所要求的。
<?php
if(isset($_POST)) {
$part_number = sanitize($_POST['part']);
$filename = "ftpMain/$part_number";
if (file_exists($filename)) {
$handle = fopen($filename, "r");
$output = fread($handle, filesize($filename));
fclose($handle);
/* Do things with output */
} else {
echo 'Failure.';
}
}
?>
但是,您说该文件位于另一台服务器上 - 查找ftpMain/...
只会在当前目录中查找名为ftpMain
的目录。该文件是否可在互联网上公开获取?如果是,你可以做这样的事情:
<?php
$url = "http://yourserver.com/parts/$part_number.txt";
$response = get_headers($url, 1);
if ($response[0] == 'HTTP/1.1 200 OK') {
/* The file exists */
} else {
/* The file does not exist */
}
?>
我希望我能正确理解你的问题 - 这假设表单动作指向自己。也就是说,包含此代码的文件也称为inventory_check.php
。