# Globale Variable user_id



## ZH1896ZH (29. Apr 2021)

Guten Tag zusammen!

Ich habe ein kleines Problem, welches mich nun schon viel Zeit gekostet hat 

Und zwar möchte ich nachdem sich der User erfolgreich eingeloggt hat, seine user_id im Client speichern. Das Spring-Tool gibt dem Client als Response auf den Login-Aufruf die user_id des angemeldeten user zurück. Nun möchte ich diese speichern und in ein anderes javascript file übertragen, damit dort der user anhand seiner id erkannt wird.

Da ich ein ziemlicher Javascript-Neuling bin, habe ich ein ziemliches durcheinander veranstaltet. Muss sagen Java gefällt mir um einiges besser, viel ordentlicher 

anbei noch ein paar code schnipsel:

[CODE lang="javascript" title="Login-Prozess"] //Login-Prozess
  loginForm.addEventListener("submit", (e) => {
    e.preventDefault();
    let u_email = document.querySelector("#u_email").value;
    let u_password = document.querySelector("#u_password").value;

    // Ajax Prozess --> Rest-Service Aufruf
    $.ajax({
      type: "POST",
      url: "/api/login",
      data: JSON.stringify({
        userEmail: u_email,
        userPassword: u_password,
      }),
      success: showCalendar,
      dataType: "json",
      contentType: "application/json",
    });
  });[/CODE]

[CODE lang="javascript" title="HTML-Seite wird gewechselt bei erfolgreichem Login"]//Wenn Login erfolgreich wird die Kalendersicht angezeigt
function showCalendar(response) {
  active_user = response;
  console.log("modul main.js: " + active_user);

  if (active_user != -1) {
    //-1 --> login failed
    window.location.href = "calendar.html"; //dieses html-file ist mit calendar.js verknüpft
  }
}[/CODE]

[CODE lang="javascript" title="calendar.js --> Import der Variable activeUser in ein anderes JS file"]import { active_user } from "./main.js";
const id = active_user;[/CODE]


----------



## Gelöschtes Mitglied 65838 (29. Apr 2021)

ich ändere in der URL die Endung zu calendar.html -> login umgangen

da musst du dir was anderes einfallen lassen


----------



## ZH1896ZH (29. Apr 2021)

Joreyk hat gesagt.:


> ich ändere in der URL die Endung zu calendar.html -> login umgangen
> 
> da musst du dir was anderes einfallen lassen


alles klar danke. wie gesagt bin ein absoluter anfänger was webtechnologien angeht. ist es in dem fall besser wenn man nur ein index.html file hat und dann durch ajax abrufe die html-seite verändert. anstatt verschiedene html dateien miteinander zu verlinken?


----------



## Gelöschtes Mitglied 65838 (29. Apr 2021)

mit php kannst du schon mal ganze seiten zurück geben

```
<?php function TestBlockHTML($replStr) {
    ob_start(); ?>
    <html>
    <body><h1><?php echo($replStr) ?></h1>
    </html>
<?php
    return ob_get_clean();
} ?>
```
ob das jetzt sinnvoll ist weis ich nich... hab im studium immer mehr javascript gehasst und web aufbau weil ich normales java einfach viel nicer dicer finde xD


mir ist nur das aufgefallen dass du da ne schwachsetelle hast und auch bei der problem lösung das alte problem noch da wäre


----------



## ZH1896ZH (29. Apr 2021)

Joreyk hat gesagt.:


> mit php kannst du schon mal ganze seiten zurück geben
> 
> ```
> <?php function TestBlockHTML($replStr) {
> ...


Habe noch nie mit PHP gearbeitet, gibt es keine andere Möglichkeit?
Ja in Sachen wie organsiert man den Frontend muss ich wohl noch vieles dazu lernen. Ich weiss nicht wie ich genau das alles strukturieren soll. Gibt es evtl. hilfreichen Content der sich nur Webclients bezieht?



So sieht die meine Projektstruktur momentan aus.
Würdest du das package static anderst organisieren?


----------



## Gelöschtes Mitglied 65838 (29. Apr 2021)

du musst ein backend haben ...ohne php ..ohne java oder sonst was was ddu als backend hast kannst du den login ja nicht mal durch ziehen

so wie es jetzt aussieht hast du java als backend udn da musst du halt schauen wie java den Content deiner aktuellen seite durchwechseln kann mit hilfe von javascript -> somit das problem mit der neuen siete weg ist

also nicht auf eine andere HTML seite wechseln sondern das alte div unsichtbar machen und das neue Sichtbar das wäre die einfachste hau drauf methode das könntest du aber komplett mit javascript machen
jedoch könnte man durch seiten manipulation wieder einfach die divs wechseln  (und ab dabin ich bei web dev ausgesteigen)
mit der Bedingung dass der Login von java erfolgreich war

ausserdem bleibst dann auch auf der aktuellen Sseite und hast die Login ID immer parat


----------



## ZH1896ZH (7. Mai 2021)

Joreyk hat gesagt.:


> du musst ein backend haben ...ohne php ..ohne java oder sonst was was ddu als backend hast kannst du den login ja nicht mal durch ziehen
> 
> so wie es jetzt aussieht hast du java als backend udn da musst du halt schauen wie java den Content deiner aktuellen seite durchwechseln kann mit hilfe von javascript -> somit das problem mit der neuen siete weg ist
> 
> ...



hallo joreyk,

ja ich mache jetzt alles mit divs, also je ein html file und js file. gibt sicher schönere varianten, aber hauptsache es läuft.

besten dank für deine hilfe!

der thread kann geschlossen werden..


----------



## mihe7 (8. Mai 2021)

ZH1896ZH hat gesagt.:


> Muss sagen Java gefällt mir um einiges besser, viel ordentlicher


Das ist bei aktuellem JavaScript nicht mehr ganz so schlimm.

Kleines Beispiel:

[code lang=JavaScript title=UserLogin.js]
export default class UserLogin {
    get username() {
        return sessionStorage.getItem("username");
    }

    set username(name) {
        sessionStorage.setItem("username", name);
    }

    render(elem) {
         elem.innerText = this.username;
    }
}
[/code]

[code lang=javascript title=main.js]
import UserLogin from './UserLogin.js';

const login = new UserLogin();
const output = document.getElementById("output");
const newUserName = document.getElementById("newLoginName");
const button = document.getElementById("setLoginName");
button.addEventListener("click", _ => login.username = newUserName.value);

login.render(output);
[/code]

[code lang=HTML]
<div id="output"></div>
<input id="newLoginName" />
<input id="setLoginName" type="button" />
<script src="main.js" type="module"></script>
[/code]
Die HTML-Datei kannst Du mehrfach anlegen; so lange Du den Browser nicht schließt und damit die Sitzung beendest, bleibt der Spaß gespeichert.


----------

