Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular mit Session

Einklappen

Neue Werbung 2019

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

  • krackmoe
    hat ein Thema erstellt Formular mit Session.

    Formular mit Session

    Das ist mein Formular, mit Abfrage ob Pass und Username richtig sind:

    PHP-Code:
    <?php
        session_start
    ();
        include 
    'func.php';
        
        if(isset(
    $_POST['login'])){
            
    $userid=check_user($_POST['username'], $_POST['password']);
            if(
    $userid!=false){
                
    login($userid);
            }
            else{
                echo 
    'Ihre Anmeldedaten waren nicht korrekt!';
            }
        }
        if(!
    logged_in()){
            echo
    '<form action="eingeloggt.php" METHOD="POST">
                <label>Username: </label><input type="text" name="username"><br>
                <label>Password: </label><input type="password" name="password"><br>
                <input type="submit" id="login" name="login" value="login">
            </form>'
    ;
        }
    ?>
    Wenn ich jetzt jedoch auf die eingeloggt.php Seite weitergeleitet werde, merkt er sich das alles ned. Und wenn ich die login.php dann aufrufe bin ich wieder ausgeloggt, ohne das ich mich ausloggen musste.
    Woran scheiterts hier!?

  • David
    antwortet
    Wichtig: Das Skript ist anfällig für sql injections, PHP Programming/SQL Injection - Wikibooks, collection of open-content textbooks

    Dann schlage ich erstmal vor, die Funktion connect() durch
    PHP-Code:
    function db() {
      static 
    $mysql null;
      if (
    is_null($mysql)) {
        
    $mysql mysql_connect('localhost''xxx''xxx') OR die(mysql_error());
        
    mysql_select_db('xxx') OR die(mysql_error());
      }
      return 
    $mysql;

    zu ersetzen und überall dort, wo eine Verbindungsresource benötigt wird, aufzurufen. Zum Beispiel
    PHP-Code:
    function check_user($name$pass) {  
      
    $sql "SELECT
          UserID
        FROM
          users
        WHERE
          UserName='"
    .mysql_real_escape_string($namedb())."'
          AND UserPass='"
    .md5($pass)."'
        LIMIT
          1"
    ;
      
    $result mysql_query($sqldb()) OR die(mysql_error()); 
    Darüber hinaus ist vielleicht noch weiterer Debug-Code sinnvoll.
    PHP-Code:
    <?php
    define
    ('MYDEBUG''yes');

    if (
    defined('MYDEBUG')) {
      
    error_reporting(E_ALL);
      
    ini_set('display_errors'1);
      
    ini_set('html_errors'1);
      
    ini_set('mysql.trace_mode'1);
    }

    Einen Kommentar schreiben:


  • krackmoe
    antwortet
    Das ist die func.php, wo z.b. auch login() drin ist

    PHP-Code:
    <?php
        
    function connect(){
            
    define('MYSQL_HOST''localhost');
            
    define('MYSQL_USER''xxx');
            
    define('MYSQL_PASS''xxx');
            
    define('MYSQL_DATABASE''xxx'); 
            
    mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR
                die(
    "Es konnte keine Verbindung aufgebaut werden\n".mysql_error());
            
    mysql_select_db(MYSQL_DATABASE) OR
                die(
    "Konnte ".MYSQL_DATABASE." nicht benutzen ".mysql_error());
        }
        function 
    check_user($name$pass){
            
    $user "SELECT UserID
                    FROM users
                    WHERE UserName='"
    .$name."' AND UserPass=MD5('".$pass."') 
                    LIMIT 1"
    ;
            
    $result mysql_query($user) OR die(mysql_error());
            
            if(
    mysql_num_rows($result) == 1){
                
    $user mysql_fetch_assoc($result);
                return 
    $user['UserID'];
            }
            else{
                return 
    false;
            }
        }
        function 
    login($userid){
            
    $sql="UPDATE users
            SET UserSession='"
    .session_id()."'
            WHERE UserId="
    .$userid;
            
            
    mysql_query($sql);
        } 
        function 
    logged_in(){
            
    $sql="SELECT UserId
            FROM users
            WHERE UserSession='"
    .session_id()."'
            LIMIT 1"
    ;
            
    $resultmysql_query($sql);
            
            return ( 
    mysql_num_rows($result)==1);
        } 
        function 
    logout(){
            
    $sql="UPDATE users
            SET UserSession=NULL
            WHERE UserSession='"
    .session_id()."'";
            
            
    mysql_query($sql);
        } 
        
        
    connect();
    ?>

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Tja dass können wir dir schlecht sagen wenn wir nicht wissen was login() macht

    Einen Kommentar schreiben:

Lädt...
X