kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: $_SESSION wird nicht gespeichert

    geschrieben von dipoxegames

    Danke für die Antwort,
    Also das vorher keine Ausgabe erfolgen darf, ist mir bekannt und darauf wurde geachtet, habe mittlerweile auch den Fehler gefunden.

    Der Fehler ist tatsächlich in der Funktion, und zwar erzeugt durch die session_name() Funktion:
    function sec_session_start() {
        $session_name = 'testwert!&()"§.';
        $secure = FALSE; // TRUE bei HTTPS
        // Damit wird verhindert, dass Javascript auf die session id zugreifen kann.
        $httponly = TRUE;
        // Zwingt sie Sessions nur Cookies zu benutzen
        if(ini_set('session.use_only_cookies', 1) === FALSE) {
            header('Location: ../error.php?err=Could not initiate a safe session (ini_set)');
            exit();
        }
        // Holt Cookie-Parameter
        $cookieParams = session_get_cookie_params();
        session_set_cookie_params($cookieParams['lifetime'], $cookieParams['path'], $cookieParams['domain'], $secure, $httponly);
        
        session_name($session_name);
        session_start(); // Startet die PHP-Sitzung
        session_regenerate_id(TRUE); // Erneuert die Session, löscht die alte
        //setcookie(session_name(), session_id(), time() + $cookieParams['lifetime'], $cookieParams['path'], $cookieParams['domain'], $secure, $httponly);
    echo "CookierParams: ";
    var_dump($cookieParams);
    }
    Und zwar hat sich im Session Namen ein ungültiges Zeichen versteckt, was aber keine Fehlermeldung wirft. Im normalfall bekomme ich folgende Meldung Cookie names cannot contain any of the following '=,; \t\r\n\013\014', dabei wird der Punkt (.) nicht als ungültiges Zeichen bezeichnet.
    Ohne Punkt im Session Name funktioniert nun alles Super :D

    Danke für eure Hilfe :)
  • in: $_SESSION wird nicht gespeichert

    geschrieben von dipoxegames

    Guten Morgen,

    würde das nicht zu konflikten führen?
    Weil in der funktion sec_session_start() der sec_session.inc.php Datei wird nach Änderung der Session Parameter die session_start() aufgerufen.

    MfG
  • in: $_SESSION wird nicht gespeichert

    geschrieben von dipoxegames

    Guten Tag liebe Lima-City Community,

    und zwar habe ich einen SecureSession script, der es mir ermöglichen soll das mein Mitgliedschafts-System nicht von fremden missbraucht wird. Nur funktioniert irgendwie die Speicherung der $_SESSION nicht:
    Nach einem erfolgreichen Login lese ich die $_SESSION aus und dort sind die Daten vorhanden, sobald die Seite neu geladen wird ist $_SESSION leer, kann mir jemand helfen?

    Hier soweit alle benötigten Dateien:
    index.php
    <?php
        include_once __DIR__.DIRECTORY_SEPARATOR.'api'.DIRECTORY_SEPARATOR.'lang.inc.php';
        include_once __DIR__.DIRECTORY_SEPARATOR.'api'.DIRECTORY_SEPARATOR.'login.inc.php';
        $loggedIn = login_check();
    ?>
    [...]

    login.inc.php
    <?php
    include_once dirname(__FILE__).'/sec_session.inc.php';
    include_once dirname(__FILE__).'/db.inc.php';
    
    function login($user, $pass) {
        global $dbc;
        
        $username = filter_var($user, FILTER_SANITIZE_STRING);
        $password = filter_var($pass, FILTER_SANITIZE_STRING);
        
        // Das benutzen vorbereiteter Statements verhindert SQL-Injektion
        if($stmt = $dbc->prepare("SELECT id, user, pass, salt, access FROM ***** WHERE user = ? LIMIT 1")) {
            $stmt->bind_param('s', $username);
            $stmt->execute();
            $stmt->store_result();
            
            // hole Variablen von result
            $stmt->bind_result($user_id, $db_user, $db_pass, $salt, $access);
            $stmt->fetch();
            
            // hash das Passwort mit dem eindeutigen salt.
            $password = hash('sha512', $password.$salt);
            if($stmt->num_rows == 1) {
    echo "<br/>user founded.";
                // Wenn es den Benutzer gibt, dann wird überprüft ob das Konto blockiert ist durch zu viele Login-Versuche
                if(checkbrute($user_id) == TRUE) {
    echo "<br/>checkbrute failed.";
                    // Konto ist blockiert
                    return FALSE;
                } else {
    echo "<br/>checkbrute ok.";
                    // Überprüfe, ob das Passwort in der Datenbank mit dem vom Benutzer angegebenen übereinstimmt
                    if($db_pass == $password) {
    echo "<br/>pass check ok.";
                        // Passwort ist korrekt!
                        // Hole den user-agent string des Benutzers
                        $user_browser = $_SERVER['HTTP_USER_AGENT'];
                        // XSS-Schutz, denn eventuell wir der Wert gedruckt
                        $user_id = preg_replace('/[^0-9]+/', '', $user_id);
                        $_SESSION['user_id'] = $user_id;
                        $user = preg_replace('/[^a-zA-Z0-9_\-]+/', '', $username);
                        $_SESSION['user'] = $username;
                        $_SESSION['login_string'] = hash('sha512', $password.$user_browser);
                        
    echo "<br/>";
    var_dump($_SESSION);
                        
                        return TRUE;
                    } else {
    echo "<br/>pass check failed.";
                        // Passwort ist nicht korrekt
                        // Der Versuch wird in der Datenbank gespeichert
                        $now = time();
                        $dbc->query("INSERT INTO *****(user_id, time) VALUE ('$user_id', '$now')");
                        
                        return FALSE;
                    }
                }
            } else {
                // Es gibt keinen Benutzer
                
                return FALSE;
            }
        }
    }
    
    [...]
    
    ?>

    sec_session.inc.php
    <?php
    
    function sec_session_start() {
        $session_name = '*****';
        $secure = FALSE; // TRUE bei HTTPS
        // Damit wird verhindert, dass Javascript auf die session id zugreifen kann.
        $httponly = TRUE;
        // Zwingt sie Sessions nur Cookies zu benutzen
        if(ini_set('session.use_only_cookies', 1) === FALSE) {
            header('Location: ../error.php?err=Could not initiate a safe session (ini_set)');
            exit();
        }
        // Holt Cookie-Parameter
        $cookieParams = session_get_cookie_params();
        session_set_cookie_params($cookieParams['lifetime'], $cookieParams['path'], $cookieParams['domain'], $secure, $httponly);
        
        session_name($session_name);
        session_start(); // Startet die PHP-Sitzung
        session_regenerate_id(TRUE); // Erneuert die Session, löscht die alte
    echo "CookierParams: ";
    var_dump($cookieParams);
    }
    function sec_session_destroy() {
        $_SESSION = array();
        
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']);
        
        session_destroy();   
    }
    
    sec_session_start(); // Die sichere Funktion um eine PHP-Sitzung zu starten
    echo "<br/>";
    var_dump($_SESSION);
    
    [...]
    
    ?>


    Kann mir dabei jemand helfen? Finde den Fehler einfach nicht.

    Bei Fragen einfach fragen ;)

    Ich bedanke mich schonmal im Vorraus :)
  • in: htaccess - Rewrite mit mehreren Ebenen

    geschrieben von dipoxegames

    Danke für deine schnelle Antwort

    Also ich binde die Dateien mit relativen Pfaden ein, sprich:
    <link rel="shortcut icon" type="image/x-icon" href="./favicon.ico">
    
    [...]
    
    <link rel="stylesheet" href="./css/main.css">
    [...]
    <link rel="stylesheet" href="./css/bootstrap.theme.css">
    
    [...]
    
    <script src="./js/jquery.pjax.js"></script>
    <script src="./js/navbar.js"></script>
    <script src="./js/navigation.js"></script>

    Sollte ich auf absolute Pfade wechseln?

    MfG
  • in: htaccess - Rewrite mit mehreren Ebenen

    geschrieben von dipoxegames

    Guten Abend liebe Community,

    ich sitze seit mehreren Stunden an einem echt doofen Problem. Und zwar geht es um einen rewrite womit ich von domain.de/page / domain.de/page/otherpage / domain.de/page/0/10 intern auf index.php?arg0={0}&arg1={1}&arg2={2} weiterleite mit einem rewrite. Der Code sieht folgendermaßen aus:
    Options -Indexes +FollowSymLinks -MultiViews
    
    [...]
    
    # Redirect to index.php
    <IfModule mod_rewrite.c>
    	RewriteEngine on
    	RewriteBase /
    	#Options +FollowSymLinks
    	RewriteCond %{REQUEST_FILENAME} !-d
    	RewriteCond %{REQUEST_FILENAME} !-f
    	RewriteCond %{REQUEST_FILENAME} !-l
    	RewriteRule ^([a-z]+)(?:\/([a-z0-9]+))?(?:\/([a-z0-9]+))?$ /index.php?arg0=$1&arg1=$2&arg2=$3 [L,NC]
    </IfModule>
    
    [...]

    Wird nun die Seite via domain.de/page aufgerufen, so werden die CSS / JS / Bild Dateien richtig verlinkt, wenn ich aber die Seite via domain.de/page/otherpage oder domain.de/page/0/10 aufrufe, so werden die Dateien nicht mehr im Wurzelverzeichnis gesucht, sondern in /page/ oder /page/0/ und somit werden die CSS / JS / Bild Dateien nicht mehr gefunden :/

    Hat da wer eine Lösung für dieses Problem?
    Bin für jede Hilfe dankbar :)

    MfG Kevin

Login zum Webhosting ohne Werbung!