PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 4
malltaf Отправлено: 22 Апреля, 2020 - 16:37:26 • Тема: Проверка двух путей file_exists • Форум: Программирование на PHP

Ответов: 5
Просмотров: 577
Мелкий пишет:
Если проверять нужно в отсортированном списке мест - то и передайте из конфигурации отсортированный список мест. С точки зрения php - массивом или каким-либо другим итератором и обойдите их в цикле.


Пока сделал так:
PHP:
скопировать код в буфер обмена
  1. case 'prod': $this->servers_dir = ["//srvap2082/C$/temp/","//srvap2087/C$/temp/"]; break;
  2. $pathToFile = $this->servers_dir[0].$this->application_id;
  3.  
  4.                         if ($parts[0] == 'prod'){
  5.                                 foreach ($this->servers_dir as $value){
  6.                                         $pathToFile = $value.$this->application_id;
  7.  
  8.                                         if (file_exists($pathToFile)){
  9.                                                 $this->get_cont($pathToFile);
  10.                                         }
  11.                                 }
  12.                         }
  13.                         else
  14.                         {
  15.                                 if (file_exists($pathToFile)){
  16.                                         $this->get_cont($pathToFile);
  17.                                 }
  18.                                 else
  19.                                 {
  20.                                         echo 'File not found: '.$pathToFile.'';
  21.                                 }
  22.                         }
  23.                        
  24.                 }
  25. }


Выглядит не сильно лучше - сделал массив вместо переменной. Пока не получается использовать foreach для всей конструкции вместо ifов. Не подскажете, как это лучше сделать?
malltaf Отправлено: 21 Апреля, 2020 - 18:22:23 • Тема: Проверка двух путей file_exists • Форум: Программирование на PHP

Ответов: 5
Просмотров: 577
Мелкий пишет:
Как у вас получилось что переменные окружения вовсе в коде класса захардкожены?
Это отдельно должно быть где-то в конфигурации.


Так вышло. Это не финальная версия, но проблема не в этом Улыбка
malltaf Отправлено: 21 Апреля, 2020 - 17:55:00 • Тема: Проверка двух путей file_exists • Форум: Программирование на PHP

Ответов: 5
Просмотров: 577
Добрый день.
Сегодня создал следующий класс, который относительно поступающей информации проверяет наличие файла (и выводит его) на соответствующем сервере:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class partnermediation_abbyycontroller {
  3.        
  4.         private $servers_dir = null;
  5.         private $application_id = null;
  6.        
  7.         public function get_cont($pathToFile)
  8.         {
  9.                 $GetContentFile = file_get_contents($pathToFile);
  10.                         if ($GetContentFile[0]=='<')
  11.                                 {
  12.                                         header("Content-type:text/xml");
  13.                                         $result = new DOMDocument();
  14.                                         $result->loadXML($GetContentFile);
  15.                                         echo $result->saveXML();
  16.                                 }
  17.                         else
  18.                                 {
  19.                                         header('Content-Type: text/plain;charset=utf8');
  20.                                         echo $GetContentFile;
  21.                                 }
  22.         }
  23.        
  24.         public function __construct($parts)
  25.                 {
  26.                         switch ($parts[0]) {
  27.                                 case 'prod': $this->servers_dir = "//srvap2082/C$/temp/"; break;
  28.                                 case 'preprod': $this->servers_dir = "//srvap2027/C$/temp/"; break;
  29.                                 case 'preprod_ft': $this->servers_dir = "//srvap2026/C$/temp/"; break;
  30.                                 case 'test': $this->servers_dir = "//srvap2030/C$/temp/"; break;
  31.                         }
  32.                        
  33.                         switch ($parts[3]) {
  34.                                 case 'close': $this->application_id=trim($parts[1]).'_beforeClose.xml'; break;
  35.                                 case 'save': $this->application_id=trim($parts[1]).'_beforeSave.xml'; break;
  36.                                 default: $this->application_id=trim($parts[1]).'_beforeSaveAndForward.xml'; break;
  37.                         }
  38.                        
  39.                         ($parts[2]=='Request')?$this->application_id=trim($parts[1]).'_afterRead.xml':$this->application_id;
  40.                                                                                                                
  41.                         $pathToFile = $this->servers_dir.$this->application_id;
  42.                        
  43.                        
  44.                         if ($parts[0] == 'prod'){
  45.                                 if (file_exists($pathToFile)){
  46.                                         $this->get_cont($pathToFile);
  47.                                 }
  48.                                 else
  49.                                 {
  50.                                         $pathToFile = $this->servers_dir = "//srvap2087/C$/temp/".$this->application_id;
  51.                                         if (file_exists($pathToFile)){
  52.                                                 $this->get_cont($pathToFile);
  53.                                         }
  54.                                 }
  55.                         }
  56.                         else
  57.                         {
  58.                                 if (file_exists($pathToFile)){
  59.                                         $this->get_cont($pathToFile);
  60.                                 }
  61.                                 else
  62.                                 {
  63.                                         echo 'File not found: '.$pathToFile.'';
  64.                                 }
  65.                         }
  66.                        
  67.                 }
  68. }
  69.  
  70. ?>


Мой вопрос заключается в том, как сделать код более адекватным? Я про $this->get_cont($pathToFile);
Более конкретно:
В случае, если сервер продовый = case 'prod', мне нужно проверить file_exists сначала на одном сервере, потом на другом. Если это не прод, просто проверить, есть ли файл на одном каком-то сервере. Сделал это через ififelseif и выносом кода в случае успеха в отдельную функцию get_cont... Как сделать код более рациональным и красивым?
Спасибо.
malltaf Отправлено: 14 Марта, 2014 - 14:54:25 • Тема: Headers при отправке блокируется • Форум: Если скрипт не работает

Ответов: 0
Просмотров: 770
Доброго всем дня.
Есть postfix, есть сайт на openSUSE, на нем форма запроса (читай: обратная связь), которая должна отправлять письмецо посредством mail() на определенную почту. Проблема в следующем: при попытке отправки письма с заголовками, письмо уходит, но его блокирует шлюз (уходит точно, проверял). Если headers'ы отсутствуют, то письмо приходит куда надо, но, соответственно, без заголовков.
Вопрос: почему заголовки могут не пропускаться?

Также есть мысль, что почта уходит не через нужный почтовый сервер (192.168.15.1, к примеру), а через что попало.
Или, например, на сайте/сервере прописаны неверные логин/пароль почты или неверный адрес почтового севера, через который нужно работать, поэтому и отсылается почта не оттуда, откуда нужно. Админ мог поменять пароль от почты, к примеру. Раньше все работало, поэтому и возникла мысль о проблеме с логопассом/сервером.
Где эти данные могут быть прописаны для сайта и postfix'а? В main.cf (postfix) не нашел, в коде сайта тоже никакой информации по этому поводу нет. На сервере все настроено нормально, почта ходит.

Вот, если что, код заголовков ($to,$subject,$text, $from заполняются предварительно в другой функции и на этот момент уже являются статичными):
PHP:
скопировать код в буфер обмена
  1. function MailTo($to,$subject,$text, $from) {
  2.    $msg = $text;
  3.    $headers   = "From:".convert_cyr_string($from,'w','k')."\r\n";
  4.    $headers    .= "Reply-To: ".convert_cyr_string($from,'w','k')." \r\n";
  5.    $headers    .= "X-Priority: 3 (Normal)\r\n";
  6.    $headers    .= "X-Mailer: SXMM V 1.0beta\r\n";
  7.    $headers    .= "Organization: ".substr(md5(time()),0,7)."\r\n";
  8.    $headers    .= "Return-path: ".convert_cyr_string($from,'w','k')." \r\n";
  9.    $subject="=?koi8-r?B?".base64_encode(convert_cyr_string($subject,'w','k'))."?=";
  10.    $headers    .= "Subject: ".$subject."\r\n";
  11.    $headers    .= "Date: ".date("D, d M Y H:i:s O")."\r\n";
  12.    $headers    .= "X-Spam:  Not detected\r\n";
  13.    $headers    .='Content-Type:  text/plain; charset="koi8-r" \n\n';
  14. if (@mail($to, $subject, $msg, $headers)){
  15. return true;
  16. } else {
  17.    return false;}
  18. }


Спасибо.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB