me-too: IDN Domainnamen

Hi,

wie kann ich mit PHP IDN-Domainnamen (ent)crypten?

LG me-too

  1. Hallo,

    wie kann ich mit PHP IDN-Domainnamen (ent)crypten?

    hast du denn mal danach gesucht? Hier nur mal meine ersten paar Treffer:

    https://www.php.net/manual/en/function.idn-to-utf8.php
    http://www.zedwood.com/article/php-idn-punycode-converter
    https://www.xarg.org/2008/07/punycode-with-php/
    https://www.phpclasses.org/package/1509-PHP-Convert-from-and-to-IDNA-Punycode-domain-names.html

    Ob und wie gut die für deine Zwecke passen, musst du selbst beurteilen.

    Live long and pros healthy,
     Martin

    --
    Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
    1. Hi Martin,

      wie kann ich mit PHP IDN-Domainnamen (ent)crypten?

      hast du denn mal danach gesucht? Hier nur mal meine ersten paar Treffer:

      https://www.php.net/manual/en/function.idn-to-utf8.php
      http://www.zedwood.com/article/php-idn-punycode-converter
      https://www.xarg.org/2008/07/punycode-with-php/
      https://www.phpclasses.org/package/1509-PHP-Convert-from-and-to-IDNA-Punycode-domain-names.html

      Ich habe hier zum Testen PHP 7.4.5 aud dem WAMPP-Paket.
      Das kennt beide Funktionen nicht, weder

      • idn_to_ascii() noch
      • idn_to_utf8()

      Wo finde ich die Klasse?

      LG
      me-too

      1. Hallo me-too,

        Ich habe hier zum Testen PHP 7.4.5 aud dem WAMPP-Paket.
        Das kennt beide Funktionen nicht, weder

        • idn_to_ascii() noch
        • idn_to_utf8()

        Wo finde ich die Klasse?

        Das ist Teil einer PHP-Erweiterung. Vielleicht ist die nicht geladen oder so..

        Gruß
        Julius

        1. Hi,

          auf unserem Online-Host (Linux)funktioniert es einwandfrei.

          Auf dem dämlichen Testserver (Windows) krieg ichs grad nicht gebacken. Da fehlt mir im Moment die Ruhe. Im Manual steht doch aber nichts von pear?

          Die Kiddies sind schon wieder drinnen. Nach ca. 3,5Std. heavy Sunshine gießt es jetzt endlich wie aus Eimern.

          Schönes Wochenende
          me-too

          1. Hallo me-too,

            auf unserem Online-Host (Linux)funktioniert es einwandfrei.

            Auf dem dämlichen Testserver (Windows) krieg ichs grad nicht gebacken. Da fehlt mir im Moment die Ruhe. Im Manual steht doch aber nichts von pear?

            Mit PEAR hat das erstmal nichts zu tun: Es gibt das Kern-PHP und Erweiterungen (der ganze Datenbank-Kram wie PDO sind welche). Einige sind standardmäßig aktiviert, andere nicht. Vielleicht musst du intl nur in der php.ini aktivieren, vielleicht liefert XAMPP intl auch gar nicht mit aus.

            Mein Ubuntu vermeldet (offensichtlich habe ich intl mal nachinstalliert):

            $ apt search php7
            Sortierung... Fertig
            Volltextsuche... Fertig
            
            […]
            
            php7.2/bionic-updates,bionic-updates,bionic-security,bionic-security 7.2.24-0ubuntu0.18.04.6 all
              server-side, HTML-embedded scripting language (metapackage)
            
            php7.2-bcmath/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              Bcmath module for PHP
            
            php7.2-bz2/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              bzip2 module for PHP
            
            php7.2-cgi/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              server-side, HTML-embedded scripting language (CGI binary)
            
            php7.2-cli/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              command-line interpreter for the PHP scripting language
            
            php7.2-common/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              documentation, examples and common module for PHP
            
            php7.2-curl/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              CURL module for PHP
            
            php7.2-dba/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              DBA module for PHP
            
            php7.2-dev/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              Files for PHP7.2 module development
            
            php7.2-enchant/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              Enchant module for PHP
            
            php7.2-fpm/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              server-side, HTML-embedded scripting language (FPM-CGI binary)
            
            php7.2-gd/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [installiert]
              GD module for PHP
            
            php7.2-gmp/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              GMP module for PHP
            
            php7.2-imap/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              IMAP module for PHP
            
            php7.2-interbase/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              Interbase module for PHP
            
            php7.2-intl/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [installiert]
              Internationalisation module for PHP
            
            php7.2-json/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              JSON module for PHP
            
            php7.2-ldap/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              LDAP module for PHP
            
            php7.2-mbstring/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [installiert]
              MBSTRING module for PHP
            
            php7.2-mysql/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              MySQL module for PHP
            
            php7.2-odbc/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              ODBC module for PHP
            
            php7.2-opcache/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              Zend OpCache module for PHP
            
            php7.2-pgsql/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              PostgreSQL module for PHP
            
            php7.2-phpdbg/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              server-side, HTML-embedded scripting language (PHPDBG binary)
            
            php7.2-pspell/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              pspell module for PHP
            
            php7.2-readline/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              readline module for PHP
            
            php7.2-recode/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              recode module for PHP
            
            php7.2-snmp/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              SNMP module for PHP
            
            php7.2-soap/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              SOAP module for PHP
            
            php7.2-sqlite3/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              SQLite3 module for PHP
            
            php7.2-sybase/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              Sybase module for PHP
            
            php7.2-tidy/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              tidy module for PHP
            
            php7.2-xml/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.6 amd64  [Installiert,automatisch]
              DOM, SimpleXML, WDDX, XML, and XSL module for PHP
            
            php7.2-xmlrpc/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              XMLRPC-EPI module for PHP
            
            php7.2-xsl/bionic-updates,bionic-updates,bionic-security,bionic-security 7.2.24-0ubuntu0.18.04.6 all
              XSL module for PHP (dummy)
            
            php7.2-zip/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.6 amd64
              Zip module for PHP
            

            Gruß
            Julius

          2. Hallo me-too,

            bis PHP 5.2 war das eine PECL Extension, seit PHP 5.3 ist es gebündelt.

            In PHP/Win muss man die DLL für die INTL Erweiterung aktivieren. Suche in deiner PHP.INI nach

            ;extension=php_intl.dll
            

            und nimm das Semikolon am Zeilenanfang weg, wenn da eins steht. Wenn da keins steht, hm, dann war die Erweiterung schon aktiviert und es gab einen anderen Grund, dass die Funktion nicht gefunden wurde, aber dann bin ich ausgezählt.

            Als zweites solltest Du die INTL Fehlermeldungen aktivieren, zumindest auf einer Testmaschine. Suche nach [intl] und sorge dafür, dass die Zeile

            intl.error_level = E_WARNING
            

            nicht mit einem Semikolon beginnt.

            Bei mir hat diese Warning zur Erkenntnis geführt, dass ich meinen Sourcecode in UTF-8 speichern sollte (mein Simpel-Texteditor steht auf Latin-1), weil die Funktion offenbar einen UTF-8 Datenstrom erwartet. Ein in latin-1 gespeichertes idn_to_ascii("täst.de") führte ohne Warnings einfach zu einem Leerstring, und mit Warnings zur Fehlermeldung, dass er den Input nicht nach UTF-16 konvertieren könnte.

            Möglicherweise kann man mit mb_... Funktionen etwas hexen und den Code als latin-1 gespeichert lassen, aber Speicherung als UTF-8 ist sicherlich die bessere Lösung.

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Hi Rolf,

              bis PHP 5.2 war das eine PECL Extension, seit PHP 5.3 ist es gebündelt.

              In PHP/Win muss man die DLL für die INTL Erweiterung aktivieren. Suche in deiner PHP.INI nach

              ;extension=php_intl.dll
              

              heißt nur:

              extension=intl

              intl.error_level = E_WARNING
              

              Das passte so.
              Kaum macht mans richtig, schon funktionierts :-)

              Die Sonne scheint wieder!

              LG
              me-too

              1. Hallo me-too,

                okaaaay.... welche PHP Version ist das?

                Ich habe auf meinem Spiel-PC noch ein 7.1 rum liegen und da muss ich php_intl.dll angeben. extension=intl funktioniert nicht.

                Rolf

                --
                sumpsi - posui - obstruxi
                1. Hi Rolf,

                  okaaaay.... welche PHP Version ist das?

                  PHP 7.4.5 aus dem WAMPP-Paket.
                  Ich habe das nur am Anfang des C-Alarms auf die Schnelle installiert.
                  Eigentlich mag ich keine Webentwicklung auf Windowshosts.

                  Ich habe auf meinem Spiel-PC noch ein 7.1 rum liegen und da muss ich php_intl.dll angeben. extension=intl funktioniert nicht.

                  Ist das ein Einzelpaket oder auch ein WAMPP?

                  LG
                  me-too

                  1. Hallo me-too,

                    habe mir PHP und MySQL einzeln installiert. Da weiß ich wenigstens was passiert - das eine mal, wo ich mir ein WAMPP installiert habe, war ich völlig verwirrt (ist aber auch schon > 10 Jahre her). Als Webserver nehme ich den Windows IIS, da brauch ich keinen Winnetou für, und FastCGI kann der auch.

                    Habe mir jetzt mal PHP 7.4 runtergeladen - ja, da scheint es eine grundsätzliche Änderung im extension-Namingkonzept gegeben zu haben.

                    Für echte HTML-Applikationen nehme ich dann nach dem Willen meines Brötchengebers den Profi-IIS, MS SQL Server und ASP.NET mit C#.

                    Rolf

                    --
                    sumpsi - posui - obstruxi
                    1. Habe mir jetzt mal PHP 7.4 runtergeladen - ja, da scheint es eine grundsätzliche Änderung im extension-Namingkonzept gegeben zu haben.

                      Genauer gesagt in PHP 7.2

                      https://www.php.net/manual/de/install.pecl.windows.php

                      behauptet:

                      ; On PHP version 7.2 and up, prefer :
                      extension=extname
                      zend_extension=another_extension
                      
                    2. das eine mal, wo ich mir ein WAMPP installiert habe, war ich völlig verwirrt (ist aber auch schon > 10 Jahre her).

                      Ich lehne die Nutzung der verschiedenen Windows-Stacks für Apache/PHP/Perl/[MySQL/Maria]-DB auch als Testsystem inzwischen vollständig ab.

                      Gründe:

                      1. Dass es den Apache von Apache.org nicht mehr als Binary für Windows gibt ergibt für mich, dass der Hersteller selbst auf Windows nicht unbedingt Rücksicht nimmt.

                      2. Die Anbieter der Windows-Stacks liefern jeweils eigene Konfigurationen, die sich teilweise von der Original-Konfiguartion stark unterscheiden.

                      3. Das gilt auch für Teile der "Stacks" insbesondere für z.B. PHP.

                      Aus 2. und 3. folgt für mich, dass die Aussagen von Tests auf einem WAMPP-System für den Betrieb der selben Applikationen auf einem LAMPP-System nur begrenzt Gültigkeit haben. Da sollte man also, statt mehrfach zu testen, gleich ein Testsystem haben, auf dem die Vergleichbarkeit mit dem Zielsystem übersehbar bzw. herstellbar ist.

                      1. Hallo Raktentester,

                        Die Anbieter der Windows-Stacks liefern jeweils eigene Konfigurationen, die sich teilweise von der Original-Konfiguartion stark unterscheiden.

                        Was mich damals ja auch so verwirrt hat. Bei Fertigsuppen muss man immer genau aufpassen, was reingerührt wurde.

                        Mein Bastelstack ist WISC oder WIMP, zum Spielen reicht das.

                        Rolf

                        --
                        sumpsi - posui - obstruxi