tag:forum.selfhtml.org,2005:/selfProblem mit $_SESSION – SELFHTML-Forum2019-05-24T17:07:40Zhttps://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749290#m1749290Bernd2019-05-24T11:09:46Z2019-05-24T11:09:46ZProblem mit $_SESSION<p>Hallo,</p>
<p>was ich nicht verstehe ist folgendes. Ich habe am Anfang meiner Seite folgendes Script</p>
<pre><code class="block language-php"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'abschicken'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'abschicken'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$errors</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$stmt</span> <span class="token operator">=</span> <span class="token variable">$mysqli</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"DELETE FROM permissions WHERE userID=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">bind_param</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"s"</span><span class="token punctuation">,</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'mitarbeiter'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">is_array</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"bereich"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"bereich"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token keyword">foreach</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"bereich"</span><span class="token punctuation">]</span> <span class="token keyword">as</span> <span class="token variable">$v</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token variable">$stmt</span> <span class="token operator">=</span> <span class="token variable">$mysqli</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"INSERT INTO permissions (userID, bereichID) VALUES (?, ?)"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$userID</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'mitarbeiter'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token variable">$bereichID</span> <span class="token operator">=</span> <span class="token variable">$v</span><span class="token punctuation">;</span>
<span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">bind_param</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ss"</span><span class="token punctuation">,</span> <span class="token variable">$userID</span><span class="token punctuation">,</span> <span class="token variable">$bereichID</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'permissions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token function">header</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Location: <span class="token interpolation"><span class="token variable">$extra</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Etwas weiter unten dann folgendes für die Ausgabe</p>
<pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span> <span class="token operator">===</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"<div> Berechtigungen wurden erfolgreich aktualisiert.</div>"</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Wenn ich jetzt den ganzen Krempel abschicke erhalte ich <em>keine</em> Ausgabe dass alles OK war.</p>
<p>Wenn ich allerdings diese Zeile deaktiviere</p>
<pre><code class="block language-php"><span class="token function">header</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Location: <span class="token interpolation"><span class="token variable">$extra</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// in $extra steht meine URL</span>
</code></pre>
<p>erhalte ich eine Ausgabe. Ist eine Session nicht für solche Zwecke da, dass ich später darauf zugreifen kann?</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749291#m1749291Christian Krusehttps://wwwtech.de/about2019-05-24T11:14:09Z2019-05-24T11:14:09ZProblem mit $_SESSION<p>Hallo Bernd,</p>
<blockquote>
<pre><code class="block language-php"> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'permissions'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
</code></pre>
<p>Etwas weiter unten dann folgendes für die Ausgabe</p>
<pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span> <span class="token operator">===</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</code></pre>
</blockquote>
<p>Rechtschreibfehler oder steht da tatsächlich einmal <code>"permissions"</code> und einmal <code>"berechtigungen"</code>?</p>
<blockquote>
<p>Wenn ich jetzt den ganzen Krempel abschicke erhalte ich <em>keine</em> Ausgabe dass alles OK war.</p>
<p>Wenn ich allerdings diese Zeile deaktiviere</p>
<pre><code class="block language-php"><span class="token function">header</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Location: <span class="token interpolation"><span class="token variable">$extra</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// in $extra steht meine URL</span>
</code></pre>
<p>erhalte ich eine Ausgabe. Ist eine Session nicht für solche Zwecke da, dass ich später darauf zugreifen kann?</p>
</blockquote>
<p><code>header()</code> beendet nicht das Script. Du wirst vermutlich deinen Session-Wert setzen und in der gleichen Script-Instanz auch wieder <code>unset()</code>zen. Setz ein <code>exit()</code> hinter deinen <code>header()</code>-Aufruf oder so.</p>
<p>LG,<br>
CK</p>
<div class="signature">-- <br>
<a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a>
</div>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749293#m1749293dedlfix2019-05-24T11:20:09Z2019-05-24T11:20:09ZProblem mit $_SESSION<p>Tach!</p>
<blockquote>
<p>Ist eine Session nicht für solche Zwecke da, dass ich später darauf zugreifen kann?</p>
</blockquote>
<p>Ist die Session auch eröffnet? Ich sehe kein session_start()-Aufruf. Gut, könnte auch per session.auto_start in der Konfiguration aktiviert worden sein, aber das so zu tun ist eher ungewöhnlich, und du auch nicht erwähnt das so zu haben. Jedenfalls speichert PHP den Inhalt von $_SESSION nicht ohne einen Session-Start.</p>
<p>dedlfix.</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749303#m1749303pl2019-05-24T13:10:02Z2019-05-25T17:01:25ZProblem mit $_SESSION<p>Danke Dir!!!</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749294#m1749294Bernd2019-05-24T11:25:00Z2019-05-24T11:25:00ZProblem mit $_SESSION<p>Hallo,</p>
<p>ich habe in jedem Script ganz oben folgendes stehen</p>
<pre><code class="block language-php"><span class="token function">ob_start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">session_start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>jetzt habe ich mal folgendes getestet wie Christian mit es geschrieben hat</p>
<pre><code class="block language-php"><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token function">header</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Location: <span class="token interpolation"><span class="token variable">$extra</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">exit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>bringt allerdings auch nicht. Und ja, ich lösche die Session im gleichen Script wieder, siehe hier</p>
<pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span> <span class="token operator">===</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"<div> Berechtigungen wurden erfolgreich aktualisiert.</div>"</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>alles passiert in einer Datei.</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749296#m1749296dedlfix2019-05-24T12:11:00Z2019-05-24T12:11:00ZProblem mit $_SESSION<p>Tach!</p>
<p>Ich kann mich nur wiederholen, was ich schon oft gesagt habe: Kontrollausgaben.</p>
<p>Wenn es Probleme mit dem Programmfluss gibt, bau Kontrollausgaben ein, um zu sehen, welche Teile abgearbeitet werden und welche nicht.</p>
<p>Das Session-Handling an sich ist jedenfalls sehr einfach und sehr zuverlässig.</p>
<pre><code class="block language-php"><span class="token function">session_start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'test'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"\n"</span><span class="token punctuation">;</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'test'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">time</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'test'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Beim ersten Aufruf wirst du einmal <code>null</code> sehen, vielleicht garniert mit einer Notice-Meldung über das nicht vorhandenen "test" sowie eine Zeitangabe. Wenn nach einem Refreshen diese Zeit nun an erster Stelle zu sehen ist, ist der Session-Mechanismus grundsätzlich lauffähig. Wenn dieser einfache Test geklappt hat, liegt das Problem in deiner Programmlogik, zu der ich nicht viel sagen kann, wenn nur Ausschnitte vorliegen.</p>
<p>Sessions benötigen Cookies.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> Du kannst das nachvollziehen, wenn du dir die Requests in den Entwicklertools anschaust. Da muss beim Erstaufruf ein Set-Cookie in der Serverantwort zu sehen sein und bei Folgeaufrufen muss dieser Cookie im Request mitgesendet werden.</p>
<p>dedlfix.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Oder einen Key an der URL, was man aber nicht macht, weil eine solche URL leicht entwendbar ist und damit die Session übernommen werden kann. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749297#m1749297Bernd2019-05-24T12:14:13Z2019-05-24T12:14:13ZProblem mit $_SESSION<p>Wenn ich das Script das erste mal aufrufe bekomme ich folgende Meldung</p>
<blockquote>
<p>NULL int(1558699978)</p>
</blockquote>
<p>Wenn ich dann auf speichern klicke erhalte ich folgendes</p>
<blockquote>
<p>int(1558699978) int(1558699983)</p>
</blockquote>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749299#m1749299dedlfix2019-05-24T12:26:38Z2019-05-24T12:26:38ZProblem mit $_SESSION<p>Tach!</p>
<blockquote>
<p>Wenn ich das Script das erste mal aufrufe bekomme ich folgende Meldung</p>
<blockquote>
<p>NULL int(1558699978)</p>
</blockquote>
<p>Wenn ich dann auf speichern klicke erhalte ich folgendes</p>
<blockquote>
<p>int(1558699978) int(1558699983)</p>
</blockquote>
</blockquote>
<p>Wunderbar, Sessions funktionieren grundsätzlich. Und das error_reporting unterdrückt Notice-Meldungen, was für die Entwicklungsumgebung nicht gut ist, weil damit eine Menge potentielle Probleme beim Zugriff auf nicht vorhandene Dinge nicht gemeldet werden.</p>
<p>dedlfix.</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749300#m1749300Bernd2019-05-24T12:38:02Z2019-05-24T12:38:02ZProblem mit $_SESSION<p>Ich habe etwas umgebaut</p>
<pre><code class="block language-php">
$_SESSION['berechtigungen'] = 1;
$_SESSION['berechtigungenVorname'] = $_POST["vorname"];
$_SESSION['berechtigungenName'] = $_POST["name"];
header("Location: $extra");
exit();
if (isset($_SESSION['berechtigungen'])) {
if ($_SESSION['berechtigungen'] === 1) { ?>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span><span class="token punctuation">></span></span> Berechtigungen wurden für <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>strong</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenVorname'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string double-quoted-string">" "</span> <span class="token operator">.</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenName'</span><span class="token punctuation">]</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>strong</span><span class="token punctuation">></span></span> erfolgreich aktualisiert.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
<span class="token php language-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenVorname'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token constant">NULL</span><span class="token punctuation">;</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenName'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token constant">NULL</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenVorname'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenName'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</span></code></pre>
<p>Komischerweise funktioniert es jetzt Keine Ahnung was los war.</p>
<p>Was ich jetzt wieder nicht verstehe ist das exit(); Exit heißt doch abbrechen? Warum wird mir dann mein HTML etwas weiter unten dennoch angezeigt? Oder hat ein ein exit nichts mit der Darstellung zu tun?</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749301#m1749301Christian Krusehttps://wwwtech.de/about2019-05-24T12:50:11Z2019-05-24T12:50:11ZProblem mit $_SESSION<p>Hallo Bernd,</p>
<blockquote>
<p>Ich habe etwas umgebaut</p>
<pre><code class="block language-php">
$_SESSION['berechtigungen'] = 1;
$_SESSION['berechtigungenVorname'] = $_POST["vorname"];
$_SESSION['berechtigungenName'] = $_POST["name"];
header("Location: $extra");
exit();
if (isset($_SESSION['berechtigungen'])) {
if ($_SESSION['berechtigungen'] === 1) { ?>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span><span class="token punctuation">></span></span> Berechtigungen wurden für <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>strong</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenVorname'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string double-quoted-string">" "</span> <span class="token operator">.</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenName'</span><span class="token punctuation">]</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>strong</span><span class="token punctuation">></span></span> erfolgreich aktualisiert.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
<span class="token php language-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenVorname'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token constant">NULL</span><span class="token punctuation">;</span>
<span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenName'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token constant">NULL</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenVorname'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'berechtigungenName'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</span></code></pre>
<p>Komischerweise funktioniert es jetzt Keine Ahnung was los war.</p>
</blockquote>
<p>Wenn der Code oben der ist, den du tatsächlich einsetzt, dann glaube ich das nicht.</p>
<blockquote>
<p>Was ich jetzt wieder nicht verstehe ist das exit(); Exit heißt doch abbrechen? Warum wird mir dann mein HTML etwas weiter unten dennoch angezeigt? Oder hat ein ein exit nichts mit der Darstellung zu tun?</p>
</blockquote>
<p>Unter der Annahme, dass du deinen Code oben nur verkürzt gepostet hast und er tatsächlich funktioniert: generell hast du es ja mit zwei Aufrufen zu tun. Ein Aufruf, bei dem du deine Datenbank-Operationen machst und an dessen Ende du deinen Redirect machst. Hier muss das <code>exit()</code> ausgeführt werden, damit die Verarbeitung abbricht und du deine Session nicht im gleichen Durchlauf wieder zurück setzt.</p>
<p>Der zweite Aufruf passiert durch den Redirect. Hier hast du andere Parameter, deshalb geht der Programmablauf an deinen Datenbank-Einträgen vorbei und schickt dir die richtige Ausgabe.</p>
<p>Das kannst du im Netzwerk-Tab der Entwickler-Tools deines Browsers auch nachvollziehen.</p>
<p>Ich würde dir aber raten, die Erfolgsmeldung nicht im gleichen Script zu erzeugen in dem du auch deine Datenbank-Operationen machst. Da passieren zu schnell Fehler.</p>
<p>LG,<br>
CK</p>
<div class="signature">-- <br>
<a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a>
</div>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749302#m1749302dedlfix2019-05-24T12:59:38Z2019-05-24T12:59:38ZProblem mit $_SESSION<p>Tach!</p>
<blockquote>
<p>Was ich jetzt wieder nicht verstehe ist das exit(); Exit heißt doch abbrechen? Warum wird mir dann mein HTML etwas weiter unten dennoch angezeigt?</p>
</blockquote>
<p>Kann ich nicht nachvollziehen, bei mir bricht die Ausgabe an der Stelle ab. Das PHP-Handbuch nennt lediglich "Shutdown functions and object destructors" als Ausnahme.</p>
<p>dedlfix.</p>
https://forum.selfhtml.org/self/2019/may/24/problem-mit-dollar-session/1749325#m1749325Mitleser2019-05-24T17:07:40Z2019-05-25T17:01:25ZProblem mit $_SESSION<blockquote>
<p>Danke Dir!!!</p>
</blockquote>
<p>Gerne!</p>