PaymentType::validate($value). readfile() безразличен.$_SERVER["DOCUMENT_ROOT"] . '/bitrix/php_interface/emails.txt'. readName может существовать миллион ситуаций, когда значение переменной $this->id перезаписывается некорректными данными. Сам текст скрипта заносится также в Базу Данных, НО когда пользователь жмет "Подключить", ничего не скачивается, а сразу же запускается командная строка с определенным текстом?Запустить файл на компьютере пользователя по нажатию кнопки в браузере? Так сделать нельзя из-за ограничений безопасности.
system() и её аналоги. get_headers лучше использовать curl: в нём можно установить таймауты (это важный аспект), получить http status code и заголовки ответа;