Benutzer per Sql Skript zufügen

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
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Benutzer per Sql Skript zufügen

Beitrag 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.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Benutzer per Sql Skript zufügen

Beitrag 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() )
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Benutzer per Sql Skript zufügen

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“