ChronoEngine.com homepage

Forums

Please write a review for the extension you are using on the Joomla extensions directory before posting a new question as we are being spammed by many negative reviews.

Thank you for your support!

Cloudflare API - Create DNS (NS) record using CURL PHP

atanunu 30 Jan, 2019
I am working on adding records to my zone using curl (PHP); I want to add test.gen.ng as the DNS record with nameservers (ns1.test.com, ns2.test.com, ns3.test.com, ns4.test.com). I am able to add A records, CNAME records and others with the code at the bottom but not NS records.
{"success":false,"errors":[{"code":1004,"message":"DNS Validation Error","error_chain":[{"code":9102,"message":"content must be a string."}]}],"messages":[],"result":null}
I am having errors as shown above; sending the content below. Please, how do I send the content as required by cloudflare?
<?php
    /* Cloudflare.com | APİv4 | Api Ayarları */
   
   $apikey = $this->data["apikey"]; //'430255a2117147'; // Cloudflare Global API
    $email = $this->data["email"]; //'go@roswed.com'; // Cloudflare Email Adress
	
	
    $domain = $this->data["tld"];  //'gen.ng';  // zone_name // Cloudflare Domain Nam
    $zoneid = $this->data["zoneID"]; //'a203c506cbafc';
	
	
	
	$this->data["DomainName"]  = $this->get("loop_event10.row.Registry.sld");
	$this->data["NameServer1"] = $this->get("loop_event10.row.Registry.nameserver1");
	$this->data["NameServer2"] = $this->get("loop_event10.row.Registry.nameserver2");
	$this->data["NameServer3"] = $this->get("loop_event10.row.Registry.nameserver3");
	$this->data["NameServer4"] = $this->get("loop_event10.row.Registry.nameserver4");
	
	$this->data["TTL"] = 1;


    // A-record oluşturur DNS sistemi için.
    		$ch = curl_init("https://api.cloudflare.com/client/v4/zones/".$zoneid."/dns_records");
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
    		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    		'X-Auth-Email: '.$email.'',
    		'X-Auth-Key: '.$apikey.'',
    		'Cache-Control: no-cache',
    	    // 'Content-Type: multipart/form-data; charset=utf-8',
    	    'Content-Type:application/json',
    		'purge_everything: true'
    		
    		));
    	
    		// -d curl parametresi.
    		$data = array(
    		
    			'type' => 'NS',
    			'name' => ''.$this->data["DomainName"].'',
				'content' => Array
				(
						'0' => $this->data["NameServer1"],
						'1' => $this->data["NameServer2"],
						'2' => $this->data["NameServer3"],
						'3' => $this->data["NameServer4"]
	
				),
				
    			'zone_name' => ''.$domain.'',
    			'zone_id' => ''.$zoneid.'',
    			'proxiable' => 'false',
    			'proxied' => false,
    			'ttl' => 1
    		);
    		
    		$data_string = json_encode($data);

    		curl_setopt($ch, CURLOPT_POST, true);
    		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);	
    		//curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data_string));

    		$sonuc = curl_exec($ch);

                 // If you want show output remove code slash.
		 // print_r($sonuc);

    		curl_close($ch);

			echo $sonuc;
?>
healyhatman 30 Jan, 2019
Says it right there doesn't it mate? "Content must be a string" and yet you're trying to send an array?
This topic is locked and no more replies can be posted.

2Checkout.com

2CheckOut.com Inc. (Ohio, USA) is an authorized retailer for goods and services provided by ChronoEngine.com