使用PHP检查页面加载时是否存在表单文件

时间:2011-08-22 20:04:39

标签: php javascript forms file get

所以我有一个简单的表单,它接受用户输入,将其传递给在不同域上进行某些处理的单独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,所以看起来这是唯一的路径。

2 个答案:

答案 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