Я использую NSUpdate для обновления DNS-записей из PHP
все работает, но что-то идет не так, когда я хочу Обновление / Добавить TXT Record
добавить текстовую запись не так сложно, как SRV О SPF
Нету 🙂
Эта проблема:
пытаясь добавить что-то вроде «Это запись TXT»
после отправки его из PHP в NSUPDATE (работает с другими записями)
Привязать DNS-сервер получить это:
Домен IN TXT «This» «IS» «an» «TXT» «Record»
но это неправильно! проверил мой код, посмотрел arround .. это доцент работы ..
код:
<?php
if ($txt_true) {
$ttl2 = '36';
// TXT string could be almost anything, just make sure it's quoted.
// $txt_var = str_replace("'", "", $txt_var);
// $txt_var = str_replace('"', "", $txt_var);
//$txt_var = '"'. $txt_var.'"';
$data .= "update add ".$sub.".".$domain.". ".$ttl2." IN TXT ".$txt_var."\n";
}
это идет к NSupdate (data + nsupdate и т. д.). dotn follow блок, который закомментирован
Вот:
function dns_update ($id_domain,$mydata) {
global $nsupdate;
if (domain_exists($id_domain)) {
$infos = domain_infos($id_domain);
$domain = $infos['domain'];
$dnsip = $infos['dnsip'];
$key = $infos['key'];
if ($key != '') { $add = ' -y '.$key; }
$data = "server $dnsip\n";
$data .= "zone $domain\n";
$data .= $mydata;
$data .= "\n";
$result = `echo "$data" | $nsupdate$add`;
return $result;
} else {
return false;
}
}
и цитата TXT Record происходит из
HTML => INPUT => DO => Wirte DB & Функция => NSUPDATE
Вам нужны кавычки вокруг текстовых данных. Если он содержит какие-либо встроенные кавычки, их необходимо экранировать:
$txt_var = str_replace('"', '\"', $txt_var);
$data .= "update add $sub.$domain. $ttl2 IN TXT \"$txt_var\"\n";
Поскольку эта строка содержит двойные кавычки, вы должны использовать одинарные кавычки в echo
заявление:
$result = `echo '$data' | $nsupdate$add`;
Однако гораздо лучше было бы использовать API, а не делать это через командную строку. Увидеть Net_DNS2 библиотека.
Других решений пока нет …