Avatar billede nbj1 Praktikant
22. marts 2010 - 08:23 Der er 14 kommentarer og
1 løsning

funktionen split()

noget der ved hvordan man håndtere funktionen split() i php 5
Deprecated: Function split() is deprecated
    $list = split( '\.', $ip );
Avatar billede erikjacobsen Ekspert
22. marts 2010 - 09:19 #1
Du skal nok bare bruge http://php.net/preg_split
Avatar billede erikjacobsen Ekspert
22. marts 2010 - 09:21 #2
Og så kan jeg se, at du slet ikke har bruge for at det er et regulært udtryk du splitter på, så det er bedre blot at bruge: http://php.net/explode
Avatar billede nbj1 Praktikant
22. marts 2010 - 09:22 #3
nej har jeg prøvet er ikke for numerisk så widt jeg kunne læse på php.net
men har snyt lidt ved at sætte @ foran $list så det pt
Avatar billede nbj1 Praktikant
22. marts 2010 - 09:26 #4
net explode virkede ja men så var der tons andet kode der lavede knuder
Avatar billede erikjacobsen Ekspert
22. marts 2010 - 09:34 #5
Der er ingen problemer med explode, og ingen grund til at sætte @ foran noget - hvad er det, der går galt? Funktionen "split" forsvinder helt på et tidspunkt ...
Avatar billede nbj1 Praktikant
22. marts 2010 - 09:40 #6
if ( $ip < $this->min || $ip > $this->max || $this->topidx[ $aclass ] < 0 )
og
$bottom = abs( $this->topidx[ $aclass ] ) - 1;
begge for Notice: Undefined index:xx.xx.xx.xx
Avatar billede showsource Seniormester
22. marts 2010 - 10:29 #7
Det er vel $aclass der fejler ?
Men mere kode ville være godt.

Hvilke fejlmeddelser som vises, kan du selv bestemme enten i din php.ini eller ved at bruge ini_set()
Avatar billede nbj1 Praktikant
22. marts 2010 - 10:50 #8
den skal jeg lige have uddybet ini_set(); hvis jeg place den i koden, hvad mere skal der stå ?
Avatar billede nbj1 Praktikant
22. marts 2010 - 10:54 #9
function lookup( $ip )
        {
            if ( $this->has_init != 1 )
            {
                return IP2C_CALL_INIT_FIRST;
            }
            if ( $this->fp )
            {
                @$list = split( '\.', $ip );
                //$list = explode( '\.', $ip );
                $aclass = $list[ 0 ];
                $orgip = $ip;
                $ip = sprintf( '%u', ip2long( $ip ) );

                if ( $ip < $this->min || $ip > $this->max || $this->topidx[ $aclass ] < 0 )
                {
                    return IP2C_IP_NOT_FOUND;
                }

                if ( $aclass == $this->maxip )
                {
                    $top = $this->records;
                    $bottom = abs( $this->topidx[ $aclass ] ) - 1;
                }
                else
                {
                    $bottom = abs( $this->topidx[ $aclass ] ) - 1;
                    $i = 1;
                    while ( $this->topidx[ $aclass + $i ] < 0 )
                    {
                        $i++;
                    }
                    $top = $this->topidx[ $aclass + $i ];
                }
                if ( $aclass == $this->minip )
                {
                    $bottom = 0;
                }

                $found = false;
                $oldtop = -1;
                $oldbot = -1;
                $nextrecord = floor( ( $top + $bottom ) / 2 );

                if ( $ip == $this->min )
                {
                    fseek( $fp, 16 );
                    return ip2country::readshort( $this->fp );
                }
                elseif ( $ip == $this->max )
                {
                    fseek( $this->fp ,( ( $this->records * $this->recsize ) - $this->recsize + 16 ) );
                    return ip2country::readshort( $this->fp );
                }

                $cnt = 0;
                while ( !$found )
                {
                    $cnt++;
                    fseek( $this->fp, ( ( $nextrecord * $this->recsize ) + 8 ) );
                    $start = sprintf( '%u', ip2country::readlong( $this->fp ) );
                    if ( $ip < $start )
                    {
                        $top = $nextrecord;
                    }
                    else
                    {
                        $end = sprintf( '%u', ip2country::readlong( $this->fp ) );
                        if ( $ip > $end )
                        {
                            $bottom = $nextrecord;
                        }
                        else
                        {
                            return ip2country::readshort( $this->fp );
                        }

                    }
                    $nextrecord = floor( ( $top + $bottom ) / 2 );
                    if ( $top == $oldtop && $bottom == $oldbot )
                    {
                        return IP2C_IP_NOT_FOUND;
                    }
                    $oldtop = $top;
                    $oldbot = $bottom;
                }
            }
        }

        function idx2country( $index )
        {
            $res = "--";
            if ( $index >= 0 || $index < $this->countries )
            {
                $res = $this->countryname[ $index ];
            }
            return $res;
        }

        function destroy()
        {
            if ( $this->fp )
            {
                fclose( $this->fp );
                $this->has_init = 0;
            }
        }
    }
Avatar billede erikjacobsen Ekspert
22. marts 2010 - 10:59 #10
Du skal ikke

  $list = explode( '\.', $ip );

men bare

  $list = explode( '.', $ip );
Avatar billede showsource Seniormester
22. marts 2010 - 11:02 #11
Fra php.ini

;  - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT

ini_set() bruger du i starten af dit script

<?php
ini_set('error_reporting', E_ALL & ~E_NOTICE | E_STRICT);

// resten af script

?>
Avatar billede showsource Seniormester
22. marts 2010 - 11:03 #12
Skulle lige til at skrive det samme, erik :O)
Avatar billede nbj1 Praktikant
22. marts 2010 - 11:03 #13
ah ja det virker også mange tak.
nu vi er igan har lige en mere men du kan godt få point nu, så opretter jeg en ny eller hvad ?
Avatar billede nbj1 Praktikant
22. marts 2010 - 11:14 #14
if( isset($_POST['submit2']) && !$error_form2) {
   
    echo '<p>'.safe_display($word_312).'</p>';

}elseif( (isset($_POST['submit1']) && !$error_form1) || $error_form2 ){
    ?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="id" value="<?php echo $db_id; ?>">
<input type="hidden" name="username" value="<?php echo $db_name; ?>">
<table cellspacing="5" style="border: 1px #E2E8ED solid;" bgcolor="#FBFCFD" width="550">
    <tr><td colspan='2'><center><?php echo $db_name." ".safe_display($word_444); ?></center></td></tr>
    <tr>
        <td class="tavaline_text_bold"><?php print safe_display($word_314) ?></td>
        <td><input name="lost_parool" type="password"></td>
    </tr>
    <tr>
        <td class="tavaline_text_bold"><?php print safe_display($word_315) ?></td>
        <td><input name="lost_parool2" type="password"></td>
    </tr>
    <tr>
    <td colspan='2'><input class='login_ok' type='submit' name='submit2' value='Save'></td>
    </tr>
    <?php
    if($error_form2) {
  //    echo "<tr><td colspan='4'><center>".$error_message2."</center></td></tr>";
    }
    echo '</table></form>';
 
}else{ <------ her siger den parse error, det fatter jeg ikke det passer med {} hele vejen.
Avatar billede nbj1 Praktikant
21. september 2010 - 06:16 #15
lukket
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
Kurser inden for grundlæggende programmering

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