Avatar billede bronsholt Nybegynder
02. juni 2003 - 12:42 Der er 1 kommentar

Optimering af php-kode / kald/oprettelse af function

Hej,

det her er noget af en smøre!! Jeg vil gerne lave en socket-forbindelse til en router... Alt dette er sådan set på plads, og VIRKER! Jeg kunne bare godt tænke mig at optimere koden, således at man blot ved at kalde en function, kan køre det stykke, hvor der bliver indtastet pwd's.

Som man kan se, er koden opdelt i kald via 2 forms (reset og conf). Da begge "funktioner" skal ind i enable-menuen på routeren for at komme videre, vil jeg gerne oprette en function, som kan gøre det form mig, i stedet for at lave samme kode 2 gange.

Her er koden:
for ($i = 0; $i < count($check); $i++)
{ // Start på gennemløb af de på listen markeret slettet routere.

    $IP    = $dbArrRouter[$check[$i]][0];
    $Port  = $dbArrRouter[$check[$i]][1];
    $Pwd    = $dbArrRouter[$check[$i]][2];

    //Start - 'Reset' = nulstilling af valgte routere
    if( $svar=="reset" )
    {
        $fp = fsockopen ($IP, $Port, $errno, $errstr, 60);
        if (!$fp)
        {// Start - Forbindelses OK false
            echo "telnet forbindelse offline";
        }// Slut - Forbindelses OK false
        else
        {// Start - Forbindelses OK true

            fputs ($fp, "GET / HTTP/1.0\r");
            socket_set_timeout($fp, 1);

            $buffer = fread($fp, 128);
            echo "Læs, om der skal indtastes line-password:<BR>";


            //Check for passwordindtastning (fortsættes, hvis der IKKE promptes for pwd! Derfor ingen 'else'):
            if(strstr($buffer, "Password:")){
                //Indtast password:
                fputs ($fp, $Pwd ."\r\r");
                echo "Line-password indtastet<BR>";
            }
            else
            {
                echo "Line-password ikke påkrævet<BR>";
            }
            //Læs ny linie:
            $buffer = fread($fp, 128);
            //socket_set_timeout($fp, 1);
            echo "Læs, om det nu er Router: (" .$buffer .")<BR>";
           
            if(strstr($buffer, "Router"))
            { //Check for passwordindtastning (fortsættes, hvis der IKKE promptes for pwd! Derfor ingen 'else'):
                if(strstr($buffer, "Router>"))
                { //Skriv enable, hvis ikke i enable-mode
                    fputs ($fp, "enable\r");

                    //Læs ny linie:
                    $buffer = fread($fp, 256);
                    //socket_set_timeout($fp, 2);
                    echo "Læs, om der skal indtastes enable-password: " .$buffer .":<BR>";

                    if(strstr($buffer, "Password:")){
                        //Indtast password:
                        fputs ($fp, $Pwd ."\r\r");
                        echo "Enable-password indtastet<BR>";

                        //Læs ny linie:
                        $buffer = fread($fp, 128);
                    }
                    else
                    {
                        echo "Enable-password ikke påkrævet<BR>";
                    }
                }


                echo "Læs, om det nu er Router#: (" .$buffer .")<BR>";
               
                if(strstr($buffer, "Router#"))
                { //Start: Router-menu
                    echo "Klar til nulstilling ell. conf. af router!:<BR><BR>";
                   
                    fputs ($fp, "write erase\r\r");
                    echo "write erase indtastet og confirmed (2 x enter)<BR>";
                   
                    //Læs indtil der kommer complete (chekces på 'Initialized-sætningen')!
                    while( !(strstr($buffer, "Initialized")) )
                    {
                        $buffer = fread($fp, 128);
                        echo "Buffer: " .$buffer ."<BR>";
                    }

                    //Skyd en enter af, så routeren prompter med router#:
                    fputs ($fp, "\r");
                    echo "Enter efter confirm (write erase) indtastet<BR>";

                    //Læs indtil routeren er klar til indtastning:
                    while( !(strstr($buffer, "Router#")) )
                    {
                        $buffer = fread($fp, 128);
                        echo "Buffer: " .$buffer ."<BR>";
                    }
                   
                    fputs ($fp, "reload\r\r");
                    echo "reload indtastet + confirmed<BR>";
                   
                    $buffer = fread($fp, 256);
                    echo "Buffer: " .$buffer;
                   
                    //Hvis der promptes for, om configurationen skal modificeres, svares default nej!
                    if ( strstr($buffer, "modified") )
                    {
                        fputs ($fp, "n\r\r");
                        echo "n valgt for modified... + confirmed<BR>";
                    }

                   
                    while( !(strstr($buffer, "configuration dialog")) )
                    {
                        $buffer = fread($fp, 128);
                        echo "Buffer: " .$buffer ."<BR>";
                    }

                    fputs ($fp, "n\r\r");
                    echo "n for ...initial conf....<BR>";
                   
                    //Læs indtil router er færdig med reload-funktionen
                    while( !(strstr($buffer, "Router>")) )
                    {
                        $buffer = fread($fp, 128);
                        echo "Buffer: " .$buffer ."<BR>";
                    }
                   
                    echo "Routeren er slettet!";
                   
                } //Slut: Router-menu

            } //Slut: Router enable - true
            else
            { //Start: Router enable - false
                echo "Router er ikke klar til nulstilling eller ny konfiguration!";


            } //Slut: Router enable - false
            fclose ($fp);
        }// Slut - Forbindelses OK true
    }// Slut - 'Reset' = nulstilling af valgte routere
   
    // Start - 'Conf' = indlæs ny konfiguration fra fil af valgte routere
    if( $svar=="conf" )
    {
        echo "Buuuh<BR>";
    }// Slut - 'Conf' = indlæs ny konfiguration fra fil af valgte routere
   
} // Slut på gennemløb af de på listen markeret slettet routere.


Kan I hjælpe med det?? :-X
Avatar billede atheist Nybegynder
06. maj 2004 - 14:55 #1
Det er ganske nemt, det du gør er at du markerer starten af funktionen med 'function min_funktion(){'

og markerer slutningen med }, når du så kalder funktionen gør du det simpelthen ved, i php at skrive min_funktion() så finde den ud af resten. Du kan med funktioner bruge det der hedder parametre, som er en ganske glimrende ting. hvis du starter din funktion med min_funktion(indata){ vil det du putter i mellem ( og ) når du kalder funktionen blive kendt som $indata i funktionen... eks:
function skriv(navn){
echo "Du hedder $navn";
}

hvis du så et sted skriver <? skriv("Madsen"); ?>
giver det følgende resultat:
Du hedder Madsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester