Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: PHP: Session Login System

  1. #1
    König(in)
    Registriert seit
    05.04.2004
    Ort
    Salzgitter
    Beiträge
    1.454
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard PHP: Session Login System

    Heute ist nicht mein Tag, stehe mit den Sessions und PHP heute irgendwie auf Kriegsfuss. Ich habe einen Login realisiert. Die SID wird in einem Cookie gespeichert. Das ganze funktioniert im Firefox und Opera wunderbar, nur im IE wird der Cookie nicht gesetzt und ich kann mich nicht einloggen. Vielleicht hat ja mal jemand Zeit, über mein Skript zu fliegen???
    [php:1:fab3b59bc9]<?php
    if ($_POST['action']=="check_login") {
    check_login();
    }
    if ($_GET['action']=="logout") {
    logout();
    }

    function show_loginbox () {
    echo "<table border=0 cellpadding=3 cellspacing=1 width=800>";
    echo "<tr><td colspan=2 style=font-size:14px;font-weight:bold;>Login</td></tr>";
    echo "<tr><td width=300>";

    if ($_SESSION["login"] == 1) {
    include("config.php");
    include("includes/db.php");
    $result=$db->sql_query("SELECT * FROM user WHERE id LIKE '".$_SESSION["uid"]."';");
    while ($row=$db->sql_fetchrow($result)) {
    $username = $row[username];
    }
    echo "Hallo $username [ <a href=login.php?action=logout>Logout</a> ]";
    } else {
    echo "<form action=login.php method=POST>Benutzername: <input type=text name=username></input></td>";
    echo "<td>Kennwort: <input type=password name=password></input><input type=submit value=Login></input>";
    echo "<input type=hidden name=action value=check_login></input></form>";
    }
    echo "</td></tr>";
    echo "</table>";
    }

    function check_login () {
    session_start();
    include("config.php");
    include("includes/db.php");
    $user_password = md5($_POST['password']);
    $result=$db->sql_query("SELECT * FROM user WHERE username LIKE '".$_POST['username']."';");
    while ($row=$db->sql_fetchrow($result)) {
    $db_password = $row[password];
    $uid = $row[id];
    $db_access = $row[access];
    }
    if ($user_password == $db_password) {
    $cookie_value = $uid;
    if ($db_access == 2) {$_SESSION["admin"] = 1;}
    $_SESSION["uid"] = $uid;
    $_SESSION["login"] = 1;
    header("Location:index.php");
    } else {
    echo "Passwort falsch";
    }
    }

    function logout () {
    session_start();
    session_destroy();
    header("Location:index.php");
    }
    ?>[/php:1:fab3b59bc9]
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Beatz
    my $favorite_homepage = array(
    "Multigaming Playhouse" => "http://www.playhouse-multigaming.de"
    );
    my $homepage = array(http://www.mohaa-wiki.de, http://www.berufe-portal.de, http://www.mywibb.de);

  2. #2
    Kaiserliche Hoheit
    Registriert seit
    15.07.2005
    Ort
    Hagen (NRW)
    Beiträge
    1.515
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    ich seh da keine stelle wo die SID in einen Cookie geschrieben wird...

    da tut sich er IE schwer was das annehmen von automatischen sitzungscookies angeht - das musst ab IE 6 explizit in den cookieeinstellungen erlauben.
    Zoggerforum.de Betreuer * Mod @ ibforen.de * Admin @ daoc-ds.de
    ICQ Nummer kann via PN erfragt werden

  3. #3
    König(in)
    Themenstarter

    Registriert seit
    05.04.2004
    Ort
    Salzgitter
    Beiträge
    1.454
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Soweit ich das verstanden hatte, bin ich davon ausgegangen, dass session_start() einen Cookie anlegt, sofern er nicht vorhanden ist, oder? Rein Interesse halber habe ich die Annahme von Sitzungscookies per Hand aktiviert, leider ohne Erfolg. Natürlich wäre das keine Lösung, wie kann man das Problem denn umgehen? Vielleicht hast Du ja auf die Schnelle eine Lösung parat, ansonsten werde ich mich mal auf die Suche machen, nun habe ich ja schonmal einen Anhaltspunkt, danke!
    Beatz
    my $favorite_homepage = array(
    "Multigaming Playhouse" => "http://www.playhouse-multigaming.de"
    );
    my $homepage = array(http://www.mohaa-wiki.de, http://www.berufe-portal.de, http://www.mywibb.de);

  4. #4
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    dua hast auch nirgents ein session_start() in deinem code, und ja es legt automatisch ein cookie an.

    und das session_start() darf keien ausgabe zuvor haben, auf keine leerzeichen vor dem <?PHP

  5. #5
    König(in)
    Themenstarter

    Registriert seit
    05.04.2004
    Ort
    Salzgitter
    Beiträge
    1.454
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Doch, GreenRover, nach absenden des Loginformulars wird praktisch direkt die Funktion check_login aufgerufen. Die erste Zeile darin enthält session_start()! Wie gesagt, in den anderen Browsern funktioniert es ja!
    Beatz
    my $favorite_homepage = array(
    "Multigaming Playhouse" => "http://www.playhouse-multigaming.de"
    );
    my $homepage = array(http://www.mohaa-wiki.de, http://www.berufe-portal.de, http://www.mywibb.de);

  6. #6
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    kk dann hast du einfach im IE die cookies deaktiviert ???

  7. #7
    König(in)
    Themenstarter

    Registriert seit
    05.04.2004
    Ort
    Salzgitter
    Beiträge
    1.454
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich habe sie extra noch einmal aktiviert. Es war vorher auf automatisch gestellt. Ich habe nun per Hand umgestellt und eingestellt

    Automatische Cookiebehandlung aufheben
    Cookies von Erstanbietern > Annehmen
    Cookies von Drittanbietern > Annehmen
    und
    Sitzungscookies immer zulassen!!!!!
    Beatz
    my $favorite_homepage = array(
    "Multigaming Playhouse" => "http://www.playhouse-multigaming.de"
    );
    my $homepage = array(http://www.mohaa-wiki.de, http://www.berufe-portal.de, http://www.mywibb.de);

  8. #8
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    gehen denn die kekse auf anderen seiten im IE ???

    und hast du schon mal mit gesnifft, ob der Server das cookie sendet??

  9. #9
    König(in)
    Themenstarter

    Registriert seit
    05.04.2004
    Ort
    Salzgitter
    Beiträge
    1.454
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Kurz: Ja und Ja! Naja, einen Sniffer habe ich noch nicht eingesetzt, aber der Server wird sie senden, sonst ginge es in den anderen Browsern ja nicht!
    Beatz
    my $favorite_homepage = array(
    "Multigaming Playhouse" => "http://www.playhouse-multigaming.de"
    );
    my $homepage = array(http://www.mohaa-wiki.de, http://www.berufe-portal.de, http://www.mywibb.de);

  10. #10
    Kaiserliche Hoheit
    Registriert seit
    15.07.2005
    Ort
    Hagen (NRW)
    Beiträge
    1.515
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Rufst du die loginseite direkt auf oder über eine domain wie denic.de.vu?

    Wenn das sitzungscookie durch einen Frame hindurch gesetzt werden soll mag der IE das meist nicht.

    Ich hab mir damals nen eigenes Objekt zum sessionmanagement geschrieben wo ich den cookie selbst setze.

    hab mal ne ältere Version rausgesucht, da ich die neue nur auf dem Server in der Firma habe - hier die "main" Funktion:

    [php:1:1f0ef85366]<?php
    function firma_session() {
    global $irgendeinevariable, $keks, $LILO, $DB;
    $this->prefix = $irgendeinevariable->vars["session_prefix"];
    $this->ipadresse = $_SERVER["REMOTE_ADDR"];

    // Session starten wenn nicht bereits geschehen
    if(!$_SESSION[$this->prefix . "sessionstarted"]) {
    if( isset($_COOKIE[$this->prefix . "session"]) ) {
    session_id($_COOKIE[$this->prefix . "session"]);
    ini_set('session.use_trans_sid', "off");
    $irgendeinevariable->debug_html.="session.use_trans_sid => off
    ";
    } else {
    $this->rewrite = 1;
    }
    session_name($this->prefix . "session");
    session_start();
    $this->ses_r("sessionstarted", true);
    if(! empty( $_SESSION[$this->prefix . "ipadresse"] ) AND $this->sr("ipadresse") <> $_SERVER["REMOTE_ADDR"]) {
    $this->shutdown();
    $url = "";
    $url.= ($irgendeinevariable->input['act']) ? "&act=". $irgendeinevariable->input['act'] : "";
    $url.= ($irgendeinevariable->input['CODE']) ? "&CODE=". $irgendeinevariable->input['CODE'] : "";
    header("location: index.php?". $url);
    exit;
    }
    $this->ses_r("ipadresse", $_SERVER["REMOTE_ADDR"]);
    $irgendeinevariable->debug_html.= session_name() ."::". SID . "
    ";
    $session = explode("=", SID);
    $expire = time() + $irgendeinevariable->vars["cookie_expire"];
    $pfad = $irgendeinevariable->vars["cookie_pfad"];
    $domain = $irgendeinevariable->vars["cookie_domain"];

    // Cookies?
    $where_id = ($this->sr("uid")) ? $this->sr("uid") : $irgendeinevariable->vars["guest_userid"];
    $DB->query("SELECT no_cookie FROM firmas_benutzer WHERE ID = '". $where_id ."'");
    $LILO->benutzer = $DB->fetch_row();

    // Neuen sessioncookie setzen wenn keiner mit der aktuellen SID gesetzt ist
    if(! isset($_COOKIE[$this->prefix . "session"]) OR $_COOKIE[$this->prefix . "session"] <> session_id()) {
    if($LILO->benutzer['no_cookie'] > 0 OR !isset($LILO->benutzer['no_cookie'])) {
    setcookie($this->prefix . "session", '', time()-42000, '/');
    $irgendeinevariable->debug_html.= "Keine Cookies!!
    ";
    $this->rewrite = 1;
    } else {
    $irgendeinevariable->debug_html.= "Cookies:". $LILO->benutzer['no_cookie'] . "
    ";
    setcookie($this->prefix . "session", $session[1], $expire, $pfad, $domain);
    $irgendeinevariable->debug_html.= "setcookie(" .$this->prefix . "session" .",". $session[1] .",". $expire .",". $pfad .",". $domain .");" . "
    ";
    }
    } else {
    // Prüfen, ob der Cookie ein recht hat zu existieren!
    if($LILO->benutzer['no_cookie'] > 0 OR !isset($LILO->benutzer['no_cookie'])) {
    setcookie($this->prefix . "session", '', time()-42000, '/');
    $irgendeinevariable->debug_html.= "Sessioncookie entfernen...
    ";
    $this->rewrite = 1;
    }
    }
    }
    }
    ?>[/php:1:1f0ef85366]

    Zum Ablauf:

    1. Prüfen, ob Session gestartet ist, falls ja, => ENDE - falls nein, weiter zu 2

    2. Prüfen, ob ein Cookie mit der SID gesetzt ist ( if( isset($_COOKIE[$this->prefix . "session"]) ), falls ja, weiter mit 3, sonst wird zuerst ein modul aktiviert welches meine Links so umschreibt, dass überall die SID angehängt wird.

    3. Sofern bekannt, wird die session id auf die aus dem cookie gesetzt, damit die session geladen werden kann ( session_id($_COOKIE[$this->prefix . "session"]); )

    4. mit
    session_name($this->prefix . "session");
    session_start();
    die session starten und laden.
    mit $this->ses_r("sessionstarted", true); sicher ich ab, dass die session nicht doppelt gestartet wird.

    5. ab dem kommentar
    // Neuen sessioncookie setzen wenn keiner mit der aktuellen SID gesetzt ist
    wird es wieder interessant für dich, hier setze ich manuell den cookie, der meine SID enthält.

    Bei mir funktioniert das wunderbar - bei den ersten ein zwei seitenaufrufen nutzt das script einfach meinen mod der meine Links umschreibt wenn der IE den sitzungscookie noch nicht gefressen hat und hängt überall an die Links und in Formulare meine Session ID an.

    Wenn du fragen hast, frag
    Zoggerforum.de Betreuer * Mod @ ibforen.de * Admin @ daoc-ds.de
    ICQ Nummer kann via PN erfragt werden

Ähnliche Themen

  1. Login mit session und mit php und mit Textdateien
    Von minder im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 26
    Letzter Beitrag: 21.03.2008, 20:51
  2. Login-System
    Von linkwelt im Forum HTML & CSS Forum
    Antworten: 9
    Letzter Beitrag: 07.08.2007, 16:20
  3. PHP Login mit Session ID.
    Von koki12 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 29.06.2007, 20:30
  4. Login System
    Von php-newbie im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 10.02.2006, 15:44
  5. login - session problem
    Von cookie im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 29.12.2005, 14:07

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •