1. Webmens Member

    Domein beschikbaar check met Versio API

    Topic geplaatst op: 02-01-2015 om 19:49

    Hallo,

    Ik probeer een domaincheck te maken met de Versio API, aangezien ik dit nog nergens heb gevonden.
    Op dit forum zie ik dat er vraag naar is, maar nog niemand heeft een kant-en-klare oplossing.

    Ik ben al zo ver geraakt dat ik meerdere checkboxes heb (voor meerdere tld's), en dat bij versturen elke tld wordt gecheckt. Er moet echtr ergens een foutje zitten, want ik krijg geen data binnen van Versio.

    Zonder de meerdere checks (en de foreach) lukte het wel allemaal perfect. Aan versio of de API ligt het dus zeker niet.

    Wie kan me helpen? Ik post hieronder even de code, hopelijk is dit toegelaten?
    Script te testen zoals het nu is op http://webmens.be/domeincheck/

    ----------------------


    <form method="post" action="">
    <input type="text" size="40" name="domeinnaam" required="yes" value="eendomeintest"/><br />
    <table>
    <tr>
    <td><input type="checkbox" name="check_list[]" value="be" checked>be</td>
    <td><input type="checkbox" name="check_list[]" value="nl" checked>nl</td>
    <td><input type="checkbox" name="check_list[]" value="eu" checked>eu</td>
    <td><input type="checkbox" name="check_list[]" value="com" checked>com</td>
    </tr>
    </table>
    <input type="submit" name="submit" value="Check">
    </form>

    <?php
    require("class_versio_api.php");

    if(isset($_POST['submit'])){ //Start script bij versturen

    /* Begin loop voor elke tld */
    foreach($_POST['check_list'] as $selected){

    /* Code van Versio */
    unset($command);
    $command = array( "command" => "DomainsCheckAvailability", "domain" => $_POST["domeinnaam"], "tld" => $_POST["check_list"] );
    $api = new Versio_api();
    $versio = $api->api_send( $command );

    /* Toon Versio antwoord op statusaanvraag domeinnaam */
    echo "<br /><br /><p style='color: black;'>Versio status check voor " . $_POST['domeinnaam'] . "." . $selected . ": " . $versio['success'] . "<br />";
    echo "Versio domeinnaam check " . $_POST['domeinnaam'] . "." . $selected . ": " . $versio['success'] . "</p>";

    /* Als status niet gevonden kan worden */
    if($versio['success']==0) {
    echo("Fout opgetreden. Fout code: ".$versio['command_response_code'].". Fout text: ".$versio['command_response_message']."");
    }

    /* Als status wel gevonden is */
    else if($versio['success']==1) {

    /* Als status 1 (beschikbaar) is */
    if($versio['status']==1){
    echo("<p style='color: green;'>De domeinnaam " . $_POST['domeinnaam'] . "." . $selected . " is beschikbaar.");
    }

    /* Als status 0 (onbeschikbaar) is */
    else {
    echo("<p style='color: red;'>De domeinnaam " . $_POST['domeinnaam'] . "." . $selected . " is bezet.");
    }
    }

    }
    }
    ?>

  2. zeromechanic Member
    Reactie geplaatst op: 02-01-2015 om 22:26

    Er gaat eea erg fout in je script

    Voordal dat je een array als TLD probeert op te geven :
    array( "command" => "DomainsCheckAvailability", "domain" => $_POST["domeinnaam"], "tld" => $_POST["check_list"] );

    dit zou in jou geval $selected moeten zijn, zoals je in je foreach al opgeeft

    De check is alleen geschikt voor 1 check per keer.
    Als je dus meerdere checks wilt doen, zul je een loop (foreach bv) moeten gebruiken om de check per TLD uit te laten voeren.

    Maar let op!!!!! :
    Je kunt maximaal per dag checks doen :
    a = Aantal domeinnamen in account (actief en inactief)
    a * 8 + 100
    Dus als je 10 domeinen hebt, zijn dit dus 180 checks per dag !!!!

    Ik heb een keuzelijst gemaakt met DomainsTLDInfo zodat men in een pulldown de gewenste extentie kunnen selecteren.
    en daarop een check uitvoeren.
    (ik werk met CodeIgniter dus vandaar een ander soort code)

    public function DomainsCheckAvailability($name = null, $ext = null) {
    $response = new stdClass();
    unset($command);
    $command = array(
    "command" => "DomainsCheckAvailability",
    "domain" => $name,
    "tld" => $ext
    );
    $resultd = $this->CI->versio_api->api_send($command);
    return $resultd;
    if ($resultd['status'] == 1) {
    return 'beschikbaar';
    } elseif ($resultd['status'] == 0) {
    return 'niet beschikbaar';
    }
    }

    public function getTLD() {
    $response = new stdClass();
    unset($command);
    $command = array(
    "command" => "DomainsTLDInfo",
    );
    $result = $this->CI->versio_api->api_send($command);
    if ($result['success'] === '0') {
    $response->value = FALSE;
    $response->error = $result['command_response_message'];
    return $response;
    } elseif ($result['success'] === '1' && $result['total_count'] > 0) {
    $result = $this->filterreturn($result);
    $chunked = array_chunk($result, 4);
    $keys = array(
    'tld',
    'new_price',
    'renewprice',
    'minimumyears'
    );
    foreach ($chunked as $v) {
    $data[] = (object) array_combine($keys, $v);
    }
    return $data;
    }
    }

    Vond u dit antwoord nuttig?

  3. Webmens Member
    Reactie geplaatst op: 03-01-2015 om 00:02

    Bedankt voor je reactie zeromechanic!

    Ik heb 176 domeinen bij Versio, dus goed voor een goeie 1500 checks per dag. Dat zal het probleem niet zijn.

    Mijn php-kennis is heel gelimiteerd, waardoor ik jouw tips moeilijk kan toepassen op de code die ik reeds heb.
    Zou je het zien zitten om mijn bestaande code te corrigeren zodat deze werkt?

    Eigenlijk wil ik 1 veld waar men de gewenste domeinnaam ingeeft, en op 'check' klikt. Vervolgens worden de bekendste extensies (+/- 10) automatisch gecontroleerd voor deze domeinnaam. Een beetje zoals nu op http://webmens.be/domeincheck, maar dan met meer extensies en werkend :-)

    Ik zou het tof vinden mocht je me hierbij willen helpen. ALs het werkt deel ik deze code graag met de versio-community (na wat layout opsmuk).

    Vond u dit antwoord nuttig?

  4. Wesley Berendsen Versio medewerker
    Reactie geplaatst op: 05-01-2015 om 21:20

    Layout zelf ziet er al netjes uit, ik hoop dat je er uit komt! Mijn kennis met PHP is erg laag dus kan je hierin helaas geen ondersteuning geven. Wat overigens netjes zou zijn is dat als hij al iets gecheckt heeft hij deze 1 voor 1 terug geeft en niet alles na 10 sec bijv. Ik zelf ben iemand die bij lang laden van een site al afhaakt, dit zal hier ook gaan gebeuren als je meer tld's inlaad.

    Succes!

    Je kan altijd hier ook controleren of het domein beschikbaar is.

    Vond u dit antwoord nuttig?

  5. Webmens Member
    Reactie geplaatst op: 06-01-2015 om 15:55

    Ik ben alweer enkele stappen verder. In plaats van de keuze te geven welke tld's men wil controleren, geef ik nu de standaard domeinnamen weer. Dit was ook eenvoudiger naar programmeren, want ik kopieer gewoon telkens hetzelfde stukje opnieuw, maar met een andere tld.

    1 na 1 teruggeven ipv alles in 1 keer zou inderdaad leuk zijn, maar ik weet niet hoe. Mocht iemand me hierbij kunnen helpen?...

    Nu heb ik een loader geplaatst zodat het duidelijk is dat de website bezig is. Meestal komen de resultaten binnen 5 à 10 seconden op het scherm.

    Code volgt in een volgend berichtje. Resultaat nog steeds te bekijken via http://webmens.be/domeincheck/

    Vond u dit antwoord nuttig?

  6. BasicLogic Member
    Reactie geplaatst op: 15-01-2015 om 00:03

    Mooi mooi! ik wilde dit ook al graag op mijn site krijgen.
    Ik heb even je code van http://webmens.be/domeincheck/ af gehaald alleen krijg ik hierbij niet de huidige PHP code mee. Als je de code post zal ik er naar kijken. Ik heb het immers zelf nodig ;).
    Ik heb nog niet echt naar de API gekeken dus zal sowieso mijn IP nog moeten linken.

    In je script staan volgens mij ook nog wat overbodige dingen (ik krijg bijv. foutmelding voor msg[1]; aangezien je hier nooit een array voor hebt aangemaakt maar alleen var msg).

    Hopelijk kun je de code nog eens posten ;)

    Vond u dit antwoord nuttig?

  7. Jelle Dobbelaere Dobbelaere Member
    Reactie geplaatst op: 15-01-2015 om 01:33

    Heb er eens naar gekeken en zag dat je geen cijfers kan ingeven bij domein.

    Vond u dit antwoord nuttig?

  8. BasicLogic Member
    Reactie geplaatst op: 15-01-2015 om 01:44

    @Jelle Dobbelaere:

    $('.domeinnaamInput').keypress(function(key) {
    if((key.charCode < 97 || key.charCode > 122) && (key.charCode < 65 || key.charCode > 90) && (key.charCode != 45) && (key.charCode != 13)) return false;
    });

    Dit kan door "(key.charCode <= 48 || key.charCode >= 57) &&" toe te voegen:

    $('.domeinnaamInput').keypress(function(key) {
    if((key.charCode <= 48 || key.charCode >= 57) && (key.charCode < 97 || key.charCode > 122) && (key.charCode < 65 || key.charCode > 90) && (key.charCode != 45) && (key.charCode != 13)) return false;
    });


    @Webmens:
    leer je ook gebruik te maken van de <= en >= tekens, is best handig ;) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

    Vond u dit antwoord nuttig?

  9. DonMarsie Member
    Reactie geplaatst op: 25-11-2016 om 12:58

    Wil dit script ook gebruiken op een hollandse site die bij versio draait, zou je me dit beschikbaar willen stellen? Zou er erg blij mee zijn. marcel@starterscentrale.nl

    Vond u dit antwoord nuttig?

  10. Webmens Member
    Reactie geplaatst op: 26-11-2016 om 18:50

    Helaas niet afgewerkt gekregen. Ik gebruik nu een oplossing zonder integratie met Versio.
    Zou leuk zijn mocht Versio een kant-en-klaar script kunnen voorzien.

    Vond u dit antwoord nuttig?