foreach abfrage wiederholen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • foreach abfrage wiederholen

    Quellcode

    1. function urlpruef_ohne_ping($domain)
    2. {
    3. $_REQUEST['domain'] = strtolower($_REQUEST['domain']);
    4. $domainx = explode(".",$_REQUEST['domain']);
    5. $domain_endung = $domainx[1];
    6. if ($domain_endung == "de") $idn = false;
    7. $domainx = $_REQUEST['domain'];
    8. if ($idn) $domainx = umlaut_wandeln($_REQUEST['domain']);
    9. if ($_REQUEST['domain'] != $domainx) {
    10. $ret .= "Für Umlaut-Domains wird keine Garantie auf Richtigkeit gegeben.<br>";
    11. }
    12. if ($idn) $domain = $domainx;
    13. $whoisresult = lookup($domain,$non_idn);
    14. $ausgabe = explode("
    15. ",$whoisresult);
    16. $string = "";
    17. foreach ($ausgabe as $zeile) {
    18. $string .= $zeile . "<br>";
    19. if (match($zeile)) {
    20. $nochfrei==false}
    21. if (match($zeile)=="fehler"){
    22. }
    23. if (match($zeile==false)) {
    24. $nochfrei = true;}
    25. }
    26. //echo $nochfrei;
    27. if ($nochfrei == true) {
    28. return 0;
    29. }
    30. if($nochfrei == false)
    31. {
    32. return 1;
    33. }
    34. }
    Alles anzeigen


    Dieser Code prüft, ob Domains frei oder belegt sind...
    match prüft dabei auf bestimmte Strings in dem Rückgabewert des Whois-server und gibt dann zurück, dass die Domain entweder belegt oder frei ist. Es kann allerdings auch den String Fehler zurück geben, wenn der whois-server nichts zurückgibt und daher auch keiner der Begriffe gefunden wird. Meine Frage ist jetzt, wie kann ich nur diesen einen Wert innerhalb der Schleife nochmal prüfen lassen, solange bis entweder true oder false zurückgegeben wird? Geht das mit einer foreach-Schleife, oder soll ich das in ne for-schleife umschreiben und wie sollte die dann aussehen.
    Übrigens, es ist auch ein parse error drinnen, wenn ihn jemand findet wär ich dankbar, aber der ist nicht so wichig
    mfg
    wassi
  • der parse error war einfach

    aus

    Quellcode

    1. 1. $nochfrei==false}

    mach

    Quellcode

    1. 2. $nochfrei==false;}


    du liest also jede zeile der whois abfrage einzeln ein.. meinst du das ist nützlich?
    falls du es so haben willst, dann bist du mit foreach() und for() gleichfalls gut beraten

    aber wird das ergebnis der whoisabfrage immer in einer zusammenhängenden zeile geliefert?
    ich würde es folgendermaßen realisieren

    Quellcode

    1. $array = array('this domain is for sale', 'this domain is free', 'die texte sind frei erdacht');
    2. $whoisresult = lookup($domain,$non_idn);
    3. if(eregi($array, $whoisresult))
    4. {
    5. $nochfrei = true;
    6. }
  • Ich hab das jetzt so:

    Quellcode

    1. for($a=1;$a<1;$a++){
    2. $whoisresult2 = lookup($domain,$non_idn);
    3. $whoisresult=strtolower($whoisresult2);
    4. $matchfrei=('no match for', 'no entries found', 'not found', 'nothing found', 'not have an entry');
    5. $matchbelegt=('registrant','organization','registrant id','registrant organization');
    6. //wenn domain frei oder belegt, wird die schleife beendet
    7. if(eregi($matchfrei, $whoisresult))
    8. {
    9. $nochfrei = true;
    10. $a=0;
    11. }
    12. elseif(eregi($matchbelegt, $whoisresult))
    13. {
    14. $nochfrei = false;
    15. $a=0;
    16. }
    17. //sicherung
    18. if($a==5000){
    19. $a=0;
    20. $nochfrei=false;
    21. }
    22. }
    23. return $nochfrei;
    Alles anzeigen

    Für die Zeile, in der

    Quellcode

    1. $matchfrei=('no match for', 'no entries found', 'not found', 'nothing found', 'not have an entry');
    steht gibt er einen parse-error aus, aber ich finde einfach keinen...
    Könnt ihr mir vielleicht helfen?
  • Das Script ist original nicht von mir, ich soll nur ein paar Fehler ausbügeln und ein paar zusätzliche Funktionen einbauen. Die foreach-Abfrage sollte das ganze wahrscheinlich beschleunigen...
    die umlaut_wandeln funktion finde ich nicht, ich werd aber weitersuchen....
    wenn sie nicht das ist, werd ich sie wohl neu schreiben müssen. Allerdings hat das Script sich noch nie über nicht definierte Funktionen beklagt, also wird sie wohl irgendwo sein :rolleyes:
    findet irgendwer den parse error?
    ich such und such aber ich seh ihn einfach nicht
  • selbe datei, anderes problem.

    Datei A included datei B aus die ruft die obige Datei © auf.

    ich wollt die ausgabe vom whois server mit echo ausgeben lassen (zum überprüfen).
    es wurde aber nciht ausgegeben, also hab ich geprüft, ob die datei auch included wird (normalerweise wird Datei A aufgerufen)

    A:

    Quellcode

    1. $aufgerufen=0;
    2. $aufgerufend=0;
    3. include("dboeffnen.php");
    4. if($aufgerufen == 1){
    5. echo 'aufgerufen';
    6. }
    7. elseif($aufgerufen==0){
    8. echo 'nicht aufgerufen';
    9. }
    10. if($aufgerufend == 1){
    11. echo 'db aufgerufen';
    12. }
    13. elseif($aufgerufend==0){
    14. echo ' db nicht aufgerufen';
    15. }
    Alles anzeigen


    Datei B:

    Quellcode

    1. include("function.php");
    2. $aufrufend=1;


    Datei C:

    Quellcode

    1. if($whoisresult2 =="" || " " || " "){
    2. echo 'Whoisresult leer!';
    3. }
    4. echo $whoisresult2;
    5. echo '<br><br>';
    6. $whoisresult=strtolower($whoisresult2);
    7. echo $whoisresult;
    8. echo '<br><br><br><br>';
    9. $aufgerufen=1;
    Alles anzeigen


    Hier die Ausgabe:
    aufgerufen db nicht aufgerufen
    aber es sind keine zeilenumbrüche oder die ausgabe vom whois zu sehen...
    Habt ihr eine Erklärung?
  • ok, weiter in der fehlersuche..
    versuch nochmal statt include() den require() befehl.. dann erhältst du sofort eine fehlermeldung, falls die datei nicht includet wird..
    wenn das nicht hilft, mach in die datei C mal ohne jegliche bedingung ein
    die('stop');
    dann solltest du in jedem falle ein stop lesen können, wenn die datei verwendet wird
  • doch, dboeffnen.php ist die Datei B. Sie stellt die Verbindung zur Datenbank her und included Datei C. dab nicht aufgerufen, heißt nur dass die variable $aufgerufend durch dboeffnen.php nicht geändert wurde, was passieren müsste, wenn sie included wird
  • danke, jetzt funktioniert alles bis auf eregi

    Hier der Code:

    Quellcode

    1. for($a=1;$a>0;$a++){
    2. $whoisresult2 = lookup($domain,$non_idn);
    3. $whoisresult=strtolower($whoisresult2);
    4. echo $whoisresult;
    5. echo'<br><br>';
    6. $trefferfrei=array('no match for', 'no entries found', 'not found', 'nothing found', 'not have an entry');
    7. $trefferbelegt=array('registrant:','organization','registrant id','registrant organization');
    8. //wenn domain frei oder belegt, wird die schleife beendet
    9. if(eregi($trefferfrei, $whoisresult))
    10. {
    11. $nochfrei = true;
    12. break;
    13. }
    14. elseif(eregi($trefferbelegt, $whoisresult))
    15. {
    16. $nochfrei = false;
    17. break;
    18. }
    19. //sicherung
    20. if($a==500){
    21. $nochfrei=false;
    22. break;
    23. }
    24. //whois überlisten
    25. if($a==40){
    26. sleep(10);
    27. }
    28. }
    Alles anzeigen


    hier die antwort vom whois server: domain: google.at registrant: gi1201691-nicat admin-c: da1201689-nicat tech-c: no1201690-nicat zone-c: no1201690-nicat nserver: ns1.google.com remarks: 216.239.32.10 nserver: ns2.google.com remarks: 216.239.34.10 nserver: ns3.google.com remarks: 216.239.36.10 nserver: ns4.google.com remarks: 216.239.38.10 changed: 20021104 10:44:07 source: at-dom personname: dns admin organization: google inc. street address: 2400 e. bayshore pkwy postal code: usa-94043 city: mountain view country: usa phone: +16503300100 fax-no: +16506181499 e-mail: dns-admin@google.com nic-hdl: gi1201691-nicat changed: 20021104 10:44:07 source: at-dom personname: dns admin organization: street address: google inc. street address

    trotzdem wird die schleife nciht abgebrochen, eregis funktioniert einfach nicht...
  • mein fehler..
    eregi kann keine array in einem string suchen :(

    folgender code ist ziemlich umständlich, aber eine bessere möglichkeit um zu prüfen, ob mehrere strings (in form eines arrays) in einem anderen string enthalten sind, fällt mir gerade nicht ein

    Quellcode

    1. $count = count($trefferfrei);
    2. for($i=0; $i<$count; $i++)
    3. {
    4. if(eregi($trefferfrei[$i], $whoisresult))
    5. {
    6. $nochfrei = true;
    7. break;
    8. }
    9. }
    10. $count = count($trefferbelegt);
    11. for($i=0; $i<$count; $i++)
    12. {
    13. if(eregi($trefferbelegt[$i], $whoisresult))
    14. {
    15. $nochfrei = false;
    16. break;
    17. }
    18. }
    19. if(!isset($nochfrei))
    20. {
    21. $nochfrei = 'unknown';
    22. }
    Alles anzeigen