我遇到了一个问题,即 php 脚本无法用于提交表单,打开一个空窗口。在本地服务器上一切正常,数据已发送。php 主机支持,创建了 info.php 文件,一切正常,它可以工作并显示信息。
据我了解,问题是 $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r ");
我不是 php 专家,一般来说,我可以解决这个问题或寻找其他方法吗?($sendToTelegram)
这是错误日志:
**警告:fopen():SSL 操作失败,第 23 行代码为 1 php
警告:fopen():无法在第 23 行的 /home/vol1_4/ezyro.com/ezyro_32805238/htdocs/php/sendform.php 中启用加密
警告:fopen( https://api.telegram.org/bot56xxxxx:AAE_C4nzRFv4UGYMiWgqpD7xr_2ZsAlS1SM/sendMessage?chat_id=-7xxxxx&parse_mode=html&text=来自webdevguy%0A的消息姓名: %0A电子邮件: %0A%0A):无法打开流:/home/vol1_4/ezyro.com/ezyro_32805238/htdocs/php/sendform.php 中的第 23 行操作失败**
//Сбор данных из полей формы.
<?php
//Сбор данных из полей формы.
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['mail'];
$token = "xxxx463163:AAE_C4nzRFv4UGYMiWgqpD7xr_xxxxxx"; // токен
$chat_id = "-78967xxxx"; // ID группы,
$sitename = "xxxxxx"; //название сайта
$arr = array(
'Заявка с ' => $sitename,
'Имя: ' => $name,
'Телефон: ' => $phone,
'Телеграм: ' => $email
);
foreach($arr as $key => $value) {
$txt .= "<b>".$key."</b> ".$value."%0A";
};
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
?>
jQuery(document).ready(function(){
jQuery("form").submit(function() {
var form_data = jQuery(this).serialize();
jQuery.ajax({
type: "POST",
url: "php/sendform.php",
data: form_data,
success: swal({
title: "Thanks!",
type: "success",
showConfirmButton: false,
timer: 2000
})
});
$(this).find('input, textarea').prop('disabled', true);
event.preventDefault();
});
});```
问题是您的主机不支持fopen和类似操作的 HTTPS。
理论上,您可以重写以使用 curl - 但您需要与托管支持核实它是否有效。也许它也不会。
是的,一般来说,最好就此问题联系托管支持。也许他们已经有了现成的解决方案或关于在这种情况下该怎么做的建议。