If schleife funktioniert nicht

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • If schleife funktioniert nicht

    guten abend
    ich bin neu hier und habe bereits eine frage.

    ich bin an einer domainsuche am bauen, soweit gehts, nun habe ich ein problem mit der if schleife.

    Ich habe eine Abfrage aus einer DB. Die funktioniert, wenn ich sie zu oberst hin platziere. Platziere ich sie aber an die stelle wo jetzt "hier sllte xxxx stehen", so funktioniert der ganze script nicht mehr. kann mir ev. jemand sagen warum.

    Ansicht des ergebnis http://test.sonne.goip.de/index.php

    Preisabfrage:
    PHP-Code:
    $SQL0 "SELECT * FROM dsp where (dscode like '$tld')";
    $SQL0R odbc_exec($conn$SQL0);
    while(
    $SQL0Z odbc_fetch_array($SQL0R)) 
    {
    echo 
    $SQL0Z["dendung"];
    echo 
    $SQL0Z["dpreis"];

    funktionierender script
    PHP-Code:
    <html><body><table border="0"><tr><td width="140">Domain</td><td width="70">Status</td><td>Info</td></tr>
    <?php
    include_once("servers.php");
    $domain $_POST['domain'];
    $tld $_POST['tld'];
    $_DSN ="dbserver";
    $_User "dbuser";
    $_PW "dbpass";
    $conn odbc_connect($_DSN$_User$_PW) or die("Verbindung fehlgeschlagen");
    $SQL0 "SELECT * FROM dsp where (dscode like '$tld')";
    $SQL0R odbc_exec($conn$SQL0);
    while(
    $SQL0Z odbc_fetch_array($SQL0R)) 
    {
    echo 
    $SQL0Z["dendung"];
    echo 
    $SQL0Z["dpreis"];
    }
    if(!
    headers_sent())
        
    header("Content-Type: text/html; charset=UTF-8");
    if(!isset(
    $_SESSION))
        
    session_start();
    function 
    check_domain($domain$tld$whoisserver)
    {
        
    $fp = @fsockopen($whoisserver43$errno$errstr5);
        if(!
    $fp)
            return 
    "<strong>Fehler</strong><br />".$errstr." (".$errno.")\n";
        else
        {
            if(
    $tld != "de" && !preg_match("/^[a-zA-Z0-9-]*$/"$domain))
            {
                try
                {
                    require_once(
    "idna2.php");
                    
    $idn Net_IDNA2::getInstance();
                    
    $domain $idn->encode($domain);
                }
                catch(
    Exception $e)
                {
                    return 
    "<strong>Fehler</strong><br />".$e->getMessage()."\n";
                }
            }
            
    $flag "";
            if(
    $tld == "de")
                
    $flag "-T dn ";
            
    fwrite($fp$flag.$domain.".".$tld."\r\n");
            
    $string "";
            while(!
    feof($fp))
                
    $string .= fread($fp128);
            
    fclose($fp);
            return 
    $string;
        }
    }
    if(!
    preg_match("/^[^_\.\/]{1,}$/"$domain))
        echo 
    "<span class=\"error\">\nung&uuml;ltiger Domainname</span>\n";
    else
    {
        function 
    print_domain($domain$tld$whoisservers)
        {
            global 
    $limit_exceeded;
            
    $status_free "not found|no match|nothing found|not have an entry|status: available|is free|status: free|no entries|no such domain";
            
    $status_invalid "status: invalid|invalid pattern|not a valid domain|invalid request|not understand the query|";
            
    $status_invalid .= "error for|invalid domain|invalid characters|idn unsupported|unassignable|currently restricted|not allowed|invalid parameter";
            
    $status_limit "limit exceeded";

            
    $string check_domain($domain$tld$whoisservers[$tld]);
            
    preg_match_all("/Whois Server: (.*?)\n/i"$string$matches);
            if(isset(
    $matches[1][0]) && trim($matches[1][0]) != "")
                
    $string check_domain($domain$tld$matches[1][0]);
            if(
    preg_match("/Fehler/"$string))
            {
                echo 
    "<tr><td width=\"1400\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">Fehler</td>";
                echo 
    "<td><a href=\"popup.php?tld=".$tld."\" onclick=\"window.open('popup.php?tld=".$tld."','Details','width=800,height=600,scrollbars=yes'); return false\">Details</a></td>";
                echo 
    "</tr>\n";
                
    $_SESSION['details'][$tld] = $string;
            }
            else
            {
                if(
    preg_match("/".$status_free."/i"preg_replace("/\s\s+|\t/"" "$string)))
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\"class=\"success\">ist frei!</td><td>\n";
                    if (
    $tld =='at') echo 'hier sollte at22.90 stehen';
                elseif(
    preg_match("/".$status_invalid."/i"$string))
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">ung&uuml;ltig</td></tr>\n";
                elseif(
    preg_match("/".$status_limit."/i"$string))
                {
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">Abfragelimit erreicht *</td></tr>\n";
                    
    $limit_exceeded true;
                }
                else
                {
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">ist belegt</td><td>";
                    echo 
    "<a href=\"popup.php?tld=".$tld."\" onclick=\"window.open('popup.php?tld=".$tld."','Details','width=800,height=600,scrollbars=yes'); return false\">Inhaber ist</a>";
                    echo 
    "</td></tr>\n";
                    
    $_SESSION['details'][$tld] = "<pre>\n".$string."</pre>";
                }
            }
        }
        
    $limit_exceeded false;
        echo 
    "<table class=\"list\">\n";
        if(
    $tld == "all")
        {
            foreach(
    $whoisservers as $tld_ => $value)
                
    print_domain($domain$tld_$whoisservers);
    }
        else
            
    print_domain($domain$tld$whoisservers);
        echo 
    "</table>\n";
        if(
    $limit_exceeded)
            echo 
    "<span>(* Bitte versuchen Sie es in ein paar Minuten erneut)</span>\n";
    }
    ?>
    </table><body><html>

    nicht funktionierender script
    PHP-Code:
    <html><body><table border="0"><tr><td width="140">Domain</td><td width="70">Status</td><td>Info</td></tr>
    <?php
    include_once("servers.php");
    $domain $_POST['domain'];
    $tld $_POST['tld'];
    $_DSN ="dbserver";
    $_User "dbuser";
    $_PW "dbpass";
    $conn odbc_connect($_DSN$_User$_PW) or die("Verbindung fehlgeschlagen");
    if(!
    headers_sent())
        
    header("Content-Type: text/html; charset=UTF-8");
    if(!isset(
    $_SESSION))
        
    session_start();
    function 
    check_domain($domain$tld$whoisserver)
    {
        
    $fp = @fsockopen($whoisserver43$errno$errstr5);
        if(!
    $fp)
            return 
    "<strong>Fehler</strong><br />".$errstr." (".$errno.")\n";
        else
        {
            if(
    $tld != "de" && !preg_match("/^[a-zA-Z0-9-]*$/"$domain))
            {
                try
                {
                    require_once(
    "idna2.php");
                    
    $idn Net_IDNA2::getInstance();
                    
    $domain $idn->encode($domain);
                }
                catch(
    Exception $e)
                {
                    return 
    "<strong>Fehler</strong><br />".$e->getMessage()."\n";
                }
            }
            
    $flag "";
            if(
    $tld == "de")
                
    $flag "-T dn ";
            
    fwrite($fp$flag.$domain.".".$tld."\r\n");
            
    $string "";
            while(!
    feof($fp))
                
    $string .= fread($fp128);
            
    fclose($fp);
            return 
    $string;
        }
    }
    if(!
    preg_match("/^[^_\.\/]{1,}$/"$domain))
        echo 
    "<span class=\"error\">\nung&uuml;ltiger Domainname</span>\n";
    else
    {
        function 
    print_domain($domain$tld$whoisservers)
        {
            global 
    $limit_exceeded;
            
    $status_free "not found|no match|nothing found|not have an entry|status: available|is free|status: free|no entries|no such domain";
            
    $status_invalid "status: invalid|invalid pattern|not a valid domain|invalid request|not understand the query|";
            
    $status_invalid .= "error for|invalid domain|invalid characters|idn unsupported|unassignable|currently restricted|not allowed|invalid parameter";
            
    $status_limit "limit exceeded";
            
    $string check_domain($domain$tld$whoisservers[$tld]);
            
    preg_match_all("/Whois Server: (.*?)\n/i"$string$matches);
            if(isset(
    $matches[1][0]) && trim($matches[1][0]) != "")
                
    $string check_domain($domain$tld$matches[1][0]);
            if(
    preg_match("/Fehler/"$string))
            {
                echo 
    "<tr><td width=\"1400\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">Fehler</td>";
                echo 
    "<td><a href=\"popup.php?tld=".$tld."\" onclick=\"window.open('popup.php?tld=".$tld."','Details','width=800,height=600,scrollbars=yes'); return false\">Details</a></td>";
                echo 
    "</tr>\n";
                
    $_SESSION['details'][$tld] = $string;
            }
            else
            {
                if(
    preg_match("/".$status_free."/i"preg_replace("/\s\s+|\t/"" "$string)))
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\"class=\"success\">ist frei!</td><td>\n";


    //Hier sollte das Ergebnis der Preisabfrage stehen, pro Domainendungszeile

    $SQL0 "SELECT * FROM dsp where (dscode like '$tld')";
    $SQL0R odbc_exec($conn$SQL0);
    while(
    $SQL0Z odbc_fetch_array($SQL0R)) 
    {
    echo 
    $SQL0Z["dpreis"];
    }


                elseif(
    preg_match("/".$status_invalid."/i"$string))
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">ung&uuml;ltig</td></tr>\n";
                elseif(
    preg_match("/".$status_limit."/i"$string))
                {
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">Abfragelimit erreicht *</td></tr>\n";
                    
    $limit_exceeded true;
                }
                else
                {
                    echo 
    "<tr><td width=\"140\">".$domain.".".$tld."</td><td width=\"70\" class=\"error\">ist belegt</td><td>";
                    echo 
    "<a href=\"popup.php?tld=".$tld."\" onclick=\"window.open('popup.php?tld=".$tld."','Details','width=800,height=600,scrollbars=yes'); return false\">Inhaber ist</a>";
                    echo 
    "</td></tr>\n";
                    
    $_SESSION['details'][$tld] = "<pre>\n".$string."</pre>";
                }
            }
        }
        
    $limit_exceeded false;
        echo 
    "<table class=\"list\">\n";
        if(
    $tld == "all")
        {
            foreach(
    $whoisservers as $tld_ => $value)
                
    print_domain($domain$tld_$whoisservers);
    }
        else
            
    print_domain($domain$tld$whoisservers);
        echo 
    "</table>\n";
        if(
    $limit_exceeded)
            echo 
    "<span>(* Bitte versuchen Sie es in ein paar Minuten erneut)</span>\n";
    }
    ?>
    </table><body><html>

  • #2
    Eine schöne Sicherheitslücke. Bitte informiere dich über SQL-Injections.

    Halte dich außerdem an das EVA-Prinzip. Das heißt, dass HTML-Ausgaben vor der Verarbeitung (und dazu zählen auch Datenbankabfragen) nichts verloren haben.

    Der Code ist eine reine Katastrophe. Überhaupt keine Struktur und wilde Funktionsdefinitionen mitten im Ablauf. Dazu auch noch Verwendung von globalen Variablen. Ich würde das ganze Teil kübeln und nochmal neu programmieren. Das ist überhaupt nicht mehr wartbar und eine Qual für jeden, der sich damit beschäftigt.

    Kommentar


    • #3
      Der Grund, warum das Script „nicht mehr funktioniert“ dürften wohl in erster Linie die Syntaxfehler sein, die du reinbaust indem du einfach Code-Stücke „irgendwohin“ kopierst.
      Wenn du Scripte anpassen willst, solltest du wenigstens die Grundlagen der Syntax beherrschen – sonst wird das nichts.


      Außerdem: Crossposting ist unerwünscht

      https://www.lima-city.de/thread/if-s...tioniert-nicht

      *close* & *trash*
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X