Проверьте, существует ли файл формы при загрузке страницы с использованием PHP - PullRequest
0 голосов
/ 23 августа 2011

Итак, у меня есть простая форма, которая принимает пользовательский ввод, передает его в отдельный скрипт PHP, который выполняет некоторую обработку в другом домене, и в случае успеха отправляет текстовый файл.Пример:

<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, очевидно, является для нас поиском инвентаря, однако он содержится на другом сервере (другом домене), поэтому он завершает свою обработку и отправляет его в файл, который я прочитал, очистка и отображение.Теперь моя проблема двоякая, мне нужно захватить и сохранить ввод от пользователя, чтобы найти имя файла, а во-вторых, мне нужно пролистать страницу, чтобы перезагрузить или перепроверить, если файл существует.Каков наилучший подход для этого?

Примечание. Мы используем ужасную внутреннюю СУБД, поэтому отправка и получение из БД не вариант, нам потребовалось некоторое время, чтобы заставить его читать ввод иFTP это правильно, так что, похоже, это единственный путь.

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Во-первых, вам нужно правильно ввести данные пользователя и очистить их. Я опущу детали метода 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.

1 голос
/ 23 августа 2011

Почему вы не делаете запрос на своем сервере A?с помощью curl, чтобы вы могли получить ответ сразу после запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...