IDN-Domainüberprüfung (Punnycode)

Bash, Shell, PHP, Python, Perl, CGI
dts
Posts: 290
Joined: 2004-02-05 20:40

IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-09-22 22:03

Hallo guten Abend,

Ich habe in einem Webformular eine Eingabezeile, die bei normalen Domains und IDN-Domains unterschiedliche Aktionen durchführen soll. Und zwar:

- Bei "normalen" Domains einfach übernehmen und verarbeiten.
- Bei IDN-Domains, diese in Punnycode umwandeln und dann verarbeiten.

Wie kann ich dies am besten erledigen, dass Eingaben automatisch überprüft werden? Hat jemand von euch eine Idee?

Liebe Grüsse
Euer DtS

wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: IDN-Domainüberprüfung (Punnycode)

Post by wgot » 2004-09-22 22:46

Hallo,

hier gibt's ein fertiges Script:
http://phlymail.de/?page=products&what=idna

Gruß, Wolfgang

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-09-22 23:05

wgot wrote:hier gibt's ein fertiges Script:
http://phlymail.de/?page=products&what=idna
Danke, aber von dieser Seite komme ich doch... 8O

Hier steht doch nirgends, wie automatisch erkannt werden kann, ob
eine eingegebene Domains "NORMAL" oder "IDN" ist (einfach ausgedrückt).

Vielleicht noch eine andere Idee?

Lg, Jürgen

wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: IDN-Domainüberprüfung (Punnycode)

Post by wgot » 2004-09-22 23:27

Hallo,

Du wolltest ein Script das normale Domains unverändert läßt und IDN nach Punny konvertiert. Das Script macht exakt das - und der Code steht zum Download bereit.

Gruß, Wolfgang

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-09-22 23:39

Hi Wolfgang,

Oki oki, du hast gewonnen :lol: - da habe ich wohl ein wenig zu wenig
gelesen und habe mir schon länger Gedanken gemacht, wie ich das
erledigen kann.

Jaja, manchmal wäre es so einfach - wenn man nicht ZU :!: kompliziert
denken würde... 8O

Danke dir auf jeden Fall für den Tip! :wink:

Liebe Grüsse
Jürgen

duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: IDN-Domainüberprüfung (Punnycode)

Post by duergner » 2004-09-23 09:22

Und wenn du wirklich vorher prüfen willst dann mach doch einfach einen RegExp Ausdruck dafür.

svenuser
Posts: 9
Joined: 2004-10-05 19:49

Re: IDN-Domainüberprüfung (Punnycode)

Post by svenuser » 2004-10-06 17:46

Man lässt doch einfach jede Domain durch den Punny laufen! Der erkennt automatisch, obs was zu decodieren oder codieren gibt... :-D

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-11 21:40

Hallo,
Man lässt doch einfach jede Domain durch den Punny laufen! Der erkennt automatisch, obs was zu decodieren oder codieren gibt...
Du hast recht, ich habe es selbst ausprobiert, dass es problemlos läuft. Aber hat diesen Punny schonmal jemand in EazyDNS integriert? Ich schaffe es einfach nicht, den einzubauen... ohne dass nach der Funktion "NICHTS" mehr rauskommt (wahrscheinlich falsche Variablenzuweisung oder so).

Wäre toll, wenn mir da jemand weiterhelfen kann...

Liebe Grüsse
Euer DtS

svenuser
Posts: 9
Joined: 2004-10-05 19:49

Re: IDN-Domainüberprüfung (Punnycode)

Post by svenuser » 2004-10-11 22:49

ich hab ne eigene Lösung im Einsetz, welche ich aus verschiedenen Lösungen aus dem netz zusammengebastelt habe, kann also nix zu dem PEAR paket oben sagen. Aber hast Du es schon geschafft, ohne EazyDNS zum laufen zu bekommen? Ich hab auch kein EazyDNS im Einsatz, weiß deshalb auch nicht, wo man puny da integrieren muss... vorher oder muss man da im code hacken? weil wenn vorher, dann isses doch einfach:

$domain = 'irgendwoher.bekommen';
$puny = new xxx; //PEAR Objekt instaziieren
$domain = $puny->encode($domain); //encoden

:-)

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-12 02:39

Also ja ich weiss, dass es so einfach wäre, aber EazyDNS pfuscht mir da jetzt ein wenig dazwischen, weil es die eingegebenen Domains überprüft und (bedingt durch die Sonderzeichen nach der Codierung) nun mir einen Fehler ausgibt.

Das ist die Funktion zur Ã?berprüfung der Domains:

Code: Select all

function eingabepruefen ($domain,$check){

 settype($domain,"string");
 switch ($check) {
    case 0: $field_checkOK = "öäü0123456789abcdefghijklmnopqrstuvwxyz0.*-";break;
    case 1: $field_checkOK = "öäü0123456789abcdefghijklmnopqrstuvwxyz0.-";break;
    case 2: $field_checkOK = "01234567890.";break;
    case 3: $field_checkOK = "01234567890";break;
    case 4: $field_checkOK = "öäü0123456789abcdefghijklmnopqrstuvwxyz0.-";break;
    case 5: $field_checkOK = "0123456789abcdefABCDEF:0";break;
    default:$field_checkOK = "0";break;
 }
 if($check != 5 && $check != 4 && $check != 3 && substr_count($domain, ".")==0){
   $fehler = 1;
 }
 if($check == 5 && substr_count($domain, ":")!=7){
   //$fehler = 1; ???
 }
 if(substr ($domain, -1) =="."){
   $fehler = 1;
 }
 $field_check = $domain;
 for ($j = 0; $j < strlen ($domain); $j++){
  if(!strrpos ($field_checkOK,substr ($domain, $j, 1))){
    $fehler = 1;
  }
 }
 RETURN $fehler;
}
Klar für diese Abfrage ist die Domain nicht gültig, durch die Sonderzeichen, die nach der Konvertierung entstehen. Wenn ich die Konvertierung aber erst nachher mache, geht das auch nicht, weil dann wiederum die Sonderzeichen (Ã?, Ã?, Ã?, etc.) als Fehler interpriert werden.

Was soll ich nun machen - auch wenn es nach einer Newbie-Frage klingt?

Lg, Jürgen

svenuser
Posts: 9
Joined: 2004-10-05 19:49

Re: IDN-Domainüberprüfung (Punnycode)

Post by svenuser » 2004-10-12 08:24

Hmm verstehe ich nicht ganz, wieso es da zu Fehlern kommt. Eine Domain "müller.com" wird ja zu "xn--mller-kva.de". Das sind doch alles gültige Zeichen! Das ist ja der Effekt von Puny. Es macht aus Umlautdomains eine Domain, die Rückwärtskompatibel ist, und nur noch die zeichen a-z und das - enthält.

Welchen Fehler gibt er denn aus?

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-12 20:45

Ja ich weiss, darum verstehe ich es auch nicht ganz.
Die Fehlermeldung ist kurz und prägnant (z.b. mit "müller.at"):
müller.at fehlerhaft
Vielleicht eine Ahnung, warum das so ist...?

svenuser
Posts: 9
Joined: 2004-10-05 19:49

Re: IDN-Domainüberprüfung (Punnycode)

Post by svenuser » 2004-10-12 21:49

ist die funktion oben eine funktion aus eazydns, oder von dir? weil anstatt

Code: Select all

case 2: $field_checkOK = "01234567890.";break
würde ich

Code: Select all

case 2: $field_checkOK = array('0' => 1, '1' => 1, '2' => 1, .... '0' => 1, '.' => 1); break; 
schreiben. weil dann kann man unten ganz einfach über jeden buchstaben der domain iterieren mittels

Code: Select all

 for ($j = 0; $j < strlen ($domain); $j++){ 
  if(!$field_checkOK[$domain, $j, 1]){ 
    $fehler = 1; 
  } 
 }
wäre zumindest etwas performanter :-) weil so nur n (n = länge der domain) einzelvergleiche, anstatt n * m (m = anzahl der gültigen buchstaben) gemacht werden müssten.

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-12 22:28

Hallo Svenuser,

Also ganz verstehe ich nicht, was du da schreibst, aber ich versuche es mal zu verstehen. Der einfache Austausch von

Code: Select all

case 2: $field_checkOK = "01234567890.";break
mit

Code: Select all

case 2: $field_checkOK = array('0' => 1, '1' => 1, '2' => 1, .... '0' => 1, '.' => 1); break;
funktioniert nicht:
Parse error: parse error, unexpected '.', expecting ')' in index.php on line 9
Die Funktion ist übrigens nicht von mir, sondern direkt von EazyDNS.

Hier noch die Codestelle, die dann die Domains überprüft:

Code: Select all

   if($domain ==""||eingabepruefen($domain,1) == 1){
    echo("<script><!--
    alert('$domain ".$ezd_lan["fehlerhaft"]."');
    history.back()
    //--></script>");
    exit;
   }
Hmm, so und was nun... ich blicke jetzt gar nichtmehr durch! :roll: :lol:
Vielleicht könnte mir noch jemand BITTE :!: helden?

Lg,
DtS

svenuser
Posts: 9
Joined: 2004-10-05 19:49

Re: IDN-Domainüberprüfung (Punnycode)

Post by svenuser » 2004-10-12 22:53

nein der Code war auch nur symbolisch... 1:1 kopieren klappt da nicht. Sorry, falls ich damit verwirrung gestiftet habe :?

was mir in der Funktion eingabepruefen() auffällt ist, dass die Variable $fehler nur auf 1 gesetzt wird. Allerdings müsste sie aber in der ersten zeile auf 0 gesetzt werden, diese zeile scheint aber zu fehlen. wenn ich mir das so anschaue, müsse eigentlich jede domain einen fehler bringen. und der funktion eingabepruefen() ist es auch eigentlich egal, ob es müller oder xn--mller-kb heißt. (ist nicht die korrekte Punny überstetzung, aber habs mal so pi mal daumen gemacht.)

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-13 00:29

Hallo,

Also irgendwie klappt es einfach nicht, sorry ich glaub ich bin wohl etwas zu doof, da durchzublicken. Hast du (svenuser) oder jemand anderer Lust sich das anzusehen...? Könnte mal einen Demozugang einrichten, damit Ihr an die Dateien heran kommt.

Wenn es klappt... naja, kann man ja reden, wie man für die Mühe einen Ausgleich schafft (@CaptainCrunch: ich hoffe, ich darf das schreiben?)

Ciao
DtS

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: IDN-Domainüberprüfung (Punnycode)

Post by alexander newald » 2004-10-13 04:04

In Perl würde ich IDNA::Punycode nehmen

svenuser
Posts: 9
Joined: 2004-10-05 19:49

Re: IDN-Domainüberprüfung (Punnycode)

Post by svenuser » 2004-10-13 11:28

@Dts hab Dir mal ne PM geschickt.

@all Da es ja ein sehr spezifisches Problem ist, ist es sinnvoller es persönlich zu klären. Ich kann ja dann hier im Forum evtl. schreiben woran es lag, damit auch alle anderen die ähnliche Probleme haben davon profitieren können :-)

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-13 19:09

Alexander Newald wrote:In Perl würde ich IDNA::Punycode nehmen
Tja, ich brauche es aber für PHP :(

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: IDN-Domainüberprüfung (Punnycode)

Post by dts » 2004-10-13 19:10

@all Da es ja ein sehr spezifisches Problem ist, ist es sinnvoller es persönlich zu klären. Ich kann ja dann hier im Forum evtl. schreiben woran es lag, damit auch alle anderen die ähnliche Probleme haben davon profitieren können :-)
Wäre sicherlich keine schlechte Idee, dass hier abzuhandeln. Werde mir dann gleich mal deine PN zu Gemüte führen... vielleicht schaffen wir das ja irgendwie zusammen *g*

Danke und viele Grüsse
Jürgen (DtS)

xamibor
Posts: 211
Joined: 2003-03-11 16:52

Re: IDN-Domainüberprüfung (Punnycode)

Post by xamibor » 2005-12-29 16:24

In welchem RPM Paket ist das Modul IDNA::Punycode enthalten? wie mus ich was installieren um darauf zurückzugreifen.

Gruß