Ankündigung

Einklappen
Keine Ankündigung bisher.

session id

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • session id

    ich hab ein Problem mit meinem loginscript und zwar ich log mich ein, starte die session. dann bin ich auf meiner geschützten seite, lassen mir die session und die sid ausgebe.
    ->1.Problem: die sid wird nur ausgegeben wenn der cookie noch nicht existiert sonst wird 'array' ausgegeben. wieso?
    2.Prob: wenn ich jetz auf einen link zu einer anderen Seite klicke (oder zur gleichen) werde ich zurück gesetzt zu meinm loginformular.

    ich hab mich jetz den ganzen tag mit dem problem beschäfftigt und habe auf im forum einge beiträge gefunden wo das selbe problem beschrieben war, abeer ich bin nicht draus schlau geworden.
    PHP-Code:
    <?php
    class auth 
    {
      
     private 
    $hashkey;
     
     private 
    $redirect;

     public function 
    __construct($hashkey$redirect
     {
      
    $this->hashkey $hashkey;
      
    $this->redirect $redirect;
      
    $this->sess();
     }

     private function 
    sess() 
     {
     
    //preft ob schon eine session vorhanden ist
      
    if (isset($_SESSION['login_hash'])) {
       
    $this->confirmauth();
      } else {
       
    $this->login();
      }
     }
     private function 
    login()
     {
      
    //POST variablen pr&uuml;fen
      
    if (empty($_POST['nick']) || empty($_POST['pw'])) {
       
    $this->redirected('leer');
      }
      if (!isset(
    $_POST['nick']) || !isset($_POST['pw'])) {
       
    $this->redirected('Notset');
      }
       
    //variablen fuer die Datenbank abfrage maskieren
       
    $nickmysql_escape_string($_POST['nick']);
       
    $pw md5($_POST['pw']);
       
    $pw mysql_escape_string($pw);
       
    //DB Daten includen
       
    include ('connect.php');
       
    //DB Abfrage ob nuer ein user mit dieser pw/nick kombination vorhanden ist
       
    $sql "SELECT * FROM benutzer 
              WHERE nick = '
    $nick' AND
                    pw = '
    $pw'";
       
    $result mysql_query($sql);
       
    $zeilen mysql_num_rows($result);
      
    //zuruecksetzen falls nicht exakt ein Eintrag vorhanden ist
      
    if ($zeilen != 1) {
       
    $this->redirected('DBProb');
      }
      
    //sonst session setzen
      
    else {
       
    $this->storeauth($nick$pw);
      } 
     } 
     
    //setzt session variablen
     
    public function storeauth($nick$pw)
     {
      
    session_start(); 
       
    $_SESSION['loggedin'] = true;
       
    $_SESSION['nick'] = $nick;
       
    $_SESSION['pw'] = $pw;
       
    $hashkey md5($this->hashkey $nick $password);
       
    $_SESSION['login_hash'] = $hashkey;
     }
     
    //ueberprueft einen besteheden login
     
    private function confirmauth() {
      
    $nick $this->get('nick');
      
    $pw $this->get('pw');
      
    $hashkey $this->get('login_hash');
       if (
    md5($this->hashkey $nick $password) != $hashkey) {
        
    $this->logout();
       }
     } 
      private function 
    get($name) {
      if (isset(
    $_SESSION[$name])) {
        return 
    $_SESSION[$name];
      } else {
        return 
    false;
      }
     }
     public function 
    logout() {
      unset(
    $_SESSION['pw']);
      unset(
    $_SESSION['login_hash']);
      unset(
    $_SESSION['nick']);
      
    $_SESSION['loggedin'] = false;
      
    $this->redirected();
     } 
     private function 
    redirected($fehler
     { 
      if (
    $fehler) {
        
    header('Location:' $this->redirect '?fehler=' $fehler); 
      } else {
        
    header('Location:' $this->redirect);
      }
      exit (); 
     }
    }
    ?>
    meine geschütze seite wo ich auth.php(siehe oben)einbinde
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>News </title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    </head>
    <link rel="stylesheet" type="text/css" href="../schule/style.css">
    <body>
    <?php
    //log einbinden
    require_once 'auth.php';
    
    //log instanziieren
    $auth = new auth('secret', 'login2.php');
    echo SID;
    echo '<pre>';
    print_r($_SESSION);
    echo '</pre>';
    ?>
    <table border="0" cellspacing="0" cellpadding="0">
    	<tr>
    		<td background="../schule/spacer.png" width="100"></td>
    		<td height="30" background="../schule/news_tst.png" width="200"><div align="center"><?php echo 'News'?></div></td>
    		<td height="30" background="../schule/oben_pers_daten.png" width="200"><div align="center">Pers. Daten</div></td>
    		<td background="../schule/spacer.png" width="100">Logout</td>
    	</tr>
    	<tr>
    		<td colspan="4" width="400"></td>
    	</tr>
    </table>
    </body>
    </html>

  • #2
    der nickname das script kommt mir doch bekannt vor.

    du hast zwar etwas verändert, aber das script ist einfach zu schlecht geschrieben um einzelne sachen zu verändern oder dir dazu tipps zu geben.
    also mach uns und dir bitte den gefallen und schreib dein login-script komplett neu und lies dir dazu ein paar tutorials durch.
    klick bitte hier
    gleich der erste link (quakenet:#php Tutorial) scheint auf den ersten blick ganz brauchbar.

    Kommentar


    • #3
      is das script wirklich so scheiße??
      naja ichhabs jetz zum glück zum laufen gebracht.
      danke für den Link er hat mir sehr geholfen
      mfg 250

      Kommentar

      Lädt...
      X