https://www.hth-c.com/forum/5011/kein-login-mit-ipv6-adresse/
---------------------------------------------------------------

Das PHPKIT speichert für jeden User die aktuelle Session, also den Aufenhalt - egal ob eingelogt oder nur als Gast.
Darunter halt auch die IP. Und genau da liegt wahrscheinlich das Problem. Den der Speichersatz für die IP beträgt 15 Zeichen. Ausreichend für die alte IPv4. Die IPv6 aber hat (oder kann bis zu?) 39 Zeichen ( siehe hier ).

Deswegen vermute ich, wenn der Zeichensatz in der DB abgeändert wird sollte es keine Probleme mit den Login geben.

Da nicht jeder direkten Zugang zur DB hat hier mal ein schnelles Script dafür:
pkinc/public/DBUpdateIPv6.php
Erstelle o.g. Datei (vorhandene .php-Datei kopieren und die kopierte Datei wie oben umbenennen) und füge folgenden Code ein:


PHP-Quelltext:
##########################################################################################


<?PHP

//----------DBUpdateIPv6----------

If (!Defined('pkFRONTEND') || pkFRONTEND!='public')
    {
    Die('Direct access to this location is not permitted.');
    }


If (Intval(pkGetUservalue('id'))!==1)
    {
    pkEvent('page_not_found');
    return;
    }


If (IsSet($_POST) && !Empty($_POST))
    {
    # SQL Command
    $SQLPublic
        ="
        SELECT
            DATA_TYPE,
            CHARACTER_MAXIMUM_LENGTH
        FROM
            INFORMATION_SCHEMA.COLUMNS
        WHERE
            table_name = '".pkSQLTAB_SESSION."'
            AND
            column_name = 'session_ip'
        ";
    $SQLAdmin
        ="
        SELECT
            DATA_TYPE,
            CHARACTER_MAXIMUM_LENGTH
        FROM
            INFORMATION_SCHEMA.COLUMNS
        WHERE
            table_name = '".pkSQLTAB_ADMINSESSION."'
            AND
            column_name = 'session_ip'
        ";
    # SQL Query
    $SQLPublic=$SQL->Fetch_Row($SQL->Query($SQLPublic));
    $SQLAdmin =$SQL->Fetch_Row($SQL->Query($SQLAdmin));


    # Var
    $Public['Type']         =Trim  ($SQLPublic[0]);
    $Public['CharLength']   =Intval($SQLPublic[1]);
    $Public['Update']       =0;

    $Admin['Type']          =Trim  ($SQLAdmin[0]);
    $Admin['CharLength']    =Intval($SQLAdmin[1]);
    $Admin['Update']        =0;


    # Update to IPv6 
    If (IsSet($_POST['IPv6']))
        {
        # Check
        If ($Public['CharLength']===15)
            {
            $Public['Update']
                =
                $SQL->Query("ALTER TABLE `".pkSQLTAB_SESSION."` CHANGE `session_ip` `session_ip` VARCHAR(39)")
                ? TRUE
                : FALSE
                ;
            }
        If ($Admin['CharLength']===15)
            {
            $Admin['Update']
                =
                $SQL->Query("ALTER TABLE `".pkSQLTAB_ADMINSESSION."` CHANGE `session_ip` `session_ip` VARCHAR(39)")
                ? TRUE
                : FALSE
                ;
            }
        }


    # Update to IPv4 
    If (IsSet($_POST['IPv4']))
        {
        # Check
        If ($Public['CharLength']===39)
            {
            $Public['Update']
                =
                $SQL->Query("ALTER TABLE `".pkSQLTAB_SESSION."` CHANGE `session_ip` `session_ip` VARCHAR(15)")
                ? TRUE
                : FALSE
                ;
            }
        If ($Admin['CharLength']===39)
            {
            $Admin['Update']
                =
                $SQL->Query("ALTER TABLE `".pkSQLTAB_ADMINSESSION."` CHANGE `session_ip` `session_ip` VARCHAR(15)")
                ? TRUE
                : FALSE
                ;
            }
        }
    }
?>
<Table Class="standard" Border="0" CellSpacing="1" CellPadding="4" Width="100%">
    <TR>
        <TD Class="heads">PHPKIT ( 1.6.4. bis 1.6.6.) &#187; Update / Fix &#187; IPv4 auf IPv6</TD>
    </TR>
    <TR>
        <TD Class="standard" align="center">
            <Form Action="?path=<?PHP Echo $path; ?>" Method="Post">
                <Input Type="Submit" Name="IPv6" Value="Auf IPv6 updaten" />
                <Input Type="Submit" Name="IPv4" Value="Auf IPv4 zurück-updaten" />
            </Form>
            <BR />
            <BR />

            <?PHP If (IsSet($_POST) && !Empty($_POST)): ?>
                <Span Style="Font-Weight: Bold;">Update auf <?PHP Echo IsSet($_POST['IPv6']) ? 'IPv6' : 'IPv4'; ?>:</Span>
                <BR />
                <BR />
            <?PHP EndIf; ?>

            <?PHP If (IsSet($Public['Update'])): ?>
                <?PHP If ($Public['Update']===TRUE): ?>
                <Span Style="Color: Green;">Die Tabelle "<?PHP Echo pkSQLTAB_SESSION; ?>" wurde erfolgreich abgeändert.</Span>
                <?PHP ElseIf ($Public['Update']===FALSE): ?>
                <Span Style="Color: Red;">Die Tabelle "<?PHP Echo pkSQLTAB_SESSION; ?>" wurde nicht abgeändert.</Span>
                <BR />
                <?PHP $SQL->error(); ?>
                <?PHP Else: ?>
                <Span Style="">Die Tabelle "<?PHP Echo pkSQLTAB_SESSION; ?>" wurde bereits abgeändert.</Span>
                <?PHP EndIf; ?>
                <BR />
            <?PHP EndIf; ?>

            <?PHP If (IsSet($Admin['Update'])): ?>
                <?PHP If ($Admin['Update']===TRUE): ?>
                <Span Style="Color: Green;">Die Tabelle "<?PHP Echo pkSQLTAB_ADMINSESSION; ?>" wurde erfolgreich abgeändert.</Span>
                <?PHP ElseIf ($Admin['Update']===FALSE): ?>
                <Span Style="Color: Red;">Die Tabelle "<?PHP Echo pkSQLTAB_ADMINSESSION; ?>" wurde nicht abgeändert.</Span>
                <BR />
                <?PHP $SQL->error(); ?>
                <?PHP Else: ?>
                <Span Style="">Die Tabelle "<?PHP Echo pkSQLTAB_ADMINSESSION; ?>" wurde bereits abgeändert.</Span>
                <?PHP EndIf; ?>
            <?PHP EndIf; ?>
        </TD>
    </TR>
</Table>

//----------DBUpdateIPv6----------

##########################################################################################

O.g. Datei wie oben beschrieben in den o.g. Ordner und wie folgt aufrufen:

http://www.DeineSeite.de/include.php?path=DBUpdateIPv6


Es erscheint dann ein kleines Menu zum Updaten der Datenbank.
Genauer gesagt der Tabellen _adminsession und _session, dort jeweils die Spalten session_ip auf die nötige Zeichenlänge 39.
Man kann dies auch rückgängig machen. In diesen Fall die Zeichenlänge 15.
