| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

17-02-2010, 22:17
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
Session problem
Hallo,
ich habe folgendes Problem:
über ein login formular kann man sich einloggen und natürlich auch wieder ausloggen, nur möchte ich verhindern das man beim zurück buttons des browsers wieder im loginbereich ist.
ich verwende sessions mit datenbankanbindung,wo eine id nach login gesetzt wird und automatisch wieder gelöscht wird wenn man sich ausgeloggt hat.
session_destroy() hilft auch nicht.
wer kann mir dabei helfen?
|

17-02-2010, 22:26
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von speedy3112
über ein login formular kann man sich einloggen und natürlich auch wieder ausloggen, nur möchte ich verhindern das man beim zurück buttons des browsers wieder im loginbereich ist.
|
Dann unterbinde, dass die betreffenden Ressourcen vom Client gecached werden.
(Informiere dich bitte, bevor du gleich reflexartig „und wie mach' ich das?“ fragst ...)
Zitat:
|
session_destroy() hilft auch nicht.
|
Natürlich nicht, es wird ja auch gar nicht aufgerufen, wenn der Client ein Dokument aus seinem Cache holt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

17-02-2010, 22:31
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
is ja ok, ich wollte ja auch keinen fertigen script haben, nur suche ich wirklich schon seit tagen nach ner lösung und finde keine richtige:-(
und "Ressourcen vom Client gecached" soweit reicht mein wissen leider noch nicht aus. was genau ist damit gemeint?
|

17-02-2010, 22:33
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Was ein Browsercache ist, weisst du aber?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

17-02-2010, 22:36
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
ja das weis ich schon,aber mir fällt da nix ein wie ich meinen script damit verändern kann,das es nicht mehr so funktioniert wie oben beschrieben.
ich möchte hier auch nicht als bissl blöd hingestellt werden nur weil ich ne frage habe. ich weis selbst das ich noch nicht soviel wissen besitze wie manch andere-hatte aber gehofft hier paar sachliche antworten zu bekommen. mehr wollte ich nicht
|

17-02-2010, 22:41
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von speedy3112
aber mir fällt da nix ein
|
Nicht mal, ein bisschen im Handbuch nachzuschauen, fällt dir ein?
Dass es gleich zwei Session-Funktionen gibt, die „cache“ im Namen haben, sollte doch wohl Grund genug sein, sich deren Beschreibung mal ein bisschen genauer anzuschauen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

17-02-2010, 22:43
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
ok,laß mal deine guten tips-so schlau war ich schon,jedoch hat nix funktioniert.
ich warte mal auf ne antwort von jemanden der sich nicht hier hinstellt,als wären alle anderen bissl doof.
man bräuchte kein forum,wenn alles im buch steht;-)
|

17-02-2010, 22:48
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
„Nix hat funktioniert“ ist als Problembeschreibung absolut unbrauchbar.
Wenn du Hilfe bekommen willst, musst du schon ein bisschen mehr liefern.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

17-02-2010, 22:54
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
du kannst doch am Anfang jedes Skripts die Session auslesen und im Falle der Login-Seite dann einen Redirect veranlassen, statt das Login-Fomular anzuzeigen, wenn die Session noch aktiv ist.
Ein anderer Ansatz ist es, ein Skript für mehrere Seiten zu verwenden und je nach Session-Status ein bestimmtes PHP-Skript einzubinden. Dann hätte die Login-Seite dieselbe Adresse wie die Seite XY und würde sich nur durch den Session-Status unterscheiden. Der Zurück-Button würde dann also auch nicht auf einen andere, sondern dieselbe Adresse leiten.
Prinzipiell hat wahsaga aber recht, nur formuliert er es immer .... sehr direkt
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

17-02-2010, 22:58
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
das hatte ich doch am anfang gemacht. also ich probier es nochmal.
mit session habe ich ein log-formular. der dmin kommt auf ne extra interne seite und alle anderen auch auf eine extra seite. die prüfung bevor man auf die seiten kommt habe ich auf einer 3. seite gemacht-siehe unten
das problem ist nur das man halt nach dem logout wieder mit dem zurückbutton in den geschützen bereich kommt.
PHP-Code:
<?php if(isset($_POST["bename"])){ $benutzer=$_POST["bename"]; } if(isset($_POST["pwd"])){ $pwd=$_POST["pwd"]; } $admin=false; $nutzer=false; $connectionid = mysql_connect ("localhost", "xxx","xxx" ); if (!mysql_select_db ("xxx", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
} $sql ="SELECT * FROM benutzerdaten WHERE Nickname='" . $benutzer . "' AND pass='" . $pwd . "'"; $result = mysql_query($sql, $connectionid); if(mysql_num_rows($result)>0) { $sessid = session_id(); $zeile=mysql_fetch_array($result); if($zeile["status"] == 1) { $admin= true; $_SESSION["admin"]=true; $_SESSION["user_id"]=$zeile["id"]; $insert_session = "Insert INTO session VALUES(".$zeile["id"].",'".$sessid."')"; $ergebnis = mysql_query($insert_session, $connectionid); } elseif($zeile["status"] == 2) { $nutzer=true; $admin=false; $_SESSION["user_id"]=$zeile["id"]; $insert_session = "Insert INTO session VALUES(".$zeile["id"].",'".$sessid."')"; $ergebnis = mysql_query($insert_session, $connectionid); } else{
echo "Bitte den Aktivierungslink aus Ihrer E-Mail bestätigen!<br> <a href=\"index.php?page=formular\">Zurück</a>"; } } else { echo "Bitte erst Registrieren!<br> <a href=\"index.php?page=formular\">Zurück</a>"; } if($admin){ include("intern.php"); } else if($nutzer){ include("intern1.php"); } ?>
|

17-02-2010, 23:00
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
session_start();
steht natürlich ganz oben-hab es vergessen zu kopieren
|

17-02-2010, 23:02
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Dann hast du vermutlich den Session-Cookie beim Logout nicht gelöscht.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (17-02-2010 um 23:26 Uhr)
|

17-02-2010, 23:03
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
habe drüber gelesen das das nix bringt sobald man auf zurückbutton klickt:-(
|

17-02-2010, 23:30
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zeig mal den Code für den Logout.
|

17-02-2010, 23:37
|
|
speedy3112
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Beiträge: 23
|
|
PHP-Code:
<?php session_start();
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") ." GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); header("Cache-Control: post-check=0, pre-check=0", FALSE);
?>
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="cache-control" content="no-cache">
</head> <script type="text/javascript">
<!--
function open_druck()
{
druckfenster=window.open("","Druckfenster","height=400,width=680,resizable=yes");
text=document.getElementById("ausgabe").innerHTML;
druckfenster.document.write(text);
druckfenster.focus(); druckfenster.print();
return false;
}
//-->
</script>
<body bgcolor="#C0C0C0"> <?php if(isset($_SESSION["admin"])) { if($_SESSION["admin"]=="true") { $admin=true; } } echo $admin; if($admin) {
//dann kommen paar formulare
</form><br><br> <form action="index.php" method="post"> <input type="submit" name="raushier" value="Ausloggen"> </form>
</div>
<div id="seite" style="position:relative;width:98%; top:35px;left:1%;visibility:'.$zeige.';">'.$ausgabe.'</div>; } else {
echo "<p style=\"position:relative;left:30%;top:300px;color:red;font-size:34px;\">ZUTRITT VERWEIGERT!!!</p>"; }
echo "</body>";
echo "</html>";
?>
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|