User aus externem Script zu PHPBB3 per user_add()

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
pollmannsc
Mitglied
Beiträge: 1
Registriert: 25.01.2011 20:37

User aus externem Script zu PHPBB3 per user_add()

Beitrag von pollmannsc »

Hallo an alle.
Ich hoffe ich poste hier ins richtige Forum.

Ich bin dabei meine User aus einem anderen Script zu PHPBB3 zu konvertieren.
Hierzu habe ich mir ein Script mit Hilfe der user_add() Funktion gebastelt.

Der Code sieht folgendermaßen aus:

Code: Alles auswählen

<?php
//DB KONFIG
mysql_connect("localhost", "dbuser", "dbpasswort")
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("dbname");


define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include('includes/functions_user.php');


$query = mysql_query("SELECT * FROM membersold ORDER BY USERID DESC");
$line = "0";
while ($array = mysql_fetch_array($query))
{
$line = $line + 1;
$username = $array['username'];
$password = $array['password'];
$email_address = $array['email'];
$group_id = '4';
$group_name = 'REGISTERED';
$timezone = '+2';
$language = 'en';
$user_type = USER_INACTIVE;
$user_actkey = md5(rand(0, 100) . time());
$user_actkey = substr($user_actkey, 0, rand(8, 12));
$user_ip = $array['reg_ipaddress'];
$user_inactive_reason = INACTIVE_REGISTER;
$user_inactive_time = time();

$user_row = array(
    'username'              => $username,
    'user_password'         => phpbb_hash($password),
    'user_email'            => $email_address,
    'group_id'              => (int) $group_id,
    'user_timezone'         => (float) $timezone,
    'user_dst'              => $is_dst,
    'user_lang'             => $language,
    'user_type'             => $user_type,
    'user_actkey'           => $user_actkey,
    'user_ip'               => $user_ip,
    'user_inactive_reason'  => $user_inactive_reason,
    'user_inactive_time'    => $user_inactive_time,
);
 
$user_id = user_add($user_row);

## echo zum prüfen

echo "<pre>";
print_r($user_row);
echo "</pre>";
echo "<br>Zeile:&nbsp;".$line."<br>";
}

?>

Das klappt auch soweit gut. Bis zu einem bestimmten Punkt.
Dann erscheint diese Fehlermeldung:

Code: Alles auswählen

General Error
SQL ERROR [ mysqli ]

Incorrect string value: '\xDF' for column 'username' at row 1 [1366]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
Ich habe jetzt herausgefunden, dass an der Stelle wo das Script den Fehler ausgibt, ein Username vorkommt der ein "ß" am Ende hat.

Ich habe nur leider überhaupt keine Ahnung mehr, wie ich das Problem lösen kann. Darf der Username kein "ß" haben?
Kann ich mir eigentlich schwer vorstellen. Aber woran liegt es dann?

Ich hoffe das jemand evtl. eine Lösung für mich hat, oder sonst einen Tip wo ich ansetzen kann.

Gruß,
Christian
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: User aus externem Script zu PHPBB3 per user_add()

Beitrag von Mahony »

Hallo
Ursache ist die Zeichenkodierung dessen, was du eingelesen hast.
Wenn das nicht zu deiner zum speichern verwendeten Kodierung passt, dann knallt es eben.


P.S. Welchen Zeichensatz verwendet die Tabelle phpbb_users bei dir?
Das bekommst du durch Eingabe des SQL-Befehls

Code: Alles auswählen

SHOW VARIABLES LIKE 'character_set%';
heraus.

Ich würde vorschlagen, die Tabelle phpbb_users per SQL-Befehl auf UTF8 zu konvertieren.

Code: Alles auswählen

ALTER TABLE `phpbb_users` CONVERT  TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Antworten

Zurück zu „Coding & Technik“