Seite 1 von 1

Benutzer per Sql Skript zufügen

Verfasst: 27.03.2023 19:38
von chris1278
Hallo ich habe da ein Problem.

Ich versuche mal gerade kurz zu Beschreiben worum es geht.

Ich habe für einen bekannten seine Webseite und Forum übernommen (also support technisch).

Bei der Webseite handelt es sich um eine Rufzeichen Datenbank (Funkrufzeichen weil ist Funker Page).

Da sein bisheriger Programmierer leider letztes Jahr verstorben ist hab ich mich der Sache angenommen. Ich hab die Webseite Selber schon recht gut bearbeitet bekommen (code bereinigt, php und html getrennt auf mysqli umgestellt etc.) aber bisher nur Flickwerk. Darum haben wir uns entschieden zu versuchen das ganze in das Forum als Extension zu integrieren. Im Großen und ganzen hab ich die Skripte alle hinbekommen.

1. Skript der die daten aus der Webseite filtert (da sind z.B. auch noch user in der user Tabelle der Webseite die keine Rufzeichen mehr haben)
Darum haben wir nach dem Skriptdurchlauf nur eine Tabelle wo die User mit Rufzeichen und die dazugehörigen angaben drin sind.

2. Das Skript welches dann für jeden Nutzer der Rufzeichen Tabelle einen Benutzer anlegt sofern die Email aus der Rufzeichen Tabelle nicht vorhanden ist ansonsten ergänzt der bei vorhandener Email einfach einen Hashwert der das ganze später verknüpft.

Bis hierhin funktioniert das alles.

Das Problem ist nach dem Eintrag in die phpbb_users Tabelle kann auch die Aktivierung-Email verschickt werden (weil die User müssen sich dann im Forum nochmal aktivieren)

Danach sollten die die Passwort vergessen Funktion nutzen um sich ein Passwort zu erstellen. Und genau hier liegt das Problem. Das funktioniert nicht und zwar weil nach der Aktivierung des Benutzer dieser in keiner Gruppe ist. Der müsste eigentlich für die Passwort Vergessen Funktion zu nutzen in die Gruppe Regestrierte Benutzer (oder evtl. min. Kürzlich regestrierte Gruppe) aber der ist in Keiner Gruppe nach aktivierung.

Das Problem ist das Skript mus ausserhalb von phpbb laufen und die Benutzer einztragen. Aber Wie trage ich die So ein das die auch direkt in der Gruppe Regestrierte Benutzer landen nach aktivierung.

Hier mal mein insert Code den ich für sql nutze:

Code: Alles auswählen

INSERT INTO phpbb_users (user_type, group_id, user_permissions, user_perm_from, user_ip, user_regdate, username, username_clean, user_password, user_passchg, user_email, user_birthday, user_lastvisit, user_lastmark, user_lastpost_time, user_lastpage, user_last_confirm_key, user_last_search, user_warnings, user_last_warning, user_login_attempts, user_inactive_reason, user_inactive_time, user_posts, user_lang, user_timezone, user_dateformat, user_style, user_rank, user_colour, user_new_privmsg, user_unread_privmsg, user_last_privmsg, user_message_rules, user_full_folder, user_emailtime, user_topic_show_days, user_topic_sortby_type, user_topic_sortby_dir, user_post_show_days, user_post_sortby_type, user_post_sortby_dir, user_notify, user_notify_pm, user_notify_type, user_allow_pm, user_allow_viewonline, user_allow_viewemail, user_allow_massemail, user_options, user_avatar, user_avatar_type, user_avatar_width, user_avatar_height, user_sig, user_sig_bbcode_uid, user_sig_bbcode_bitfield, user_jabber, user_actkey, reset_token, reset_token_expiration, user_newpasswd, user_form_salt, user_new, user_reminded, user_reminded_time, csstamp) VALUES
( 0, 2, "", 0, "127.0.0.1", 1679936937, "testen1234", "testen1234", "$argon2id$v=19$m=65536,t=4,p=2$R3JxbVlyaFBiaG42ZFZXNQ$i56pTbcpCAK3SG4iR156i0gAULt73yHk8OWQqD8Yqms", 1679936937, "smilie-man@web.de", "", 0, 1679936937, 0, "", "", 0, 0, 0, 0, 0, 0, 0, "en", "", "D j. M Y, H:i", 1, 0, "", 0, 0, 0, 0, -3, 0, 0, "t", "d", 0, "t", "a", 0, 1, 0, 1, 1, 1, 1, 230271, "", "", 0, 0, "", "", "", "", "", "", 0, "", "bgn8p0ykp98oxkyb", 1, 0, 0, "");


Ich danke schonmal für eure Hilfe.

Re: Benutzer per Sql Skript zufügen

Verfasst: 27.03.2023 19:59
von Dr.Death

Code: Alles auswählen

INSERT INTO phpbb_user_group 
(group_id, user_id, group_leader, user_pending)
VALUES
(2, x, 0, 0);
An die Stelle vom "x" muss die user_id stehen, die du allerdings ja erst mal ermitteln musst.....

z.B. mit https://www.php.net/manual/de/mysqli.insert-id.php

Du könntest dir die Funktionsweise aus der Datei includes/functions_user.php anschauen ( function user_add() )

Re: Benutzer per Sql Skript zufügen

Verfasst: 27.03.2023 20:15
von chris1278
Ok da hab ich aber einen ansatz. Da ich das ganze als seite neuladen skript ausführe ist das ganze mit id ermitteln das kleinste problem. Dann mus ich nur nach dem insert befehl die id ermitteln dort eintragen und den nächsten insert befehl ausführen. Ich denke das bekomme ich hin. Danke erstmal dafür.

@edit

Hab den sql befehl zum ermitteln der letzten id schon gefunden:

Code: Alles auswählen

SELECT user_id FROM phpbb_users ORDER BY user_id DESC LIMIT 1; 
oder der geht auch:

Code: Alles auswählen

SELECT MAX(user_id) FROM phpbb_users; 
Wenn ich das in ein Arrra schreibe und dann das aray schreibe hab ich die zahl die ich benötige.

@edit2

So dank deiner hilfe konnte ich das problem lösen.

Code: Alles auswählen

$sql	= 'SELECT MAX(user_id) FROM phpbb_users; ';
$id	= mysqli_fetch_assoc(mysqli_query($dbforum, $sql));
$user_id = $id['MAX(user_id)'] +1;
echo $user_id;
Damit kann ich den Benutzer mit id eintragen und direkt auch die Gruppe eintragen. Werde das demnächst mal so testen aber sollte funktionieren. Heißt erst wird die Letzte zahl ermittelt sprich die größte zahl was di letzte id ist danach wird 1 zu gezählt und fertig.

Auf jeden fall hierfür schon mal danke.