T
TheBeat
Guest
Hallo weiß einer von euch wie ich eine bestehende PHP-Session aktualisieren kann ? Habe nämlich aktuell das Problem das Änderung in der Datenbank erst nach einem erneutem Login sichtbar werden :/
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Was verstehst Du unter "aktualisieren"? Was ist dein konkretes Ziel?
Mein Ziel ist es das wenn ein User bspw. seinen Namen ändert und er auf die submit Taste drückt , die Seite neu lädt und dann bereits sein neuer Name zu sehen ist
Mal abgesehen davon, dass ein User seinen Namen nicht ändern können sollte, ist der Ansatz falsch. Reloads nerven und sollten unbedingt vermieden werden.
Angenommen, der User updatet sein Profil oder einen Beitrag, pusht man die Änderungen in das DOM, damit diese sofort sichtbar werden und sendet gleichzeitig einen Patch- oder Post-Request per Ajax an die Datenbank. Dafür gibt es entsprechende Frameworks wie Angular oder React.
Also derzeit ist ja noch folgendes Problem das die Änderungen zwar übernommen werden aber erst nach einem erneutem Login auch sichtbar werden. Das nervige ist halt das man ne neue Session starten muss da die bestehende Session alte Informationen besitzt.
Der Name war an der Stelle vielleicht ein schlechtes Beispiel. Besseres Beispiel: auf meiner Seite gibt es einen Bereich in dem jeder User ein Zitat oder ähnliches verschriftlichen kann.
Möchte ein User nun dieses Zitat ändern so tut er das, kann die Änderung aber erst feststellen wenn er eine neue Session startet.
Mein Ziel ist es also die Änderung direkt sichtbar zu machen.
Also. Ich Speicher nichts in der Session zwischen. Ganz einfach: Ich lese auf meiner Website Daten aus der Datenbank aus. Nun kann ein User bestimmt Informationen seines Profils verändern wie bspw. Ein Zitat hinzufügen oder sonstiges. Tut ein User dies so wird das eingetippte Zitat in der Datenbank abgespeichert und kann ausgelesen werdenKeine Ahnung was du da machst, aber das hört sich an als ob du die Datenbankinhalte in der Session zwischenspeicherst. Dazu ist die Session nicht die gedacht.
Das liest sich wie eine allgemein gültige/zutreffende Aussage.Das hört sich stark nach einem logischen Fehler im Script an.
<?php
session_start();
if(!isset($_SESSION['userid'])) {
die('Bitte zuerst <a href="Mac_Version1.php">einloggen</a>');
}
$userid = $_SESSION['userid'];
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root' );
?>
<!DOCTYPE html>
<html>
<head>
<title>Profil</title>
<link rel="stylesheet" href="Formdesign2.css" type="text/css" />
<link href='https://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
</head>
<body>
<?php
$Biografie = (isset($_POST["Biografie"]) && is_string($_POST["Biografie"])) ?
$_POST["Biografie"] : "";
$ok = false;
$fehlerfelder = array();
if (isset($_POST["Submit"])) {
$ok = true;
if (!isset($_POST["Biografie"]) ||
!is_string($_POST["Biografie"]) ||
trim($_POST["Biografie"]) == "" ){
$ok = false;
$fehlerfelder[] = "Biografie";
}
if ($ok) {
?>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root');
$statement = $pdo->prepare("UPDATE adressen SET biografie = '$Biografie' WHERE id = '$userid'");
$statement->execute();
$Biografie = htmlspecialchars($Biografie);
echo "<p color: black>Super! Alle Daten wurden erfolgreich übermittelt.</p>";
?>
<?php
} else {
echo "<p><b>Formular unvolständig</b></p>";
echo "<ul><li>";
echo implode("</li><li>", $fehlerfelder);
echo "</li></ul>";
}
}
if (!$ok) {
?>
<fieldset>
<form method="post">
<label for="bio" style="font-size: 18px; line-height: 1.8em; text-align: center"> Biografie</label>
<textarea class="support" rows="10" cols="50" maxlength="255" placeholder="Schreibe hier rein was immer du möchtest..." name="Biografie" value="<?php
echo htmlspecialchars($Biografie);
?>"></textarea><br />
<input class="button" type="submit" name="Submit" value="Senden" style="margin-left: 3%"/>
</form>
</fieldset>
<?php
}
?>
</body>
</html>
<?php
$userbiografie = $_SESSION['userbiografie'];
if($userbiografie=="") {$userbiografie = "Biografie";}
echo $userbiografie;
?>
</div>
<?php
error_reporting(E_ALL); /* Alle Fehler werden angezeigt, hilft beim Debuggen, kannst Du nachher wieder rausnehmen, wenn alles fertig ist */
session_start();
try{
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root'); /* Bei mir hat die Datenbank kein Passwort, lokal nicht so das Problem, online muss sie nat¸rlich eins haben */
} catch(PDOException $e ){
echo "Error: ".$e;
}
if (isset($_POST["form_email"]) && isset($_POST["form_passwort"]) && $_POST["form_email"] <> '' && $_POST["form_passwort"] <> '') { /* Komischerweise kommt das Formular durch, wnen man nichts eigibt, daher habe ich das hier auch ausgeschlossen */
$sql = "SELECT * FROM `adressen` WHERE `email` = '".$_POST["form_email"]."'";
$stmt = $pdo -> query($sql);
$ergebnis = $stmt -> fetch();
if ($_POST["form_passwort"] == $ergebnis["passwort"]) { /* Diese if-Abfrage funktioniert ja nur, wenn auch in der Form ein Passwort eingegeben wurde, daher habe ich das mit in die erste if-Klammer genommen */
$_SESSION['username'] = $ergebnis["vorname"];
$_SESSION['userid'] = $ergebnis["id"];
$_SESSION['usergeburtstag'] = $ergebnis["geburtstag"];
$_SESSION['usergeburtsmonat'] = $ergebnis["geburtsmonat"];
$_SESSION['usergeburtsjahr'] = $ergebnis["geburtsjahr"];
$_SESSION['userwohnort'] = $ergebnis["wohnort"];
$_SESSION['userjob'] = $ergebnis["job"];
$_SESSION['userbiografie'] = $ergebnis["biografie"];
$_SESSION['userpasswort'] = $ergebnis["passwort"];
header("Location: LoginCorrectPHP.php");
} else {
$message = "<p>E-mail oder Passwort ist falsch!</p>"; /* Lieber die Meldung in einem String speichern, sonst hast Du vor dem HTML-body-Tag schon eine Ausgabe, das gibt Fehlermeldungen */
}
} else {
$message = "<p>Bitte Passwort und Benutzer eingeben!</p>"; /* Meldung, wenn die Felder nicht beide ausgef¸llt wurden */
}
?>
Dieser Teil kommt in meinem Login-Script vor:
Es muss doch einen einfach weg geben eine Session neu zu starten oder die Informationen in der Session zu aktualisieren?
Danke für die Antwort aber muss leider sagen das ich damit nicht viel anfangen kann weil ich mich nicht mit den Dingen die du genannt hast auskenne :/ Bzw. was mit Token usw. gemeint ist.
Aber jetzt mal Hand aufs Herz. Alles was ich mache funktioniert ja