Zum Inhalt springen

Session


Empfohlene Beiträge

ich habe folgende Session geschrieben:


<?
session_start();
session_save_path('C:/TEMP/');
session_set_cookie_params(3600);
$benutzer_id = session_register('benutzer_id');
?>
[/PHP]

jetzt meine Frage: Wie kann ich die Session zerstören, das die Session nicht mehr gibt? ich möchte das aber nur tun, wenn der USER im Programm sich abmeldet, durch Klick!

wie muss ich das schreiben in einer Schleife z. B.?

noch was anderes:

[PHP]
session_set_cookie_params(3600);

ist diese Zeile sinnvoll, weil ich nach Tagen auf meinem Lokalen Rechner immer noch eingeloggt bin!

oder habe ich da was falsch geschrieben, das es nicht richtig funktioniert, das er das Cookie nach 3600 sec zerstört?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,


<?
session_start();
session_save_path('C:/TEMP/');
session_set_cookie_params(3600);
$benutzer_id = session_register('benutzer_id');
?>

[/PHP]

darin solltest du etwas ändern:

[PHP]
<?
session_save_path('C:/TEMP/');
/* solltest du nur verwenden wenn du einen anderen Pfad als den
der php.ini verwenden willst. Muss ausserdem vor session_start(); */

session_set_cookie_params(3600);
/* Würde ich auch vor dem session_start() machen.*/

session_start();
/* ist total super */

$benutzer_id = session_register('benutzer_id');
/* ist 1. falsche Syntax und 2. komfortabler durch $_SESSION zu lösen.
Ich würde es entweder:
session_register("benutzer_id");
$benutzer_id = 123;
oder so:
$_SESSION["benutzer_id"] = 123;
machen. Bei der ersten Möglichkeit musst du darauf achten:
Aus [1]:
"Diese Funktion registriert eine globale Variable. Wenn Sie eine Session-
Variable innerhalb einer Funktion registrieren wollen, müssen Sie sicherstellen,
dass Sie sie unter Verwendung des global-Schlüsselworts oder des $GLOBALS[]-
Arrays global machen " */
?>

Eine session zerstörst du mit

session_destroy();

falls das nicht funktioniert:

http://www.dclp-faq.de/q/q-sessions-loeschen.html

gruß gurkenpapst

[1]: http://www.php.net/manual/de/function.session-register.php

Link zu diesem Kommentar
Auf anderen Seiten teilen


session_register("benutzer_id");
$benutzer_id = 'benutzer_id'; // benutzer_id ist dann die ID, die übergeben wurde?
[/PHP]

ist die Erklärung von mir so richtig?

ich habe nichts gefunden ob das so OK ist!

ich denke ich habs falsch erklärt?

mit ist die Bedeutung nicht klar!

hoffe du kannst mir das nochmal näher erklären!

Link zu diesem Kommentar
Auf anderen Seiten teilen

und wie erhalte ich dann die Variable? Auslesen des Ergebnisses?

durch:

$benutzer_id = $_Session['benutzer_id'] = benutzer_id;

stimmt das so?

oder wie geht das jetzt genau?

bei mir zeigt er keine Session_id mehr an! bzw. auch kein Ergebnis mehr. ich muss irgendetwas falsch gemacht haben!

meine Session:


<?
session_save_path('C:/TEMP/');
session_set_cookie_params(3600);
session_start();
$_SESSION["benutzer_id"] = 'benutzer_id';
?>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

habs jetzt so gelöst:


<?
1: session_save_path('C:/TEMP/');
2: @session_start();
3: session_register("benutzer_id");
4: $benutzer_id = " ".$HTTP_POST_VARS['benutzer_id']." ";
?>
[/PHP]

zu Zeile 4:

diese Zeile muss ich dann ja nicht überall reinschreiben, oder? nur in die Seite, wo die Logindaten überprüft werden, da wird dann die benutzer_id, in die Session_Variable reingeschrieben.

wie bekomme ich dann das Ergebnis daraus?

oder steht das dann auch in $benutzer_id ohne das anzugeben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, nochmal:

streiche Zeile 3+4

und nutze dafür:


$_SESSION["benutzer_id"] = $_POST["benutzer_id"]; /* wenn du im Formular ein input feld mit
name="benutzer_id" hast und als method post verwendest */

echo $_SESSION["benutzer_id"]; // gibt dann die benutzer_id aus
[/PHP]

die variable $_SESSION["benutzer_id"] kannst du nach einem session_start(); dann auf jeder Seite verwenden.

In deiner vierten Zeile würde ich übrigens wenn überhaupt die Anführungszeichen und die Punkte weglassen, du fügst damit nur vorher und nachher ein leerzeichen an...

gruß gurkenpapst

Link zu diesem Kommentar
Auf anderen Seiten teilen

die Ausgabe mit

echo $_SESSION[benutzer_id]

klappt mal auf der 2. PHP-Seite

aber auf der 3. PHP-Seite dann wieder nicht mehr!

1. PHP-Seite

Eingabe Formular

2. PHP-Seite


<?
session_save_path('C:/TEMP/');
session_start();
$_SESSION["benutzer_id"] = $_POST["benutzer_id"];
?>
[/PHP]

3. PHP-Seite

[PHP]
<?php
session_start();
?>

fehlt da noch was, bei der 3. PHP-Seite? ich habe glaube ich wenn ich es noch genau weis, müsste das reichen, oder?

welche Einstellungen muss ich in der PHP.INI einstellen, das es so funktioniert?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst die varable in jedem Script nach einem initialen

session_start();

aufrufen. In einer MySQL abfrage wäre es Beispielsweise:


// ich nehme an das benutzer_id z. B. so aussieht: karl123
$dbquery = mysql_query("SELECT spaltexy, spaltez FROM tabellexyz WHERE benutzer_id = '" . $_SESSION["benutzer_id"] . "'") or die (mysql_error());
[/PHP]

Ich empfehle dir dringend die php Dokumentation, welche ausserordentlich gut gelungen ist meiner Meinung nach, zu lesen/zu Hilfe zu ziehen. Dir fehlt grundlegendes Wissen über Sessions und deren Variablen.

http://www.php.net/manual/de/index.php unbedingt mit beschäftigen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich bekomme keine Fehlermeldung, das ist ja das komische daran!

irgendwo muss der Fehler drin sein im Programm.


<?
session_start();
?>
<html>
<head>
<title>Termin- und Urlaubsplaner</title>
<meta name="author" content="Benjamin Gaus_2">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body bgcolor="#FFFFFF" link="#0000FF" alink="#0000FF" vlink="#0000FF">
<font size="2" color = "#0040FF">
<p align=center><img src="banner/banner_01.jpg" width="500" height="100" border="0" alt=""></p>
<p align="right">
<?php
// Zugangsdaten zur Datenbank
$conn = mysql_connect("localhost","benjamin","*********");
// Wechsel der Datenbank
mysql_select_db(projekt_bkik);
// Mysql-Befehl zum Ueberpruefen der Zugangsdaten mit den Datenbank-Daten
$sql = "select name from mitarbeiter where ";
$sql .= "id = '".$_SESSION["benutzer_id"]."' ";
$result = mysql_query($sql, $conn);
$anzahl = mysql_num_rows($result);
echo "Benutzer_id: $_SESSION[benutzer_id]<br>";
if($anzahl > 0)
{
echo "if<br>";
while($inhalt = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "while<br>";
echo "<table border=0 align=right width=20%>";
echo "<tr>";
echo "<td><font size=3 color = #0040FF>";
echo "<b>Hallo <?php echo $inhalt[name]; ?></b>";
echo "</font>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td><font size=2 color = #0040FF>eingeloggt am: <?php echo date('d M Y'); ?></font></td>";
echo "</tr>";
echo "<tr>";
echo "<td><font size=2 color = #0040FF>um: <?php echo date('G:i'); ?> Uhr!</font></td>";
echo "</tr>";
echo "</table>";
}
}
?>
</font>
</body>
</html>
[/PHP]

es wird keine Benutzer_id ausgegeben, habe extra eine Ausgabe gemacht, egal wo es steht, wenn ich es dann so ausgeben möchte, wie du mir das gegeben hast, gibt es eine Fehlermeldung:

[PHP]
echo "Benutzer_id: $_SESSION["benutzer_id"]<br>";

Fehlermeldung:

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\FoxServ\www\intern\projekt_hp\top.php on line 24

wenn ich die Anführungszeichen in der []-Klammer weglasse, dann gibt es keinen Fehler!

irgendwie wird die Session nicht richtig gesetzt bzw. weitergegeben!

aber bei der Überprüfung der Login-Daten, da funktioniert die Session einwandfrei, aber in den drauffolgenden Seiten dann nicht mehr!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by DFBL-Benjamin

irgendwie wird die Session nicht richtig gesetzt bzw. weitergegeben!

Nö, aber falsch ausgegeben... ;)

Probiers mal so:

echo "Benutzer_id: ".$_SESSION["benutzer_id"]."<br>";

Genau so in dem unteren echo-Befehlen. Wenn du php-Befehle, wie "if" oder echo im echo hast, werden die nicht funktionieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

genau, Wolle.

@DFBL

1.


echo "Benutzer_id: $_SESSION[benutzer_id]<br>";
^^ ^^ ^^
/*Es kann nicht gehen weil das Array $_SESSION zum ansprechen seiner
Elemente Anführungszeichen erwartet. Schreibst du bei Dir jetzt aber einfach diese
hinein, denkt echo hier wäre die Textausgabe zuende. Von daher musst du
die ausgabe mit . aneinanderketten*/
[/PHP]

2. Du kannst PHP Code nicht mit echo an den parser schicken. Bzw du kannst schon, er wird dann nur nicht ausgeführt/berücksichtigt

Link zu diesem Kommentar
Auf anderen Seiten teilen

falls es immer der gleiche Ort sein soll würde ich diesen Pfad in die php.ini eintragen (session.save_path "<Hier den Pfad>"), damit lassen sich dann solche Fehlerquellen minimieren.

Daran hab ich gar nicht mehr gedacht, da ich es hinterher in meinen Beispielen nicht mehr verwendet hab, sorry...

Die beiden Pfeile in der Mitte sollten verdeutlichen das an dieser Stelle etwas fehlte, und zwar die Anführungszeichen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...