Как удалить изображение при загрузке файла журнала Apache в базу данных Oracle

Я разработал сценарий, который будет загружать данные файла журнала в базу данных Oracle. Однако я хочу фильтровать изображения при загрузке данных. В этом случае я не хочу, чтобы мой код загружал CLIENT_REQUEST ("GET /icons/back.gif HTTP / 1.1") с расширениями .gif в моем запросе. Может кто-нибудь помочь мне с кодом.

Мой файл журнала: -

127.0.0.1,-,-,[06/Aug/2018:09:22:02 +0200],"GET /icons/back.gif HTTP/1.1",304,-,"-"
127.0.0.1,-,-,[06/Aug/2018:09:22:02 +0200],"GET /icons/blank.gif HTTP/1.1",304,-,"-"
127.0.0.1,-,-,[06/Aug/2018:09:22:02 +0200],"GET /icons/unknown.gif HTTP/1.1",304,-,"-"
127.0.0.1,-,-,[06/Aug/2018:09:22:02 +0200],"GET /icons/image2.gif HTTP/1.1",304,-,"-"
127.0.0.1,-,-,[06/Aug/2018:09:22:02 +0200],"GET /icons/text.gif HTTP/1.1",304,-,"-"

Мой код php

<?php
$conn = oci_connect('XYZ', 'XYZxyz1', 'abcdef1/ABC');
if (!$conn) {
   $m = oci_error();
   echo $m['message'], "\n";
   exit;
}
else {

$d = new DateTime();
$yesterday = $d->sub(new DateInterval('P1D'))->format('Y.m.d');
$filename = "access.$yesterday.txt";


$myfile = fopen($filename, "r") or die("Unable to open file!");
while(!feof($myfile)) {
    $content= fgets($myfile);
    $carray=explode(',',$content);
    list($IP_ADDRESS, $USER_IDENTIFIER, $USERID , $REQUEST_TIME , $CLIENT_REQUEST ,$RESPONSE_CODE ,$SIZEOFOBJECT, $COOKIES)=$carray;

    $stdii = 'INSERT INTO LOGS(IP_ADDRESS, USER_IDENTIFIER, USERID , REQUEST_TIME , CLIENT_REQUEST ,RESPONSE_CODE ,SIZEOFOBJECT, COOKIES)'.
    'values(:IP_ADDRESS, :USER_IDENTIFIER, :USERID , :REQUEST_TIME , :CLIENT_REQUEST ,:RESPONSE_CODE ,:SIZEOFOBJECT, :COOKIES)';
    $compiled1 = oci_parse($conn, $stdii);
    oci_bind_by_name($compiled1, ':IP_ADDRESS', $IP_ADDRESS);
    oci_bind_by_name($compiled1, ':USER_IDENTIFIER', $USER_IDENTIFIER);
    oci_bind_by_name($compiled1,':USERID', $USERID);
    oci_bind_by_name($compiled1, ':REQUEST_TIME', $REQUEST_TIME);
    oci_bind_by_name($compiled1, ':CLIENT_REQUEST', $CLIENT_REQUEST);
    oci_bind_by_name($compiled1, ':RESPONSE_CODE', $RESPONSE_CODE);
    oci_bind_by_name($compiled1, ':SIZEOFOBJECT', $SIZEOFOBJECT);
    oci_bind_by_name($compiled1, ':COOKIES', $COOKIES);
    oci_execute($compiled1, OCI_COMMIT_ON_SUCCESS);
}
}
echo "File Uploaded";
oci_close($conn);
fclose($myfile);
?>

Возможный дубликат php проверьте расширение файла в форме загрузки

Neil Masters 06.08.2018 10:20

Здесь, в моем коде, я не хочу фильтровать свое имя файла, которое я хочу загрузить в базу данных. Я хочу отфильтровать загружаемые данные. В этом коде я хочу установить фильтры на CLIENT_REQUEST, чтобы он не загружал запросы .gif или .jpg и т. д. "GET /icons/back.gif HTTP / 1.1"

SSneha 06.08.2018 11:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
42
1

Ответы 1

Если я правильно понял из вашего комментария, вы хотите добавить все, кроме изображений (gif, jpeg и т.д.) в таблицу LOGS. Есть несколько способов добиться этого.

Проведите проверку длины строки. Это удаляет значение проверки из журнала, и если оно не соответствует оригиналу, у вас есть изображение.

while() {
    if (strlen(str_replace(['.gif', '.jpeg'], '', $log)) !== strlen($log)) {
        // Found an image
        continue;
    }

    // Insert
}

Или выполните проверку регулярного выражения, которая ищет в журнале любые совпадающие строки.

while() {
     if (preg_match("/(.*)(gif|jpeg)(.*)/", $log);) {
         // Found an image
         continue;
     }

     // Insert
}

Или переберите массив запрещенных строк и используйте strpos, чтобы проверить, содержит ли журнал какие-либо запрещенные строки.

$bannedStrings = ['.gif', '.jpeg'];

while() {
    foreach ($bannedStrings as $string) {
        if (strpos($log, $string) !== false) {
            // Found a banned string
            continue;
        }
    }

    // Insert
}

Редактор Stackoverflows постоянно портит ссылки на документы, которые я пытаюсь добавить, поэтому сдаюсь.

  1. Как проверить, содержит ли строка определенное слово?
  2. http://php.net/manual/en/function.preg_match.php
  3. http://php.net/manual/en/function.str_replace.php
  4. http://php.net/manual/en/function.strlen.php
  5. http://php.net/manual/en/function.strpos.php

Другие вопросы по теме