【问题标题】:PHP NSUpdate Update of an TXT StringTXT 字符串的 PHP NSUpdate 更新
【发布时间】:2018-10-21 07:22:45
【问题描述】:

我使用 NSUpdate 从 PHP 更新 DNS 记录

一切正常,但当我想要 更新/添加 TXT 记录时出现问题

添加文本记录并不像 SRV OF SPF 那样难

不 :) rlly

问题: 尝试添加诸如“这是一条 TXT 记录”之类的内容

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

绑定 DNS 服务器得到这个: 域 IN 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 ( 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记录发生在

HTML => INPUT => DO => 写入数据库和函数 => NSUPDATE

【问题讨论】:

  • 需要补充:在SQL DB中字符串写入正确

标签: php dns bind named


【解决方案1】:

您需要在文本数据周围加上引号。如果它包含任何嵌入的引号,则需要对其进行转义:

$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 库。

【讨论】:

  • 谢谢,就是这样 ;D 大声笑对不起不能投票给你,因为我的声誉 ;/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
相关资源
最近更新 更多