PHP TEXT 字符串的 NSUpdate 更新

PHP NSUpdate Update of an TXT String

iam 使用 NSUpdate 从 PHP

更新 DNS 记录

一切正常,但当我想要时出现问题 update/Add TXT 记录

添加文本记录不像 SRV OF SPF[=50 那样难=]

不 :) rlly

问题: 尝试添加类似 "This IS an TXT record"

的内容

将其从 PHP 发送到 NSUPDATE(与其他记录一起使用)后

绑定 DNS 服务器得到这个: TXT 中的域"This""IS""an""TXT""Record" 但这是错误的!检查了我的代码,环顾四周..它起作用了..

代码:

    <?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(数据 + 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 记录 发生在

HTML => 输入 => 执行 => 写入数据库和函数 => 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 库。